Skip to main content
POST
Create an article (draft) from a pre-built outline
Create a draft article. This does not generate body content — for a fully AI-written article in one step, use Generate Article. Use this when you already have an outline from Generate Outline and want manual control. Pass the outline under articleOutline, then call Start Generation with the returned slug to write the content.
A valid topicId is required — every article belongs to a topic cluster. Use Topics to find one, or Create Topic to add one. The topic name is taken from the cluster.
The optional language field sets the language code the article is written in (e.g. es). Codes are usually two letters, with three exceptions: Chinese is zh_CN or zh_TW, and Hebrew is iw (the legacy code, not he). Omit it to use your brand’s Writing Language (Settings → Content & CMS → Articles), falling back to your brand’s default language. Whichever applies is recorded on the article, so later refreshes, audits, and editor commands stay in that language even if the brand setting changes.

Authorizations

Authorization
string
header
required

Bearer authentication header of the form Bearer <token>, where <token> is your auth token.

Body

application/json
title
string
required

Article title.

topicId
string
required

Required. Id of the team's topic cluster this article belongs to — get it from topic_clusters_list, or create one with create_topic_cluster. The topic name is taken from this cluster (do not pass a free-text topic).

teamId
string

Team id (falls back to the session's active project).

content
string

Optional markdown body. Leave empty for a draft you will fill via start_article_generation.

type
string
default:blog

Article type: listicle | guide | comparison | review | news (or blog for a generic post). Must match the outline's structure.

status
string
default:draft
contentArticleType
string | null

"pillar" or "cluster" for pillar/cluster content, null/omitted for generic posts.

authorName
string
keywords
object[]
prompts
object[]
metaData
object
articleOutline
object

Outline wrapper consumed by the generator. Shape: { generateOutlineResponse: , outlineAdditionalElements: { targetWordCount:number, _shouldIncludeFAQ:boolean, _shouldIncludeTldr:boolean, _shouldIncludeConclusion:boolean, _shouldIncludeCTA:boolean }, outlineNonEditable: { introduction: { estimated_words:150 }, conclusion?: { estimated_words:150 } }, audience_level:'auto', content_tone?:string }. Do NOT hand-author the outline — obtain it from generate_outline and pass it through unchanged.

Slugs of existing SnowSEO articles to link out to (internal links).

Absolute http(s) URLs to link out to that are not SnowSEO articles.

Response

Default Response

article
object