Creatives
List creatives (keyset-paginated)
Returns one page of usable (image/video) creatives in the uniform list envelope `{ data, pagination }`. Keep paginating while `pagination.nextCursor` is non-null β even when `data` is empty β passing it back verbatim as `?cursor=`. Add `?expand=product` to join each creative's linked product, or `?showDeleted=true` to include deleted creatives (every row then carries `deletedAt`).
Get a single creative by id
Returns the single usable creative with the given stable Mocart creative document id. Add `?expand=product` to join the linked product, or `?showDeleted=true` to read a deleted creative too (the body then carries `deletedAt`). The strong `ETag` header (plain read, or a deleted creative via `showDeleted`) identifies the creative state; send it back as `If-Match` on `DELETE` or `undelete`.
Delete a creative
Deletes a creative and returns it with `deletedAt` set. The creative is only hidden, never destroyed: `POST /creatives/{creativeId}/undelete` restores it, and `?showDeleted=true` still reads it. A creative that is `QUEUED` or `GENERATING` cannot be deleted. Deleting spends and refunds no credits.
Update a creative
Sets the creativeβs delivery `aspectRatio` and/or merges your own `metadata` map, and returns the creative β the same body `GET /creatives/{id}` returns. Changing the ratio of a creative with an asset queues a crop job; it is free. A request that changes nothing is a `200` that records nothing. `Idempotency-Key` and `If-Match` are optional.
Approve a creative
Approves a `PENDING` creative and returns it β the same body `GET /creatives/{id}` returns. No request body. Approving an already-approved creative is a no-op `200` that records nothing, so a retry is always safe; `Idempotency-Key` is required.
Reject a creative
Rejects a `PENDING` creative, optionally with a reason, and returns it β the same body `GET /creatives/{id}` returns. Rejecting an already-rejected creative is a no-op `200` that records nothing; `Idempotency-Key` is required.
Restore a deleted creative
Restores a deleted creative and returns it β the same body `GET /creatives/{id}` returns. There is no time limit. Restoring a creative that is already live is a no-op `200`; `Idempotency-Key` is required. A creative deleted together with its campaign cannot be restored while that campaign is deleted.