API

Limits and errors

AI rate limits, validation rules, the error response shape, and every error code you can hit.

Not verified yet

Rate limits

AI translation shares one budget across the whole product — the manual translation endpoint, single-cell recommendations, batch auto-translate, and the AI work triggered by imports and sync jobs:

LimitValue
Per organization200 AI calls per hour
Per user50 AI calls per hour

Both must pass; exceeding either returns 429 TOO_MANY_REQUESTS. The window is rolling — wait and retry.

Public-API translation reads are not rate-limited this way; they're metered as API usage for billing. See Platform → Limits for platform-wide quotas and where to see your current usage.

Billing gate

Write operations that create billable resources (creating namespaces, terms, glossary items, API keys, running AI translation) are refused with 402 ORG_BLOCKED while your organization is blocked over unpaid invoices. Reads keep working. See Platform → Billing → Dunning.

Validation rules

FieldRule
Namespace nameLetters, digits, hyphens, underscores (^[a-zA-Z0-9\-_]+$); unique per organization; case-sensitive.
Custom language codeStarts with a lowercase letter; lowercase letters, digits, hyphens, underscores; 1–32 chars; unique per organization; immutable.
Custom language name1–128 characters.
Term markNon-empty; unique per namespace.
Glossary item value / translationNon-empty after trimming.
Custom prompt name / textNon-empty.

Error response shape

Every error is JSON with two fields:

{
  "type": "INVALID_PAYLOAD",
  "msg": "The payload is invalid."
}

type is stable and meant for your code; msg is human-readable detail that may change.

Error codes

HTTPtypeMeaning
400INVALID_PAYLOAD / INVALID_REQUESTMalformed body or parameters — msg says what.
400INVALID_NAMEA name field fails its validation rule (see above).
400NO_TRANSLATION_SOURCEAI translation requested for a term that has no non-empty value in any language — fill in the source first.
400EMPTY_VALUEA required value was empty.
401INVALID_TOKENSession token missing, malformed, or expired.
401UNAUTHORIZEDAPI key missing, revoked, or unrecognised; or the namespace isn't accessible.
402ORG_BLOCKEDOrganization blocked for unpaid invoices.
403FORBIDDEN / INSUFFICIENT_PERMISSIONSAuthenticated, but you lack permission — including reading someone else's private custom prompt or a resource in another organization.
404NOT_FOUNDThe resource doesn't exist — including a glossary that hasn't been created yet.
409CONFLICTDuplicate: namespace name, term mark, custom language code, second glossary — or deleting a custom language still attached to a namespace.
429TOO_MANY_REQUESTSAI rate limit exceeded (see above).
500INTERNAL_SERVER_ERRORUnexpected server error — safe to retry with backoff.

Behaviour during platform incidents

Live status: status.norcube.com. Reads are prioritised during degradation; background work (batch translation, sync jobs, imports) is resumable by design and picks up where it left off — see Sync jobs.

On this page