Skip to main content
POST
Generate a structured, type-specific article outline
Generate the structured outline for an article (listicle, guide, comparison, review, or news) from a title, keywords, and optional prompt insights and competitor URLs. JSON body fields: title (required), type (listicle default, comparison, news, review, guide), content_article_type (pillar or cluster), primary_keywords, secondary_keywords, prompt_insights_json (JSON-stringified array), article_topic, competitor_articles (up to 5 URLs), length (auto or a word count), tone, audience, country, language, and custom_instructions. The response streams newline-delimited JSON (application/x-ndjson); the final line is { outline, auto_selections, competitive_analysis, optimization_scope }. An error after streaming starts arrives as an error line with HTTP 200. Limited to 20 requests per minute.
The outline shape is type-specific and strict - it is meant to be generated, not hand-written. Pass the whole returned object as articleOutline.generateOutlineResponse to Create Article, or use Generate Article to do everything in one call.

Authorizations

Authorization
string
header
required

Your SnowSEO API key (sk_...).

Body

application/json
title
string
required

Article title (required).

type
enum<string>

Article type. Defaults to listicle. Selects the outline structure.

Available options:
listicle,
comparison,
news,
review,
guide
content_article_type
enum<string>

Omit for a standalone post.

Available options:
pillar,
cluster
primary_keywords

Primary target keywords.

secondary_keywords

Secondary keywords.

prompt_insights_json
string

JSON-stringified array of prompt-insight rows the article should answer.

article_topic
string

Topic cluster the article belongs to.

competitor_articles

Up to 5 competitor article URLs to inform competitive analysis.

length
string

Target word count: 'auto', a number like '1900', or a label.

tone
string
audience
string
country
string
language
string

Response

200 - application/x-ndjson

A newline-delimited stream. Whitespace keeps the connection alive; status and final result are JSON lines. An error after streaming starts is returned as a JSON error line with HTTP 200.

Newline-delimited JSON events