Skip to main content
PATCH
Update an article
Update an existing article’s content or metadata by slug. Only the fields you send are changed. Body fields: content, metaData (merged into existing metadata), slug (must be unique within the team), status (draft, generated, or manual only), isPublic, jsonLd (a JSON string that parses to an object or array, or empty/null to clear), keywords and prompts (replace the stored lists; one keyword and one prompt are primary, and extra primaries are stored as secondary), authors (replaces the bylines, in order: { name, avatar?, url? }; assistant names such as “Snowy” are dropped, the article’s JSON-LD author is updated to match, and a published article is marked as needing a re-push), plus revisionSource: "manual" with revisionLabel to snapshot a history version first. Returns { article } with slug, title, status, isPublic, updatedAt, lastRefreshedAt, cmsSyncDirty, and publishedSnapshot. Errors: 400 for an invalid slug, status, or JSON-LD or an empty update; 404 for an unknown slug; 409 for a slug already in use, or when a generation job currently owns the article and you change content, metaData, jsonLd, status, slug, keywords, or prompts (isPublic stays writable).
These endpoints modify existing articles - they don’t create new ones. Use the Articles list to find slugs.

Authorizations

Authorization
string
header
required

Your SnowSEO API key (sk_...).

Path Parameters

slug
string
required

Body

application/json
teamId
string
content
string
metaData
object
slug
string
status
string
isPublic
boolean
jsonLd
string | null
keywords
object[]

Replaces the article's keywords. Mark exactly one as primary; extra primaries are stored as secondary.

prompts
object[]
revisionSource
enum<string>
Available options:
manual
revisionLabel
string
authors
object[]

Replaces the article's bylines, in order (the first is primary). Assistant names like 'Snowy' are dropped.

autoOptimizeState
object

Response

Default Response

article
object