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. To download the final video, open the record's final.file_url, a public share link that needs no API key (Downloading the final file). When a link you stored answers 410, call this endpoint again: it returns the current link, or null if an admin revoked it.
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 signed media URL; final.file_url is a public share link. |
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" },
"created_by": { "email": "maker@example.com", "name": "Alex Tran" },
"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,
"file_url": "https://www.wandura.ai/api/c/Q3vh0xAbCdEfGhIjKlMnOpQrStUvWx9f.mp4",
"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 19 Oct 2026 · Change history (8)