# API reference

The reference documents each endpoint of the Wandura Delivery API: parameters, fields, examples, headers and errors, generated from the OpenAPI description. The rules shared by every endpoint — authentication, pagination, ticket lifetime, freshness, retries, rate limits, versioning — are on [Canonical API behaviour](https://docs.wandura.ai/developers/reference/behaviour).

## Base URL
```
https://www.wandura.ai
```

Always `www.wandura.ai`. The bare domain answers `308` to `www`, and some HTTP clients drop the body or headers of a `POST` when they follow a redirect.

## Endpoints
| Method | Path | Scope | Page |
|---|---|---|---|
| `GET` | `/api/delivery/v1/catalog` | `metadata:read` | [List licensed catalog](https://docs.wandura.ai/developers/reference/catalog) |
| `GET` | `/api/delivery/v1/config` | `any` | [Get configuration](https://docs.wandura.ai/developers/reference/config) |
| `GET` | `/api/delivery/v1/creatives` | `creatives:export` | [List creatives](https://docs.wandura.ai/developers/reference/creatives-list) |
| `GET` | `/api/delivery/v1/creatives/{id}` | `creatives:export` | [Get a creative](https://docs.wandura.ai/developers/reference/creatives-get) |
| `POST` | `/api/delivery/v1/playback` | `playback` | [Request playback](https://docs.wandura.ai/developers/reference/playback) |
| `GET` | `/api/delivery/v1/series` | `metadata:read` | [List series for metadata sync](https://docs.wandura.ai/developers/reference/series-list) |
| `GET` | `/api/delivery/v1/series/{code}` | `metadata:read` | [Get series metadata](https://docs.wandura.ai/developers/reference/series-get) |
| `GET` | `/api/delivery/v1/videos` | `videos:read` | [List open videos](https://docs.wandura.ai/developers/reference/videos-list) |
| `GET` | `/api/delivery/v1/videos/{id}` | `videos:read` | [One open video with a fresh playback link](https://docs.wandura.ai/developers/reference/videos-get) |

Any other path under `/api/delivery/v1/` answers `404` `not_found`; a real path with the wrong method answers `405`.

Machine-readable contract: the OpenAPI 3 description of every endpoint above is published at [https://docs.wandura.ai/developers/openapi/delivery-v1.json](https://docs.wandura.ai/developers/openapi/delivery-v1.json). Use it to generate a client or to validate your integration. It changes only additively within `/v1`.

## Server-to-server only
Call these endpoints from your backend, never from a browser or an app: they send no CORS headers, and a key inside a client can be extracted. See [Security](https://docs.wandura.ai/developers/concepts/security).

## Requests and responses
- Bodies are JSON. Send `Content-Type: application/json` on `POST`.
- Film, episode, creative and video IDs are UUID strings.
- Times are ISO 8601 UTC strings (`expires_at`), except in the creatives feed, which uses Unix epoch seconds.
- Every response carries `Wandura-Version` and `Wandura-API-Status: beta`.
- Ignore fields, values and error codes you do not recognise: see [Versioning and API evolution](https://docs.wandura.ai/developers/concepts/versioning#tolerant-reader).

## Where the shared rules live
| Topic | Page |
|---|---|
| Keys, scopes | [Authentication](https://docs.wandura.ai/developers/authentication) |
| Pagination, tickets, freshness, retries, rate limits, versioning | [Canonical API behaviour](https://docs.wandura.ai/developers/reference/behaviour) |
| Every error, per endpoint | [Errors](https://docs.wandura.ai/developers/concepts/errors) |
| Rate limits under load | [Rate limits](https://docs.wandura.ai/developers/concepts/rate-limits) |
| Dated versions, deprecations | [Versioning and API evolution](https://docs.wandura.ai/developers/concepts/versioning) |

### Beta
The API is in **beta**. During the beta Wandura may still change behaviour inside `/v1`, under the [beta rule](https://docs.wandura.ai/developers/concepts/versioning#beta); every change is in the changelog.
