Change history
Every change to this page, newest first. Expand an entry to see what changed.
- 1 Oct 2026 · +1 −1 lines
Show changes
⋯ Cache the catalog on your server and refresh it on a schedule, instead of calling the API on every app launch. A licence that ends or a title that is withdrawn disappears from the next response; remove anything that is no longer listed. - The catalog and creatives endpoints share one rate-limit counter. See [Rate limits](rate-limits.md). + The catalog has its own rate-limit counter, separate from playback and creatives. See [Rate limits](rate-limits.md).
- 1 Oct 2026 · +2 −2 lines
Show changes
⋯ ## Free and paid episodes - Episodes with `episode_no` less than or equal to the film's `free_until_episode` are free; the rest are paid. The value differs per film and can change, so read it from the catalog rather than hard-coding it. + Episodes with `episode_no` less than or equal to the film's `free_until_episode` are free; the rest are paid. The value differs per film and can change, so read it from the catalog rather than hard-coding it. `0` means no free episode; `null` means no number is set for the film, so treat every episode as paid. ## Planned episodes ⋯ | `title`, `synopsis`, `duration_ms`, `poster_uri` | `null` | - Never send a placeholder row to `POST /playback`: it has no episode ID. If a film has more published episodes than `planned_episodes`, all of them are still returned. + Never send a placeholder row to `POST /playback`: it has no episode ID. If a film has more published episodes than `planned_episodes`, all of them are still returned. When `planned_episodes` is `null`, the film has no placeholder rows. ## Readiness: `stream_ready` ⋯
- 29 Sept 2026 · Page created