The API is what the app, the CLI and the MCP server use. Everything you can do in the app, you can do with the API.
Base URL #
TEXT
https://api.continuous-translations.comAll routes on the endpoint pages are relative to it.
Your first request #
Create an API key under Account settings, see Authentication, and list your projects:
SH
curl https://api.continuous-translations.com/projects \
-H "Authorization: Bearer $CT_API_KEY"The key needs the projects:read scope. The answer is a JSON list of projects, see List projects.
Requests #
- Send the token in the
Authorizationheader:Authorization: Bearer <token>. Only registration, login, password reset, invitations and the webhooks of GitHub and GitLab work without one. - Send request bodies as JSON, with
Content-Type: application/json. Query parameters go in the URL. - Ids are UUIDs, for example
0197a3c2-5b1e-7c4a-9d2f-3e8b6a1f0c55. A path with an id that is not a UUID returns404. - Language codes are lower case, such as
en-gborde. See Languages and time zones.
Responses #
- Answers are JSON. A route that has nothing to say answers
204with no body, and some202or201without one. The endpoint page says which. - Timestamps are ISO 8601 with an offset, for example
2026-10-16T09:30:00+00:00. - Fields ending in
Minutes, such asageMinutes, say how many minutes ago something happened. - Every response carries
RateLimit-*headers, see Rate limiting.
| Status | Meaning |
|---|---|
200 | Done, the answer is in the body |
201 | Created |
202 | Accepted |
204 | Done, no body |
4xx | The request is wrong, see Errors |
5xx | Something went wrong on our side, or at GitHub or GitLab |
Where to go next #
- Authentication to choose a token
- Endpoints for every route
- Pull translations for your build for the most common use