Skip to content

Get Target Status

GET
/api/integrations/targets/status
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

locale
required
Locale
string
namespace
required
Namespace
string
keys
required
Keys
string
surface
Any of:
string
x-api-key
Any of:
string
x-lr-surface
Any of:
string

Successful Response

Media typeapplication/json
TargetStatusResponse

Response for batch target status lookup (editor init).

object
translations
required
Translations

Map of key → status (null if no target row exists)

object
key
additional properties
Any of:
TargetStatusItem

Status of a single target translation (includes unconfirmed rows).

object
text
required
Text

Target translation text

string
rowState
required
Rowstate

Content state: empty, machine_translated, edited

string
isConfirmed
required
Isconfirmed

User confirmed row ready for next stage

boolean
isReady
required
Isready

Approved for production delivery

boolean
willDeliver
Willdeliver

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.

boolean
isLocked
required
Islocked

Locked (workflow or delivery) — uneditable

boolean
canEdit
Canedit

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).

boolean
default: true
stageIndex
Stageindex

Current workflow stage index of this row (0 = first stage).

integer
0
can_create
Can Create

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.

boolean
default: true
target_archived
Target Archived

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.

boolean
target_busy
Target Busy

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.

boolean
Example
{
"translations": {
"auto_abc123": {
"isReady": false,
"rowState": "edited",
"text": "Hola mundo"
}
}
}

Validation Error

Media typeapplication/json
HTTPValidationError
object
detail
Detail
Array<object>
ValidationError
object
loc
required
Location
Array
msg
required
Message
string
type
required
Error Type
string
Examplegenerated
{
"detail": [
{
"loc": [
"example"
],
"msg": "example",
"type": "example"
}
]
}