Get Target Status
const url = 'https://app.lionrapid.com/api/integrations/targets/status?locale=example&namespace=example&keys=example';const options = {method: 'GET'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request GET \ --url 'https://app.lionrapid.com/api/integrations/targets/status?locale=example&namespace=example&keys=example'Get translation status for a batch of keys, including unconfirmed rows.
Unlike GET /translations, this returns ALL target rows regardless of is_ready_for_delivery status. Used by the visual editor to show what’s already been translated.
Args: locale: Target language locale (e.g., “es”) namespace: Translation namespace (e.g., “default”) keys: Comma-separated list of translation keys (e.g., “auto_abc,auto_def”) api_key: Integration API key for authentication
Returns: Map of key → {text, isReady, rowState} or null if no target row exists
Parameters
Section titled “Parameters”Query Parameters
Section titled “Query Parameters”Header Parameters
Section titled “Header Parameters”Responses
Section titled “Responses”Successful Response
Response for batch target status lookup (editor init).
object
Map of key → status (null if no target row exists)
object
Status of a single target translation (includes unconfirmed rows).
object
Target translation text
Content state: empty, machine_translated, edited
User confirmed row ready for next stage
Approved for production delivery
Whether GET /translations would ACTUALLY serve this key right now. Derived from the delivery axes over this row — approved-or-locked, non-empty target, translatable source, live target — and NOT a restatement of isReady. isReady means APPROVED; a row can be approved and still not delivered, which is exactly what happens when its target is empty. Absent (older backend) = false.
Locked (workflow or delivery) — uneditable
Whether the calling user can edit/confirm/reject this row. Computed server-side via can_user_edit_row() — reflects PM/admin override, lock state, postreview, and stage assignment. True for non-editor-session callers (master/publishable keys).
Current workflow stage index of this row (0 = first stage).
Whether the calling user may lazily create rows for keys with no target row yet (null entries). Editor-session callers only; mirrors the batch save’s create gate (creation is stage-0 work — PM/admin or stage-0 assignees). Server-side keys: always true.
True when this locale’s target has been ARCHIVED — the PM removed the language. Every entry in translations is null in that case, deliberately: the delivery readers drop archived targets, so reporting a row’s approval state here would claim production delivery for a language GET /translations omits entirely. can_create is false alongside it — nothing may be created in a removed language. Absent (older backend) = not archived.
True while this locale’s target has a v1 fill (MT/copy) queued or running. canEdit/can_create report the permission truth IGNORING that transient gate — clients show a ‘machine translation running’ state instead of read-only; writes during the window are denied as busy (batch save) or 423 TARGET_BUSY (transitions) and should be retried.
Example
{ "translations": { "auto_abc123": { "isReady": false, "rowState": "edited", "text": "Hola mundo" } }}Validation Error
object
object
Examplegenerated
{ "detail": [ { "loc": [ "example" ], "msg": "example", "type": "example" } ]}