title, content, and content_plain in a different language. The primary article’s language field is the canonical one; every other language lives as a translation.
When to use translations vs separate articles
Use translations
The two pieces of content are the same article in different languages — same canonical slug, same category, same intent. Translations share the parent article’s
id, slug, category_id, visibility, and lifecycle.Use separate articles
The content diverges by audience — different examples for different regions, different policies per market, a fully localized site structure. Each gets its own
id and its own lifecycle.Translations cannot have their own
status. They are live whenever the parent article is published, and are removed from the index whenever the parent is unpublished.How indexing works
Each translation is embedded under its own language, separately from the primary body. A chatbot answering in Spanish retrieves Spanish embeddings; an English chatbot retrieves English. Image re-hosting runs on translations too — external images in a translation’scontent are pulled into the org’s storage on write, the same as on the primary article.
The translation object
Always
"article_translation".The translation’s own id. The parent article’s id lives in
article_id.The primary article this translation belongs to.
ISO 639-1 two-letter language code. Must differ from the parent article’s
language. Unique per article — there’s exactly one translation per language per article.Supported codes:
en, ja, de, fr, ko, zh, nl, sv, es, it, no. Sending any other value returns invalid_payload.Translated title.
Translated body. External image URLs are rehosted on write.
Plain-text mirror used for indexing. Derived server-side from
content — not accepted as input.Endpoints
| Method | Path | Purpose |
|---|---|---|
GET | /articles/{id}/translations | List all translations |
POST | /articles/{id}/translations | Create a new translation |
GET | /articles/{id}/translations/{language} | Get one by language code |
PATCH | /articles/{id}/translations/{language} | Update title or content |
DELETE | /articles/{id}/translations/{language} | Remove a translation |
End-to-end workflow
Create the primary in English, then add Spanish and French.Updating a translation
PATCH with the fields you want to change. The translation’slanguage is in the URL and cannot be changed — delete and recreate to “rename” the language.
Deleting a translation
DELETE /articles/{id}/translations/{language} returns 204 and removes the translation row and its embeddings. The primary article is untouched.
