On this page
TL;DR — The creatives feed gives your marketing systems a data record for each ad creative your organisation has approved on Wandura: film, episodes and scenes used, format, duration, hook, formula and the end of your rights. Records never contain a media URL. Sync them incrementally with
updated_sinceand a cursor.
What the feed contains
Creatives of your organisation with status approved or pushed (already delivered). Drafts and other organisations' creatives never appear. final.ready says whether the final render exists. Final video files are not delivered through this API: ask Wandura how they reach your systems.
Endpoints
| Endpoint | Use |
|---|---|
GET /api/delivery/v1/creatives |
Sync all records, incrementally. |
GET /api/delivery/v1/creatives/{id} |
Fetch or re-check one record. |
Both need a key with creatives:export (Authentication) and share one rate-limit counter.
Response envelope
Successful responses are wrapped in an envelope:
{
"code": 0,
"message": "ok",
"data": { "items": [], "next_cursor": null },
"server_time": 1790679032
}Errors use the same envelope without data (code is then a four-digit error code), except 429 and 400 unsupported_version, which use the flat format. Timestamps in this feed, server_time included, are Unix epoch seconds. See Errors.
Syncing
Records come oldest update first (by updated_at, then ID), so updates made during a sync land after the pages you have read. Keep a checkpoint (the largest updated_at of your last complete run), pass it as updated_since, page with cursor, and overwrite records by creative_id: a record can arrive twice. The full procedure and code: Creatives sync.
Creatives that leave the feed
There are no deletion events. A creative that is no longer approved stops appearing. To check one you stored, call GET /creatives/{id}: 404 with code 4040 means it is gone.
The record
| Field | What it tells you |
|---|---|
creative_id |
Stable ID. Your primary key. |
creative_code |
Immutable human-readable code; treat it as opaque. |
film, episodes, scenes |
What the creative is made of: film, episode numbers, each clip with its start, end, action and line. |
hook |
The action and line of the opening scene. |
placement, aspect |
reels_9x16, feed_4x5 or square_1x1, and the aspect ratio. |
duration_ms |
Total length of the clips used. |
formula |
The formula it was built with, if any. |
rights.ends_at |
00:00 UTC of the last day of your export rights, or null. That day is included: stop using the creative at ends_at + 86400. |
final.ready |
Whether the final render exists. |
Every field: List creatives. Each record carries schema_version (currently 1); new fields are added without changing it, so ignore fields you do not recognise.
Related
Updated 2 Oct 2026 · Change history (2)