Skip to content

api.transglot.ai/v1bearer token, one projectthe developer surface

Push a file. Get every language back.

A REST API for translating your app. One POST uploads the source file, one GET brings back a finished locale, and a bearer token is the whole of the auth. Anything that speaks HTTP can drive it.

in: one call
curl -X POST https://api.transglot.ai/v1/push \
-H "Authorization: Bearer $TRANSGLOT_TOKEN" \
-F "file=@lang/en.json" \
-F "format=laravel_json"
202 accepted · batch queued
out

300,000

words a month on Starter, the first plan that can mint a token.

Start for freeSee the developer surface
60 requests a minute per token · every 429 carries a Retry-After · give CI and production separate tokens
one route per action

Push, translate, gate and pull, each one a REST endpoint.

Every row in the picture below has a route behind it: push, gates, glossary, batches and pull, all reachable from your own code with a project token. The API playground in the console runs the read-only ones live against your project, so you see a real response first.

app.transglot.ai
acme/app · mainpush
gatesplaceholders · plurals · glossary · length
glossary"boring" locked
batch 4181running
pullde-DE · json
  1. You upload a source file
    POST/v1/push
  2. The gates panel fills in
    POST/v1/qa/run
  3. You lock a term
    POST/v1/glossary
  4. The batch view polls itself
    GET/v1/batches/:id
  5. You take the translations back
    GET/v1/pull
one route per panel, 60 a minute, abilities per token · getting your translations out is an endpoint too
it's just http

Four things teams build first.

each one is a single endpoint and a project token · none of them takes an afternoon
merge gate · a few lines of yaml

Turn the pull request red when a translation fails.

cron · nightly

Translate the release notes overnight, every night.

bot · one subscription

Post to Slack the moment a batch finishes.

agent · mcp

Give an AI agent the same 16 tools you have.

requests a minute
60

per token, not per account, with a Retry-After header on every 429 saying how many seconds to wait.

file formats
20

push and pull the format your repository already uses. Plurals and placeholders survive both directions. Name it with format= on either call.

webhook events
12

the whole catalog, each with an example payload in the exact shape a real delivery carries. GET /v1/webhooks/events.

mcp tools
16

the same project token, handed to an agent runtime instead of to curl. npx -y @transglot/mcp.

FAQs

What developers ask before the first request.

How do I authenticate with the Transglot API?
Send a bearer token: Authorization: Bearer $TRANSGLOT_TOKEN. The token belongs to one project, so there is no project id in the path and no account-wide key to leak. You create tokens on the project page and each one carries its own abilities: push, pull, manage, read, write.
No. A bearer token starts on the Starter plan at $19 a month. Free covers the console, which is enough to see whether the product fits, but it cannot mint a token. The CLI, the GitHub Action, webhooks, MCP and the delivery bundle all sit behind that same token, so they arrive together.
POST /v1/push with the file and its format, for example -F "file=@lang/en.json" -F "format=laravel_json". It answers 202 and queues a batch. Only the rows that actually changed are translated, so pushing an unchanged file costs nothing.
GET /v1/pull, in any of the 20 formats, whenever you like. It is the endpoint the CLI wraps, and the one the API playground runs live. There is no export request to file and no window in which the data stops being yours.
60 requests a minute, counted per token rather than per account. Over it you get a 429 with a Retry-After header saying how many seconds to wait, and nothing is charged or half written. Give CI and production separate tokens and a noisy build cannot starve your app.
There is no fixed list. The validator accepts any BCP-47 tag ICU recognises, which is 708 locales in the table it checks against, plus a structural fallback for tags outside it. Add a locale to the project and the next push includes it.
Twenty: JSON flat and nested, Laravel PHP and JSON, Android XML, iOS .strings, .stringsdict and .xcstrings, Flutter ARB, XLIFF 1.2 and 2.0, gettext .po, YAML, CSV, XLSX, Java properties, RESX, Markdown, Unity CSV and Unreal PO. Seven of them carry plurals, and the file comes back in the shape it went in.
Yes. There are 12 webhook events, including batch.completed, translation.reviewed, qa.completed and source_drift.repaired. Every delivery is HMAC signed with a timestamp header so you can verify it, and GET /v1/webhooks/events returns the catalog with a sample payload for each one.
Yes. npx -y @transglot/mcp exposes 16 tools over your project token, so an assistant can read a translation, write one, start a run, check a batch or edit the glossary. It is the same API and the same permissions, reached from an agent runtime instead of from curl.
Yes. The GitHub Action (transglot/transglot-action@v1) and the CLI both wrap these endpoints. A run that fails a quality gate fails the check, so a broken translation stops at the pull request instead of reaching a customer.
Four deterministic gates read every row: placeholders, plurals, glossary terms and length. A failing row gets one automatic corrective retry, and if it still fails it is held for review rather than shipped. GET /v1/batches/:id reports the outcome row by row.
No. /v1 only ever gains endpoints and response fields; a field you already parse does not change shape or disappear. A breaking change would ship under a new version prefix, which is reserved and still empty. The API changelog records every release.
four minutes, one terminal

Write the first request today.

no card to start · a token arrives on Starter and above · the console runs the read endpoints live
Works with the tools you already run