Citera home
Browse documentation

Content and drafts

Content and drafts

Read generated content, safely edit drafts, and select cover images.

Summarize with AIChatGPTClaudePerplexity

GET /v1/brands/{brand_id}/content

Metadata only, newest first. Query: status (see content types and enums), content_type, source_recommendation_id, limit, cursor. Returns content objects with provenance (whether it was created via the API and by which job/key), destination compatibility and publications.

GET /v1/brands/{brand_id}/content/{content_id}

Query include=body returns the body as CCF blocks. The body is capped at 256 KB: whole leading blocks are kept, body_truncated reports cutting and body_bytes gives the full size. Without include, body is null.

PATCH /v1/brands/{brand_id}/content/{content_id} — edit a draft (content:write, beta)

Body

Rules

title

1–500 chars, optional

slug

1–500 chars, optional

body

≤ 200 CCF blocks, each { id, type, … } with type ∈ heading, paragraph, list, image, quote, callout, divider, howto_step, faq_item, cta, tweet, table, toc; ≤ 256 KB; bounded nesting

expected_updated_at

required — updated_at from a fresh read

At least one of title/slug/body must be present. The content must be reviewable (pending_approval, approved, published, publish_failed), and no publication may be in flight. A stale expected_updated_at gives 409 invalid_state. Saving never publishes.

POST /v1/brands/{brand_id}/content/{content_id}/cover — select a cover (content:write, beta)

Body: { "asset_id": "<uuid>", "expected_updated_at": "<RFC 3339>" }. The asset must be an image belonging to this content (crawl screenshots are excluded). The cover flag and body are saved in one SQL transaction.