v1

latestOpenAPI 3.1.02026-07-2295105298.6 KB
Content

Get Content Detail

Fetch the full detail of a single tracked content item — including the actual text: the content brief (brief) and the article/page body (body). body holds generated drafts, optimize rewrites, snipe articles, authored text, and scraped tracked-page bodies alike.

Use this after listing tracked content (POST /api/v1/content) to read the text behind a content_id, or to poll status while generation runs — generated_brief means the brief is ready while the article is still being written. Also exposed as the MCP tool get_content_detail.

Tracked pages that have not been scraped yet return null text fields. Unknown or hidden content_id returns 404.

get/api/v1/content/{content_id}

Path parameters

content_idstring uuid required

The UUID of the content item to fetch.

Query parameters

website_idstring uuid required

The website the content item belongs to.

Response

Successful response with the content item's full detail.

content_idstring uuid required

The content item's id.

titlestring nullable required

The content's title.

urlstring nullable required

The content's display URL.

normalized_urlstring nullable required

The normalized URL — the value joined against citation data.

typestring nullable required

How the content entered the hub: draft (Athena-written article), optimize (rewrite of an existing page), snipe, slice, manual (authored in the editor), external (added manually), imported (via GA4).

sheet_idstring uuid nullable required

The Content Hub sheet the item belongs to. See GET /api/v1/content/sheets.

status'done' | 'generated' | 'failed' | 'pending' | 'generated_brief' | 'pending_brief' | 'pending_article' | 'scheduled' nullable required

Generation lifecycle status. pending/pending_brief/pending_article mean work is in flight; generated_brief means the brief is ready while the article is still being written; generated means the text is ready; done means published/marked done; scheduled means a publish is scheduled. null when the item has no generation record yet (e.g. a tracked page that has not been scraped).

briefstring nullable required

The content brief, as markdown. Available once status reaches generated_brief.

bodystring nullable required

The article/page body, as markdown. Holds the generated draft, the optimize rewrite, the snipe article, authored text, or the scraped body of a tracked page — depending on type.

meta_descriptionstring nullable required

The generated meta description.

cited_urlsstring[] nullable required

External source URLs cited by the body. Not to be confused with citations on POST /api/v1/content, which is the count of AI responses citing this URL.

internal_linksstring[] nullable required

Internal URLs linked from the body.

brief_cited_urlsstring[] nullable required

External source URLs referenced by the brief.

brief_internal_linksstring[] nullable required

Internal URLs suggested by the brief.

linkedin_poststring nullable required

Latest completed LinkedIn post generated for this content; falls back to legacy stored values for older content.

x_poststring nullable required

Latest completed X post generated for this content; falls back to legacy stored values for older content.

facebook_poststring nullable required

Latest completed Facebook post generated for this content; falls back to legacy stored values for older content.

instagram_poststring nullable required

Latest completed Instagram post generated for this content; falls back to legacy stored values for older content.

reddit_poststring nullable required

Latest completed Reddit post generated for this content; falls back to legacy stored values for older content.

topic_namestring nullable required

Name of the topic the content targets, when assigned.

mark_as_done_timestring date-time nullable required

When the item was marked done/published.

created_atstring date-time required

When the content item was created.

updated_atstring date-time required

When the content item or its generated text last changed (the newer of the row and generation timestamps).

Example response

{
  "type": "draft"
}