This article presents possible use cases and corresponding sample flows that you can support. It provides a useful starting point as you plan your implementation.
A site owner has added a secondary language to their site and wants everything that hasn't been translated yet rendered in it, without paying to re-translate content they've already handled.
Prerequisite: Install the Wix Multilingual app on the site before using this API.
To translate a site's untranslated content:
mainLocale, the locale to translate into as translatedLocale, and filterByStatus set to UNTRANSLATED_ONLY.jobId from the response.jobId until jobState is COMPLETED or FAILED.failedFields and show each failureReason to the site owner, so they can fix the content and run another job for it.When a site owner edits content that was already translated, those translations become outdated. Rather than re-translating the whole site, you can pick up only what changed.
To refresh outdated translations:
filterByStatus set to OUTDATED_ONLY, so the job covers only fields whose source content changed after they were translated.jobId from the response.jobState is COMPLETED or FAILED.UNTRANSLATED_AND_OUTDATED instead of OUTDATED_ONLY in step 1.A site owner wants to translate a single collection, such as their product catalog, rather than
everything on the site. Narrow the job with the filter field.
To translate one section of a site:
Call List Site Schemas to find the schema whose content you want to translate, and take its id.
Call Translate Site with that schema in the filter:
Store the jobId from the response.
Poll Get Translation Job Status until jobState is COMPLETED or FAILED.
To narrow the job further to specific items rather than a whole schema, filter on entity IDs
instead, using {"entityId": {"$in": ["<ID_1>", "<ID_2>"]}}. Don't include a locale key in the
filter: the job already scopes itself to mainLocale, and your own locale value overrides that
scoping.
Last updated: 22 September 2026