genko.meDocs
Publishing and integrations

Multilingual content

Create language versions in one API, and manage publishing and delivery for each language.

With multilingual content, each entry in one API holds several language versions. The entry ID and field layout are shared, while values such as the body and the publish status are managed per language. It works with both List and Object APIs.

From setup to publishing

  1. The Owner sets the main language and additional languages in workspace settings. Free allows one additional language, and Plus and Pro have no limit on the number.
  2. For the target API, turn on Multiple languages in API settings. Adding a language doesn't create translated versions of each entry.
  3. In Content, choose an additional language, copy the draft from the main language, and translate it. To move content from another API, use import by language.
  4. Save the language version, preview it, and change that language's publish status. The status of the main language and of other additional languages doesn't change.
  5. On your site, fetch with lang. If you don't pass it, the API returns the main language as before.

Fetch from your site

This example fetches the English version of an entry. If the English version doesn't exist or isn't published, you get 404.

bash
curl --get 'https://api.genko.me/v1/your-workspace/blog/abcDEF123456' \  -H "X-API-KEY: ${GENKO_API_KEY}" \  --data-urlencode 'lang=en'
json
{  "id": "abcDEF123456",  "title": "First article",  "body": "<p>Hello.</p>",  "createdAt": "2026-09-01T00:00:00.000Z",  "updatedAt": "2026-09-01T01:00:00.000Z",  "publishedAt": "2026-09-01T01:00:00.000Z"}

Add lang_fallback=true and the API returns the live main language, but only when the language you asked for has no published version. It doesn't fall back by default. Add include=_langs and _langs is added with the language returned in that response and the list of live languages. You can use it to build a language switcher.

json
{ "_langs": { "current": "en", "available": ["ja", "en"] } }

For lists, single entries, and Object APIs, see the delivery API. For how to write it in the SDK, see Search and filter. If the referenced API is also multilingual, the same language's published version is expanded. Check the query reference for details, including what happens when the referenced entry has no translation.

Things to know when managing content

  • An additional-language entry holds the values as they were when you copied it from the main language. It doesn't sync automatically when you change the original.
  • Each language has its own publish and end dates, preview key, and version history.
  • Each published language version can save, publish, and discard its own unpublished changes. The published content of other language versions doesn't change.
  • The webhook that reports an update to an additional-language version carries a top-level lang.
  • Saving language versions counts toward your entry storage. If you remove an additional language from the workspace, all entries and history in that language are deleted.

Last updated: October 6, 2026

On this page