Browse the docs

API reference

Watch Together

One room, the server’s clock (P5-11).

Paths are relative to /api/v1 on your server.

POST/watch#

Open a room

On a film, an episode or a video the caller may see, or a show or a season to play from its first. The room plays on through source (the play queue’s sources), or without one through the rest of an episode’s show (P7-18). Starting one is Collectoh Plus’s; joining one is anyone’s.

Authorisation
Bearer token or API key · Session cookie
Body
application/json · object
  • 201Success. application/json · WatchSession
  • 400VALIDATION_FAILED: the request did not match the schema; details.issues lists what. VALIDATION_FAILED: it is not a film, an episode or a video application/json · ErrorEnvelope
  • 401UNAUTHENTICATED: no session, or the access token expired. application/json · ErrorEnvelope
  • 403FORBIDDEN: the account lacks library:view, or the library, label, age or schedule scope refuses it. FORBIDDEN: it is in an adult library: nothing there is watched together PERMISSION_TIME_RESTRICTED: outside your viewing hours application/json · ErrorEnvelope
  • 404NOT_FOUND: no such item, one you may not see, or nothing in it to watch application/json · ErrorEnvelope
GET/watch/{id}#

Read a room

Whole to its members. To anyone else who may see its item (an invite’s card): who is there and what it is on, with no chat and no upNext. A room that ended and one on something you may not see are the same 404.

Authorisation
Bearer token or API key · Session cookie
ParameterInTypeDescription
id requiredpathstring
  • 200Success. application/json · WatchSession
  • 401UNAUTHENTICATED: no session, or the access token expired. application/json · ErrorEnvelope
  • 403FORBIDDEN: the account lacks library:view, or the library, label, age or schedule scope refuses it. application/json · ErrorEnvelope
  • 404NOT_FOUND: no such thing, or not one the caller may see. NOT_FOUND: no such room, or one on something you may not see application/json · ErrorEnvelope
PATCH/watch/{id}#

Choose who steers the room

The host’s: everyone, or host alone (P7-18).

Authorisation
Bearer token or API key · Session cookie
Body
application/json · object
ParameterInTypeDescription
id requiredpathstring
  • 200Success. application/json · WatchSession
  • 400VALIDATION_FAILED: the request did not match the schema; details.issues lists what. application/json · ErrorEnvelope
  • 401UNAUTHENTICATED: no session, or the access token expired. application/json · ErrorEnvelope
  • 403FORBIDDEN: the account lacks library:view, or the library, label, age or schedule scope refuses it. FORBIDDEN: you are not the room’s host, or not in it application/json · ErrorEnvelope
  • 404NOT_FOUND: no such thing, or not one the caller may see. application/json · ErrorEnvelope
POST/watch/{id}/chat#

Say something

Kept on the room (the last hundred lines) and sent to its members as watch.chat, which no reconnecting stream is replayed. A line every 300 ms, fifteen in ten seconds.

Authorisation
Bearer token or API key · Session cookie
Body
application/json · object
ParameterInTypeDescription
id requiredpathstring
  • 201Success. application/json · WatchChatMessage
  • 400VALIDATION_FAILED: the request did not match the schema; details.issues lists what. application/json · ErrorEnvelope
  • 401UNAUTHENTICATED: no session, or the access token expired. application/json · ErrorEnvelope
  • 403FORBIDDEN: the account lacks library:view, or the library, label, age or schedule scope refuses it. application/json · ErrorEnvelope
  • 404NOT_FOUND: no such thing, or not one the caller may see. application/json · ErrorEnvelope
  • 429RATE_LIMITED: too many lines, too fast application/json · ErrorEnvelope
POST/watch/{id}/command#

Play, pause, seek or move on for everyone

next and previous move the room along its queue to the next item everyone in it may watch (P7-18). A command naming an item or a move the room has left (itemId, move) changes nothing. In a room the host steers, a member may still say their player reached the end (next within the last half minute of the item’s file).

Authorisation
Bearer token or API key · Session cookie
Body
application/json · object
ParameterInTypeDescription
id requiredpathstring
  • 200Success. application/json · WatchSession
  • 400VALIDATION_FAILED: the request did not match the schema; details.issues lists what. application/json · ErrorEnvelope
  • 401UNAUTHENTICATED: no session, or the access token expired. application/json · ErrorEnvelope
  • 403FORBIDDEN: the account lacks library:view, or the library, label, age or schedule scope refuses it. FORBIDDEN: not in the room, or the host alone steers it application/json · ErrorEnvelope
  • 404NOT_FOUND: no such thing, or not one the caller may see. application/json · ErrorEnvelope
POST/watch/{id}/heartbeat#

Stay in the room

Authorisation
Bearer token or API key · Session cookie
ParameterInTypeDescription
id requiredpathstring
  • 200Success. application/json · WatchSession
  • 401UNAUTHENTICATED: no session, or the access token expired. application/json · ErrorEnvelope
  • 403FORBIDDEN: the account lacks library:view, or the library, label, age or schedule scope refuses it. application/json · ErrorEnvelope
  • 404NOT_FOUND: no such thing, or not one the caller may see. application/json · ErrorEnvelope
POST/watch/{id}/join#

Join a room

Authorisation
Bearer token or API key · Session cookie
ParameterInTypeDescription
id requiredpathstring
  • 200Success. application/json · WatchSession
  • 401UNAUTHENTICATED: no session, or the access token expired. application/json · ErrorEnvelope
  • 403FORBIDDEN: the account lacks library:view, or the library, label, age or schedule scope refuses it. application/json · ErrorEnvelope
  • 404NOT_FOUND: no such thing, or not one the caller may see. application/json · ErrorEnvelope
POST/watch/{id}/leave#

Leave a room

Authorisation
Bearer token or API key · Session cookie
ParameterInTypeDescription
id requiredpathstring
  • 204Done; no body.
  • 401UNAUTHENTICATED: no session, or the access token expired. application/json · ErrorEnvelope
  • 403FORBIDDEN: the account lacks library:view, or the library, label, age or schedule scope refuses it. application/json · ErrorEnvelope
  • 404NOT_FOUND: no such thing, or not one the caller may see. application/json · ErrorEnvelope
POST/watch/{id}/react#

React over everyone’s picture

To the members as watch.reaction, kept nowhere (P7-18). One every 400 ms, ten in ten seconds.

Authorisation
Bearer token or API key · Session cookie
Body
application/json · object
ParameterInTypeDescription
id requiredpathstring
  • 201Success. application/json · object
  • 400VALIDATION_FAILED: the request did not match the schema; details.issues lists what. application/json · ErrorEnvelope
  • 401UNAUTHENTICATED: no session, or the access token expired. application/json · ErrorEnvelope
  • 403FORBIDDEN: the account lacks library:view, or the library, label, age or schedule scope refuses it. application/json · ErrorEnvelope
  • 404NOT_FOUND: no such thing, or not one the caller may see. application/json · ErrorEnvelope
  • 429RATE_LIMITED: too many, too fast application/json · ErrorEnvelope
POST/watch/{id}/ready#

Report buffered and ready

A false while the room plays holds everyone — six times a minute a member at most — at the member’s own positionMs when it is up to three seconds behind the room’s and not before where the room last started; else where the room has got to, never ahead of it. Forty reports in ten seconds at most.

Authorisation
Bearer token or API key · Session cookie
Body
application/json · object
ParameterInTypeDescription
id requiredpathstring
  • 200Success. application/json · WatchSession
  • 400VALIDATION_FAILED: the request did not match the schema; details.issues lists what. application/json · ErrorEnvelope
  • 401UNAUTHENTICATED: no session, or the access token expired. application/json · ErrorEnvelope
  • 403FORBIDDEN: the account lacks library:view, or the library, label, age or schedule scope refuses it. application/json · ErrorEnvelope
  • 404NOT_FOUND: no such thing, or not one the caller may see. application/json · ErrorEnvelope
  • 429RATE_LIMITED: too many reports, too fast application/json · ErrorEnvelope
GET/watch/time#

The server’s clock

Clients sync to this and schedule play against it.

Authorisation
Bearer token or API key · Session cookie
  • 200Success. application/json · object
  • 401UNAUTHENTICATED: no session, or the access token expired. application/json · ErrorEnvelope
  • 403FORBIDDEN: the account lacks library:view, or the library, label, age or schedule scope refuses it. application/json · ErrorEnvelope