Limits & quotas

The numbers below are the ones this deployment enforces right now. A deployment can be configured differently, so treat the shape of the contract — which limit exists, and what it returns — as the stable part.

Requests

Limit Value Where it applies What you get back
Absolute request body size 30,000,000 bytes Every request. Checked against the declared length up front, then against the streamed body, so a chunked or undeclared body is covered too. 413 — the body is never parsed.
Declared body size 10,000,000 bytes POST /api/translations text submissions — JSON and raw bodies, read from the Content-Length header before the body is parsed into memory, and text files uploaded as a form. A PDF, Word or Excel upload to that endpoint is held to the absolute ceiling above instead. 413 — nothing is translated.
Source text length 50,000 characters Each source_text, or each inputs[].Text in the batch shape, on POST /api/translations. 413 — split the text and submit it as a batch.
Batch size 50 translations POST /api/translations, counted as the total number of translations — the sum of Targets across all inputs, not the number of inputs. 413 — nothing in the batch runs.
Page count (text flow) 50 pages A text document submitted to POST /api/translations is split into pages of at most 5,000 characters, and the page count is checked against the same ceiling as a batch. 413 — nothing runs.

A single POST /api/translations runs the whole pipeline inline and returns the finished job, so size your HTTP client timeout for pipeline latency rather than for a queue acknowledgement. If it times out client-side, resend with the same Idempotency-Key instead of treating it as a failure.

Documents

Limit Value Where it applies What you get back
Upload size 30,000,000 bytes POST /api/documents/translate, and a PDF, Word or Excel file uploaded to POST /api/translations, under the same absolute body ceiling as every other request. 413 — the upload is not stored.
Per-stage budget 1800 seconds per stage, retries included Each stage of document processing, server-side. A transient failure inside a stage — a rate limit, a dropped connection — is retried automatically, up to 2 times, within that same budget; you do not resubmit. The job fails with failure code stage_timeout, and the stage is not retried: its work is fixed by the document, so resubmitting the same file unchanged is likely to run out of time again — split it instead.
Page count No page ceiling on the layout path A layout-preserving PDF, Word or Excel job is bounded by the upload size — and a Word or Excel file also by the limits below — not by a page count. The 50-page ceiling above applies only to the text flow. —
Unpacked size (Word, Excel) 200,000,000 bytes What the file’s contents add up to once unzipped. Word and Excel files are compressed packages, so a small upload can unpack to far more than its own size. 400 before a job exists — split the file.
XML read in one piece (Word, Excel) 80,000,000 bytes The parts of a Word document that are read whole, taken together; for a workbook, its shared-strings table. 400 before a job exists.
XML elements (Word) 1,000,000 elements Across the parts of a Word document that are read whole. 400 before a job exists.
Translatable text per document (Word, Excel) 2,000,000 characters The text one document may hold for translation. Word: 400 before a job exists. Excel: counted as the workbook is read, so the job fails at its extract stage (400 with wait=true).
Translatable segments per document (Word, Excel) 50,000 segments The pieces a document is translated in — paragraphs in Word, distinct cell texts in Excel — counted as the file is read. The job fails at its extract stage (400 with wait=true).

Document jobs are asynchronous by default: the submit returns 202 with a queued job to poll. Send wait=true to run it inline instead — that request stays open until the last stage has finished, which can take minutes on a large document, so poll rather than wait for anything but small files.

Translation memory & terminology

Limit Value Where it applies What you get back
Translation-memory segments 50,000 per workspace and language pair TMX import on POST /api/tm, counted after duplicate sources collapse and across every set you hold for that pair, the approved golden set included; pt-BR and pt-PT are separate pairs, as are fr and fr-CA. A same-name re-import replaces its set wholesale, so that set's own segments do not count against you. 422 with a string detail beginning tm_max_segments_exceeded:. The whole import is refused and nothing is stored.
Terminology entries 2,000 per workspace and language pair POST /api/terminology, counted across every set you hold for the pair. Pairs match on the language each code stands for, so en-US and en share one budget while pt-BR and pt-PT have one each, as do fr and fr-CA, and a set with no declared pair counts against every pair. 422 with a string detail beginning terminology_max_terms_exceeded:. The whole upload is refused and nothing is stored.
Set name length 128 characters POST /api/terminology and POST /api/tm. 400 with a detail naming the ceiling.
Asynchronous import threshold 5,000 segments POST /api/tm, counted after duplicate sources collapse. At or under it the import runs inline. Above it, 202 with a job to poll at GET /api/tm/imports/{job_id}. Not an error — every rejection stays synchronous at both sizes, so a 202 already means the file parsed and the capacity check passed.

Both allowances are counted per language pair, so filling the English → French budget leaves every other pair untouched. When a pair is at its memory cap, approvals still succeed: pairs the memory cannot take are skipped and counted on the job rather than failing the approval, and a correction to a source the memory already holds is admitted even at the cap.

Usage & billing

Limit Value Where it applies What you get back
Monthly allowance — Personal 500,000 source characters Billable translations in the current UTC calendar month, counted from when your current plan took effect if that was later — see below. 429 with tenant usage limit exceeded, continuing with the remedies your workspace actually has.
Monthly allowance — Pro 1,500,000 source characters Billable translations in the current UTC calendar month, counted from when your current plan took effect if that was later — see below. 429 with tenant usage limit exceeded, continuing with the remedies your workspace actually has.
Monthly allowance — Studio 5,000,000 source characters Billable translations in the current UTC calendar month, counted from when your current plan took effect if that was later — see below. 429 with tenant usage limit exceeded, continuing with the remedies your workspace actually has.
Monthly allowance — default 500,000 source characters A workspace with no subscription-set allowance of its own. 429 — the same hard stop.
Dense-script weight 3.5× Every pair with a Chinese, Japanese, Korean, Thai, Hindi, Marathi or Nepali side, on either end. Applied once, not squared, when both sides are dense. See Supported languages. The weighted count is what the allowance check reads, so a request can be refused with 429 that would have passed unweighted.
Deployment ceiling 10,000,000 characters per month Allowance and top-ups combined, per workspace per UTC calendar month — a plan change mid-month does not reset it. It bounds top-up headroom and the outstanding prepaid balance; a negotiated enterprise allowance above it is not clamped down by it. 429 when a request would take the month past it, asking you to contact us — nothing bought on /billing can add to it. 409 on a top-up that would push the outstanding balance past the ceiling — spend the balance you have first — and on any top-up for an allowance that already reaches it. Beyond this volume the conversation is an enterprise one — talk to us.
Free trial 150,000 characters over 14 days New workspaces, whichever runs out first. Text translation from the workspace only: layout-preserving document jobs and API keys are not trial-covered. 402 saying why — the characters are used up, the days have run out, the request needs more characters than remain, or it is a document or API-key request the trial does not cover — with /billing as the way on.
Trial grants per network address 3 per 24 hours Sign-up, as an anti-abuse gate on the grant, not on the account. Sign-up past the gate still gets a working workspace — just without the trial characters.
Top-up packs per purchase 5 packs POST /api/billing/topup. Top-ups are always a deliberate purchase; nothing is ever charged automatically as an overage. 400 with a detail naming the per-purchase ceiling.

The allowance counts billable translations in the current UTC calendar month, starting from the moment your current plan took effect if that came later: subscribing or changing plan starts the count again, so free-trial usage never eats into a first paid month and usage under an old plan never counts against a new one. The deployment ceiling counts the whole calendar month regardless. Text is checked from the payload before any work starts, together with everything you still have in flight. A document is checked twice: at submission, for any room left at all, and again once extraction has counted its characters, before any of it is translated. A document larger than the room left is admitted whole; one that finds none fails with failure code quota_exceeded, untranslated and unbilled (429 with that error_code when submitted with wait=true).

Running out of allowance stops new work; it does not bill you for it and it does not queue anything to bill you for later. Your options are a top-up, an upgrade — which applies at once and is charged the prorated difference — or waiting for the month to roll, all of them things you choose. Once the month reaches the deployment ceiling, only the next month, or a conversation with us, adds room. See the pricing FAQ.

Rate limits

Limit Value Where it applies What you get back
Authentication attempts 30 per 60-second window Per client address, per endpoint bucket — sign-up, the password and MFA grants, MFA code verification, enrolment, recovery, invite preview, password reset and the single sign-on legs each get their own budget; the MFA grant and MFA code verification are also counted per sign-in challenge. 429 too many requests — slow down and retry later, with a Retry-After header. Honor it; do not retry inside the window.
MFA codes per sign-in challenge 5 codes Each MFA challenge a sign-in issues, counting authenticator and recovery codes sent to POST /api/auth/mfa/verify and to the MFA grant on POST /api/oauth2/token together. The next attempt burns the challenge: 401 invalid or expired MFA challenge. Start again from the password step.
Failed MFA codes per user 10 per 15 minutes Each user, across all their sign-in challenges and whatever the client address. Correct codes do not count. 429 too many MFA attempts — wait a few minutes, then sign in again, with a Retry-After header.
Top-up purchase velocity 5 attempts per 1-hour window POST /api/billing/topup, per client address and per workspace. Both budgets are consumed on every attempt, and this limiter is independent of the authentication one. 429 with too many top-up attempts — slow down and retry later and a Retry-After header.

Storage

Limit Value Where it applies What you get back
Platform storage cap Off on this deployment Document uploads: POST /api/documents/translate, checked against the declared body size before the upload is parsed, and a PDF, Word or Excel upload to POST /api/translations, checked against the same declared size before any job is created. Skipped entirely for a workspace bound to its own storage — those bytes never rest on the platform volume. 507, with a detail reporting bytes used of bytes allowed and naming both remedies: delete document jobs you no longer need, or bring your own storage.
Note: the cap is a cap, not a meter. Stored bytes are never billed; the cap only decides when a new upload is refused.

Pagination & ranges

Limit Value Where it applies What you get back
Segments page size 1–500, default 100 GET /api/documents/{document_id}/segments. 422 with the framework's array detail.
Usage date range 366 days GET /api/tenants/usage/daily. 400 date range must not exceed 366 days.

Most collection endpoints return complete collections and need no paging. The exception is the TMX import listing, which is a recent-activity view capped at the newest jobs with no way to page past them — keep the job id from the 202 if you need a specific import later.


What's next