Skip to contentDevelopersPrezly website
Newsroom administration

Manage newsroom languages

Enable locales, maintain localized company information, and plan changes that move existing stories between language codes.

A newsroom's configured languages determine its locale-specific company information and website views. Enabling a language prepares a destination; it does not translate content. Use Story translations when you need separate language versions of a story.

Personal tokens need sites:read for inspection and sites:write for language changes, alongside the owner's newsroom management permissions. Enabling an additional language requires multilingual newsroom access. Some company-information settings, such as SEO and privacy text, have their own feature requirements. Load PREZLY_API_TOKEN as shown in Your first API request.

Inspect the current configuration

curl --fail-with-body --silent --show-error 'https://api.prezly.com/v2/newsrooms/YOUR_NEWSROOM_UUID/languages' \
  --header "Authorization: Bearer $PREZLY_API_TOKEN" \
  --header 'Accept: application/json'

The response contains languages and sort, without story-list pagination. Use languages[].code and is_default; codes can include a region, such as nl_NL. Choose an actual supported locale rather than a display label. Keep nl and nl_NL distinct in configuration and story requests.

The detail read returns language with company_information. A detail response alone does not prove that a locale is enabled: the language list establishes that. The optional fallback parameter supplies fallback company information when present, including when sent as fallback=false. Omit it when inspecting the locale's own saved settings.

List languages → · Read locale settings →

Enable a locale with deliberate company information

For an account with multilingual newsroom access, this enables Dutch without replacing the existing English setup:

curl --fail-with-body --silent --show-error --request PUT 'https://api.prezly.com/v2/newsrooms/YOUR_NEWSROOM_UUID/languages/nl' \
  --header "Authorization: Bearer $PREZLY_API_TOKEN" \
  --header 'Content-Type: application/json' \
  --header 'Accept: application/json' \
  --data '{"company_information":{"name":"Acme Nederland","website":"https://www.example.com/nl"}}'

The response is 200 OK with language. PUT enables a missing locale or updates the supplied settings if it is already enabled. It is not a request to replace all the newsroom's languages. Re-read the list to confirm the configured code.

company_information contains localized presentation such as name, about text, contact details, and supported social links. Do not copy read-only fields, default disclaimers, or a fallback response wholesale into a write. Send only the fields you mean to maintain. Updating this information does not translate or rewrite story bodies.

Enable locale →

Update settings and choose the default

Change selected settings on the existing locale:

curl --fail-with-body --silent --show-error --request PATCH 'https://api.prezly.com/v2/newsrooms/YOUR_NEWSROOM_UUID/languages/nl' \
  --header "Authorization: Bearer $PREZLY_API_TOKEN" \
  --header 'Content-Type: application/json' \
  --header 'Accept: application/json' \
  --data '{"company_information":{"phone":"+32 2 555 0100"}}'

The response contains language. Omitted company-information fields are preserved. To make a configured locale the default, PATCH that locale with {"is_default":true}. Only true is accepted: do not send is_default: false to the previous default. Select the new default instead, then inspect the list and public language landing pages.

Keep this separate from changing default_culture through newsroom settings. On a single-language account, a default-code change can migrate the existing language's data rather than creating another language version.

Update locale →

Treat a code change as a data migration

PATCH also accepts code, for example changing a locale from nl to nl_NL. This repurposes the existing language: company information is copied to the destination code, the old code is removed from the configured selection, and stories using the old code move to the destination code. Destination company information can be overwritten. The default code follows when the source was default. Story text is not translated, and this does not create independent story translation copies.

The normal request checks for conflicts, including existing destination company information and stories attached to the source. A 409 confirmation response is a reason to inspect the reported conflicts and agree the migration's effects, rather than retry the same write automatically.

A force query parameter bypasses that confirmation check whenever it is present. force=false still bypasses it. Omit force by default. Only deliberately resubmit with that parameter after reviewing the destination, affected stories, existing translations, public links, and cache/index effects. Check the post-migration language list and story locale values before continuing other writes.

Disable a locale without losing track of its stories

The only enabled locale cannot be removed. Removing a default locale or one with attached stories requires a different replacement. Configure and review that destination first. For example, after confirming English is the intended replacement:

curl --fail-with-body --silent --show-error --request DELETE 'https://api.prezly.com/v2/newsrooms/YOUR_NEWSROOM_UUID/languages/nl' \
  --header "Authorization: Bearer $PREZLY_API_TOKEN" \
  --header 'Content-Type: application/json' \
  --header 'Accept: application/json' \
  --data '{"replacement":"en"}'

Success is 204 No Content. If Dutch was default, English becomes default. Stories attached to Dutch are moved to the replacement code; they are not translated or deleted. This can mix previously distinct language content, so inspect the affected stories and their translation relationships before deciding to remove a used locale. An unused, non-default locale can be removed without a replacement; removing a locale that is already disabled is a no-op.

After an uncertain response, re-read languages and affected stories before retrying a migration or removal. Filtering results and Pagination and sorting help inventory the relevant stories; one result page is not a complete migration inventory.

Disable locale →

On this page