API reference
Returns the configuration that applies to the calling key and its organisation: rate limits, playback settings and ticket lifetimes, batch limits, subtitle languages, API versions and deprecations. Read it when your backend starts, or every few hours, instead of hard-coding these values. See Versioning and API evolution.
GET /api/delivery/v1/configScope: any valid API key
Request parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
Authorization |
header | string | Yes | Bearer <API key> for a key with the any scope. |
Wandura-Version |
header | string | No | Optional. A dated API version (YYYY-MM-DD) to use for this request instead of the version pinned to your API key. Unknown or retired values answer 400 with error_code unsupported_version. |
Wandura-Simulate |
header | string | No | Optional, test organisations only. Asks Wandura to answer with a simulated error so you can test how your app handles it, for example rate_limited, service_unavailable or not_entitled:outside_window. The simulated response has the same status, body and headers as the real one, plus a Wandura-Simulated header naming the scenario. It issues no ticket and does not count against your rate limits, except partial_batch, whose first item is a real ticket. Simulated responses have their own limit of 300 per minute per organisation. Keys of production organisations ignore this header completely. An unknown value, or a scenario this endpoint does not support, is ignored and the request runs normally. See the Testing guide for the list of scenarios. |
Request example
curl -s https://www.wandura.ai/api/delivery/v1/config \
-H "Authorization: Bearer $WANDURA_API_KEY"Response
200 OK. New fields may be added at any time: ignore the ones you do not recognise.
| Field | Type | Description |
|---|---|---|
api.status |
string | beta while the API is in beta. |
api.path_version |
string | Major version in the path, v1. |
api.version |
string | Dated version this response was produced in. |
api.pinned_version |
string | Dated version pinned to the calling key. |
api.latest_version |
string | Newest dated version. |
api.version_header |
string | Name of the version header, Wandura-Version. |
api.supported_versions |
array | Dated versions you can use today. |
key.scopes |
array of strings | Scopes of the calling key. |
key.test_organisation |
boolean | true when the calling key belongs to a test organisation (its traffic is not counted as views or usage, and it may send Wandura-Simulate). |
rate_limits.window_seconds |
integer | Length of the counting window in seconds. |
rate_limits.doors |
object | Per endpoint group: catalog, playback, creatives, videos, config. |
playback.domains |
array of strings | Domains your playback URLs use. |
playback.protection |
array of strings | Protection levels your organisation can receive. |
playback.grant_ttl_seconds |
integer | Lifetime of a play token, in seconds. |
playback.manifest_url_ttl_seconds |
integer | Lifetime of a signed manifest URL, in seconds. |
playback.batch.max_episodes |
integer | Most episodes one playback call may request. |
playback.batch.max_next |
integer | Largest next value in one playback call. |
subtitles.format |
string | webvtt. |
subtitles.languages |
array of strings | Subtitle languages present on films you are licensed to (updated within 5 minutes). |
deprecations |
array | Every announced deprecation. Empty when there is none. |
links |
object | Absolute URLs: self, every endpoint, docs, evolution and changes (the machine-readable changelog). |
Response example
{
"api": {
"status": "beta",
"path_version": "v1",
"version": "2026-10-02",
"pinned_version": "2026-10-02",
"latest_version": "2026-10-02",
"version_header": "Wandura-Version",
"supported_versions": [
{
"version": "2026-10-02",
"released_at": "2026-10-02",
"deprecated_at": null,
"sunset_at": null,
"summary": "First dated version: the /v1 response shapes as of 2 October 2026."
}
]
},
"key": { "scopes": ["metadata:read", "playback"] },
"rate_limits": {
"window_seconds": 60,
"doors": {
"catalog": { "limit": 3000, "unit": "requests" },
"playback": { "limit": 10800, "unit": "tickets" },
"creatives": { "limit": 3000, "unit": "requests" },
"videos": { "limit": 3000, "unit": "requests" },
"config": { "limit": 600, "unit": "requests" }
}
},
"playback": {
"domains": ["playback.example.com"],
"protection": ["private-encrypted"],
"grant_ttl_seconds": 1800,
"manifest_url_ttl_seconds": 900,
"batch": { "max_episodes": 3, "max_next": 2 }
},
"subtitles": { "format": "webvtt", "languages": ["en"] },
"deprecations": [],
"links": {
"self": "https://www.wandura.ai/api/delivery/v1/config",
"catalog": "https://www.wandura.ai/api/delivery/v1/catalog",
"playback": "https://www.wandura.ai/api/delivery/v1/playback",
"creatives": "https://www.wandura.ai/api/delivery/v1/creatives",
"videos": "https://www.wandura.ai/api/delivery/v1/videos",
"config": "https://www.wandura.ai/api/delivery/v1/config",
"docs": "https://docs.wandura.ai/developers/reference/overview",
"evolution": "https://docs.wandura.ai/developers/concepts/api-evolution",
"changes": "https://docs.wandura.ai/changes.json"
}
}Response headers
| Header | Responses | Description |
|---|---|---|
Wandura-API-Status |
all | API status. beta today, on every response, success or error. |
Wandura-Version |
all | The dated API version (YYYY-MM-DD) this response was produced in: the version pinned to your API key, or the one you sent in the Wandura-Version request header. Keys created before dated versions existed use 2026-10-02. |
Wandura-Request-Id |
all | An opaque id for this request (req_ followed by 26 characters). Every response carries it, errors included, and error bodies repeat it as request_id. Log it, and quote it when you contact Wandura about a request: it finds the exact request in our logs. Do not parse it. |
Deprecation |
200 | Present only when this endpoint, or the dated version serving this response, is deprecated (RFC 9745): @<unix seconds> of the deprecation date. Log it in your monitoring. |
Sunset |
200 | Present only when a deprecated endpoint or dated version has a date when it stops working (RFC 8594), as an HTTP date. |
Link |
200 | Present with Deprecation: <https://docs.wandura.ai/…>; rel="deprecation" (and rel="sunset") pointing to the page that explains what to use instead. |
Cache-Control |
all | Always no-store. Do not cache these responses in shared caches. |
Retry-After |
429, 503 | Seconds to wait before retrying. Sent with 429 and with retryable 503 responses. |
X-RateLimit-Limit |
429 | Requests (for playback, tickets) allowed per window for this endpoint group and your organisation. |
X-RateLimit-Window |
429 | Window length in seconds. |
Errors
| Status | error_code |
When |
|---|---|---|
| 400 | unsupported_version |
The Wandura-Version header, or the version pinned to your key, is unknown or retired. The body adds supported_versions and latest_version (and upgrade_to when your pin was retired). |
| 401 | none | The Authorization: Bearer header is missing, or the key is unknown or revoked. |
| 403 | none (error is org_suspended) |
Your organisation's access is suspended. |
| 429 | rate_limited |
The rate limit for the configuration endpoint was reached. |
| 503 | service_unavailable |
Wandura could not verify the API key in time. The key is not wrong: retry after Retry-After seconds, with backoff. |
| 503 | service_unavailable |
Wandura could not read your configuration in time (Could not read your configuration in time — retry). Retry after Retry-After seconds, with backoff. |
rate_limits.doors lists every counter except the one of Get one open video; all counters are in Canonical API behaviour.
What to do for each: Errors.
Updated 5 Oct 2026 · Change history (4)