Field names
The OpenAPI reference shows the exact request and response shape for each
operation. Unknown request fields are rejected by the strict playback and bulk
schemas, so copy the documented spelling.
Time and progress
event_created_atis a Unix timestamp in milliseconds. It describes the client event and should not be replaced with the retry time.watchedAt,watched_at,changedAt, andupdatedAtare ISO 8601 date-time strings, normally rendered with aZsuffix for UTC.position_secondsandduration_secondsare whole seconds. Keep positions between zero and the duration when a duration is known.- Playback request
progressis a ratio from0to1(0.5means halfway), never a percentage such as50. - Playback read responses expose
progressSeconds,durationSeconds, andprogressPercentfrom0to100(50means halfway).
IDs, kinds, and nulls
Title paths use a routablemovie or show kind. Anime is a category and may
be represented by the optional isAnime/anime classification; it does not
change a title’s path kind. TMDB IDs are numeric. IMDb (tt...), TVDB
(tvdb:...), and MAL (mal:...) identifiers are accepted in the documented
title paths and bulk items.
null means the API knows that a value is absent. An omitted optional write
field means “use the operation’s default” or “leave the current value
unchanged,” depending on the endpoint. Read the operation description before
using null to clear a value; some updates require an explicit nullable field.
Pagination and cursors
Collection endpoints return bounded pages with an opaquenextCursor:
page, pageSize, total, and hasMore instead. Public catalog and community
endpoints currently have bounded responses and do not accept page or cursor.
The sync change feed keeps a non-null checkpoint in nextCursor even when a page has hasMore: false; use that field for the next synchronization round, while a null nextCursor marks completion only for cursor-paginated lists.
The change feed is at least once. Apply a page idempotently, then save its
cursor in the same local transaction. A bulk write’s Idempotency-Key is also
opaque: reuse it only for a retry of the same request body.
Dates and localization
Treat API date-time strings as instants and format them in the user’s locale at the UI boundary. Calendar queries use the documentedYYYY-MM month form; do
not infer a user’s timezone from a browser offset when the endpoint returns an
explicit date-time.