API reference
On this page
Returns the data record of one approved creative of your organisation. Use it to fetch a single creative, or to check whether a creative you stored is still available.
GET /api/delivery/v1/creatives/{id}Scope: creatives:export
Description
Returns the same record as List creatives, wrapped in the {code, message, data, server_time} envelope. A creative that does not exist, belongs to another organisation, or is not in status approved or pushed returns the same 404, so you cannot tell these cases apart.
Request parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
Authorization |
header | string | Yes | Bearer <API key> for a key with the creatives:export scope. |
id |
path | string | Yes | The creative_id of the creative. A value that is not a UUID returns 404. |
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. |
Request example
curl -s https://www.wandura.ai/api/delivery/v1/creatives/5e1b7c3a-2d4f-4a6b-9c8d-0e1f2a3b4c5d \
-H "Authorization: Bearer $WANDURA_API_KEY"Response
200 OK
| Field | Type | Description |
|---|---|---|
code |
integer | 0. |
message |
string | "ok". |
data |
object | The data record of one approved creative. Never contains a media URL. |
server_time |
integer | Server time in Unix epoch seconds. |
links |
object | Ready-made absolute URL of this response. |
Response example
{
"code": 0,
"message": "ok",
"data": {
"schema_version": 1,
"creative_id": "5e1b7c3a-2d4f-4a6b-9c8d-0e1f2a3b4c5d",
"creative_code": "ACV001-FILM0001-EP1-2-F1-TEAM",
"name": "Heiress returns - wedding hook",
"status": "pushed",
"created_at": 1790500000,
"approved_at": 1790590000,
"updated_at": 1790640000,
"org": { "slug": "your-org" },
"film": { "code": "FILM0001", "title": "The Heiress Returns", "language": "en", "genres": ["romance", "revenge"] },
"episodes": [1, 2],
"placement": "reels_9x16",
"aspect": "9:16",
"duration_ms": 21500,
"scenes": [
{
"episode_no": 1,
"start_ms": 12000,
"end_ms": 19500,
"duration_ms": 7500,
"action": "reveal",
"line": "You threw me out. Now watch me take it all back."
},
{ "episode_no": 2, "start_ms": 40000, "end_ms": 54000, "duration_ms": 14000, "action": null, "line": null }
],
"hook": { "action": "reveal", "line": "You threw me out. Now watch me take it all back." },
"formula": { "name": "Cliffhanger opener" },
"rights": { "ends_at": 1798675200 },
"lineage": { "parent_creative_id": null },
"final": { "ready": true, "target": { "width": 1080, "height": 1920, "fps": 30, "codec": "h264" } }
},
"server_time": 1790679032
}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 | 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 | code |
When |
|---|---|---|
| 400 | none | 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 | 4010 | The Authorization: Bearer header is missing. |
| 401 | 4011 | The key is unknown or revoked. |
| 403 | 4030 | The key lacks the creatives:export scope. |
| 403 | 4031 | Your organisation's access is suspended. |
| 404 | 4040 | No approved creative with this ID exists for your organisation, or the ID is not a UUID. |
| 429 | none | Rate limit reached. Flat body with error_code rate_limited, not the envelope. |
| 503 | 5030 | The feed is temporarily unavailable. Retry with backoff. |
| 503 | 5031 | Wandura could not verify the API key in time. The key is not wrong: retry with backoff. |
See Errors for what to do in each case.
Updated 2 Oct 2026 · Change history (4)