Skip to main content

Create content

string
required
An app id from /v1/apps.
string
required
"slideshow" | "illustrated" | "hook_video". Only slideshow is fully wired to generation today — see the warning below.
object
Requires content:write and an Idempotency-Key header. Costs 1 credit for type: "slideshow", charged only on success.
201
type: "illustrated" or "hook_video" returns 201 with notice: "generation_not_wired" and status: "failed" — the row is created (so you can see the gap explicitly) but no generation runs. Their pipelines are asynchronous Durable-Object state machines not yet integrated with this API. Use type: "slideshow" today.
A plain slideshow’s result is text only — no rendered slide images — so POST /v1/schedules refuses it with 409 no_images. Create it with brief.templateId: "quote-card" to get finished slide images the API can post (see Schedules).
On insufficient credits: 402 with {"error": {"code": "insufficient_credits", "insufficient": true, ...}}.

List content

GET /v1/content — requires content:read. Up to 100 rows, newest first.

Get content

GET /v1/content/{id} — requires content:read.

Approve / reject

POST /v1/content/{id}/approve and POST /v1/content/{id}/reject — requires content:approve. Approve fails with 409 not_ready if status isn’t "ready" yet. See The approval gate.

Remix

POST /v1/content/{id}/remix — not yet wired (returns 501 not_implemented), for the same reason illustrated/hook_video generation isn’t. Mirrors the app’s own free remix (re-pick images, keep text) once it lands.