> ## Documentation Index
> Fetch the complete documentation index at: https://snowseo.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Generate Article

> Create and generate a complete, SEO-optimized article in a single call.

Generate a full article end-to-end from a short brief. SnowSEO builds the structured outline, target keywords, and FAQ prompts for you, creates the draft, and writes the content in the background.

<Note>
  This uses AI credits. The article is written asynchronously — the call returns a `slug` immediately. Poll [Start Generation](/docs/api-reference/endpoints/start-generation#generation-status) until it finishes, then read it with [Get Article](/docs/api-reference/endpoints/get-article).
</Note>

### How it works

1. Provide a `title`, a `topicId` (the topic cluster the article belongs to), a `length` tier, and optionally a tone or `customInstructions`.
2. The outline, target keywords, and FAQ prompts are generated for you — you don't need to provide or author them.
3. A draft is created and generation starts. The response is `{ slug, articleId, generating, started, status }` (plus `requiredCredits` / `message` / `alreadyRunning` when relevant).
4. Poll the status with that `slug`; when it is no longer generating, fetch the finished article.

### Notes

* **Topic is required.** Every article belongs to a topic cluster. Pass a `topicId` from [Topics](/docs/api-reference/endpoints/topics), or create one with [Create Topic](/docs/api-reference/endpoints/create-topic). The topic name is taken from the cluster.
* **Length sets the cost.** Choose a `length` tier — short (\~100 credits), medium (\~200), or long (\~300).
* **Custom instructions** (`customInstructions`) are optional, per-article writing guidance. Your brand's default content guidelines (Brand Settings → About) are always applied automatically.
* **Language** is optional. Omit it and the article uses your brand's Writing Language (Settings → Content & CMS → Articles), falling back to your brand's default language. Pass a language code such as `es` to write this one article in a different language. Codes are usually two letters, with three exceptions: Chinese is `zh_CN` or `zh_TW`, and Hebrew is `iw` (the legacy code, not `he`). Whichever applies is recorded on the article, so later refreshes, audits, and editor commands stay in that language even if the brand setting changes.
* Set `startGeneration: false` to create the draft only, then call [Start Generation](/docs/api-reference/endpoints/start-generation) later.

### Prefer step-by-step?

Use the wizard tools for granular control: [Generate Titles](/docs/api-reference/endpoints/generate-titles) → [Generate Outline](/docs/api-reference/endpoints/generate-outline) → [Create Article](/docs/api-reference/endpoints/create-article) → [Start Generation](/docs/api-reference/endpoints/start-generation).
