Skip to main content
POST
Create article
When creating an article in Octavia AI CMS, you can include content in multiple languages.
Fields that support localization must be sent in the standard multilingual format, where each language is represented by a lowercase ISO 639-1 code (for example, en, es, fr).
Example format:

Rules

  • ✅ Keys must be lowercase ISO 639-1 codes (en, es, de, etc.)
  • ✅ At least one language (your default) is required
  • ✅ Values must be plain strings (HTML allowed for content)
  • ❌ Do not send a single string for multilingual fields
  • ❌ Do not use uppercase or non-standard codes (e.g., EN, eng)

Validation & Behavior

  • Slug must be unique within your workspace
  • Publish controls: isPublished, isPrivate, and publishDate are optional
  • Language fallback: if the requested lang doesn’t exist, the API returns the default language
  • Content field supports only HTML, not Markdown
  • Category, subCategory, and author fields expect valid IDs
  • When using the lang header, localized fields are flattened to a single string; otherwise, the full language map is returned

Authorizations

x-api-key
string
header
required

Body

application/json
mainTitle
object
required

Main title in multiple languages

body
object
required

Main article content (HTML allowed)

category
string[]
required

Array of category IDs

Pattern: ^[a-fA-F0-9]{24}$
author
string
required

Author ID

Pattern: ^[a-fA-F0-9]{24}$
title2
object

Optional secondary title in multiple languages

title3
object

Optional tertiary title in multiple languages

slug
string

URL-friendly unique identifier

summary
object

Short summary in multiple languages

thumbnail
string<uri>

Thumbnail image URL

banner
string<uri>

Banner image URL

tags
string[]

List of tags

subCategory
string[]

Array of sub-category IDs

Pattern: ^[a-fA-F0-9]{24}$

Optional gallery image URLs

publishDate
string<date-time>

Publish date in ISO 8601

isPublished
boolean

Publish state

isPrivate
boolean

If true, restricts visibility

language
enum<string>

Preferred language for immediate rendering/preview

Available options:
en,
es
autoSummarize
boolean

If true, backend may auto-create a summary

Response

Created