Change history
Every change to this page, newest first. Expand an entry to see what changed.
- 1 Oct 2026 · +6 −6 lines
Show changes
⋯ ## When to request a ticket - Request one ticket per play start: when the viewer taps an episode, or when your app loads the next episode ahead of time. Do not request tickets in bulk and store them, because each one expires within minutes. + Request one ticket per play start: when the viewer taps an episode, or when your app loads the next episode ahead of time. Do not request tickets in bulk and store them, because each one expires 30 minutes after it is issued. Each request covers exactly one episode. There is no batch endpoint. ⋯ | `drm_kek` | The device public key generated by the Player SDK. The matching private key never leaves the device. | - Your Player SDK onboarding pack names the exact SDK calls. Wandura provides the SDK licence and registers your app's bundle ID or package name during onboarding. + The Player SDK guide on partner.wandura.ai → **Developers** → **Player SDK** names the exact SDK calls; it is available after [onboarding](../before-you-start.md#get-onboarded) to members with the **Developer** or **Admin** role. Wandura registers your app IDs and issues the Player SDK licence; your organisation pays for it. Rules for the device values: - Send both or neither. Sending only one returns `400` `invalid_request`. - - Send the real SDK output. Values that look empty, such as the string `"(null)"`, `"null"` or `"undefined"`, or that are shorter than 8 characters, return `400` `invalid_device_info`. The response lists the bad fields in `fields`. This usually means an SDK call returned nothing and your code turned it into a string. + - Send the real SDK output. A value is rejected with `400` `invalid_device_info` when, after trimming spaces, it is shorter than 8 characters or is one of `(null)`, `null`, `nil`, `undefined`, `nan`, `<null>` or `none` (in any letter case). The response lists the bad fields in `fields`. This usually means an SDK call returned nothing and your code turned it into a string. - Sending neither for an encrypted episode returns `409` `sdk_required`. ⋯ ## Plays, prefetch and `intent` - Each successful ticket request is recorded on Wandura's side and counts as a play. If your app loads episodes before the viewer taps them, tell Wandura with the optional `intent` field: + Each successful ticket request is recorded on Wandura's side and counts as a play, unless it is marked as a prefetch. If your app loads episodes before the viewer taps them, tell Wandura with the optional `intent` field: | Value | Meaning | ⋯ | `prefetch` | Your app is loading the episode ahead of a tap. Not counted as a play. | - `intent` never changes the response. A missing or misspelled value is recorded as unknown, not rejected. Prefetch requests still count toward your [rate limit](rate-limits.md). + `intent` never changes the response. A missing or misspelled value is recorded as unknown, not rejected, and the request counts as a play: only `prefetch` is left out of the play count. Prefetch requests still count toward your [rate limit](rate-limits.md). ## `viewer_ref` ⋯ - An empty array means no subtitles are attached yet. It is not an error. - - Subtitle URLs are not tied to the ticket's expiry, so you can keep using them after the ticket expires. + - Subtitle URLs are not tied to the ticket's expiry, so you can keep using them after the ticket expires. When Wandura replaces a subtitle file, it gets a new URL and the old one stops working: if a stored URL fails, take the current one from a fresh ticket. - Native players can take the URL directly. In a web player, do not add the `crossorigin` attribute to the video element to load subtitles as a `<track>`: that changes how the video itself is requested and can stop it from playing. Download the WebVTT file with `fetch` and add the cues with `video.addTextTrack()` instead. ⋯
- 1 Oct 2026 · +1 −1 lines
Show changes
⋯ ### Check `protection` - Read `protection` on every response. Only offer paid episodes when it is `private-encrypted`. If you ever receive a different value, do not sell the episode and contact your Wandura partner contact. + Read `protection` on every response. Only offer paid episodes when it is `private-encrypted`. If you ever receive a different value, do not sell the episode and contact Wandura. ## Expiry ⋯
- 29 Sept 2026 · Page created