DEVELOPER DOCUMENTATION
Connect to Translate24.
Use the API from your company’s backend to read service options, create translation orders and follow their progress.
https://api.translate24.pro/v1The API is reachable over the internet. Its business endpoints require authentication; they are not anonymous public data endpoints.
Access & authentication
Contact Translate24 to arrange the account and permissions for your integration. The current API uses account credentials; there is no self-service company key dashboard in this version.
For a native Translate24 account with an issued token, send it in the Authorization header:
Authorization: Bearer YOUR_API_TOKENKeep the token in an environment variable or protected server configuration. Send requests over HTTPS. Do not put tokens in a URL, client-side JavaScript or a public repository.
Never use a stored password hash as an API password. Website SSO links and API authentication are separate mechanisms.
Your first request
After access has been arranged, read your profile. This request does not create an order or charge your balance.
curl --request GET \
'https://api.translate24.pro/v1/user/view' \
--header "Authorization: Bearer $TRANSLATE24_API_TOKEN" \
--header 'Accept: application/json'Set TRANSLATE24_API_TOKEN on your server first. Check the HTTP status and the returned JSON. A successful profile response contains a user object.
Next, read the available language pairs, topics and translation types. Use the returned identifiers when building an order; do not assume example IDs are available for your account.
GET /languages/get-pairsGET /languages/get-themesGET /languages/get-typesGET /order/get-data-for-create-order
Plain PHP
This example uses PHP’s cURL extension and the same read-only profile endpoint. It does not need a framework.
<?php
$token = getenv('TRANSLATE24_API_TOKEN');
if (!is_string($token) || $token === '') {
throw new RuntimeException('API token is not configured.');
}
$ch = curl_init('https://api.translate24.pro/v1/user/view');
if ($ch === false) {
throw new RuntimeException('Unable to initialize cURL.');
}
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_FOLLOWLOCATION => false,
CURLOPT_CONNECTTIMEOUT => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . $token,
'Accept: application/json',
],
]);
$body = curl_exec($ch);
$httpStatus = (int) curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
if ($body === false) {
// Keep diagnostic details in a protected server log.
throw new RuntimeException('API connection failed.');
}
$data = json_decode($body, true, 512, JSON_THROW_ON_ERROR);
if ($httpStatus < 200 || $httpStatus >= 300) {
throw new RuntimeException('API HTTP error: ' . $httpStatus);
}
if (!is_array($data) || isset($data['errors'])
|| !isset($data['user']) || !is_array($data['user'])) {
throw new RuntimeException('Unexpected API response.');
}
$user = $data['user'];Keep the returned profile server-side and show only the fields your application needs. This sample deliberately does not print customer data or authentication headers.
The order lifecycle
- Read the live catalogues. Select a valid language pair, translation type and topic.
- Create a draft. Send
POST /order/create-as-draft. This creates an order record; it does not automatically submit it for paid work. - Review the response. Inspect
errors, the returnedorder, its price andinfoMessage. Some documents may require manual word counting. - Approve and submit.
POST /order/in-work?id=ORDER_ID&pay_by=1can debit a balance and start work. Obtain approval before calling it. - Follow progress. Read
GET /order/view?id=ORDER_IDorGET /order/index. Restrict polling to what your application needs.
Draft request fields
| Field | Meaning |
|---|---|
type | 1: text · 2: files · 3: audio |
source_type | 1: text output · 2: audio output |
language_pair_id | A valid ID from the live catalogue. Alternatively supply from_language_code and to_language_code. |
translate_type_id | A live translation type ID |
translate_theme_id | A live topic ID |
source_text | Source content for a text order |
uploadSourceFiles[] | Multipart uploads for file or audio orders |
user_id | Optional: a client created by the authenticated partner. Otherwise the order belongs to the authenticated account. |
Send form-encoded fields for a text draft and multipart/form-data for uploads. Do not manually set the multipart boundary; let your HTTP client generate it.
For in-work, pay_by=1 uses the authenticated account’s balance; pay_by=2 uses the order owner’s balance. Client billing requires the appropriate partner account and ownership.
Files & audio
For document orders, the current upload validator accepts txt, odt, pdf and docx: up to 5 files, 5 MiB per file. Audio orders accept mp3, ogg and webm: up to 5 files, 15 MiB per file.
Read the response after every upload. If parsing or word counting fails, do not treat a returned order ID alone as approval to start paid work.
Errors & retries
| Result | How to handle it |
|---|---|
| 401 | Check authentication and the account’s access. |
| 403 | Check account type, permissions and the requested operation. |
| 404 | Check the identifier and whether the account owns the record. |
2xx with errors | Treat this as an application failure. Several current write actions return validation errors with HTTP 200. |
| Timeout or 5xx | A write may already have reached the server. Check the resulting state before deciding whether to retry. |
Do not automatically retry order creation, payment or deletion after a timeout. The current API does not publish an idempotency-key contract. Read-only calls may be retried with a bounded delay; avoid tight polling loops.
Accounts from the external database
External accounts use their supported Basic authentication path and are restricted to reading their own profile and translation history, plus the allowed catalogues. They cannot create, submit or delete orders through this identity.
Do not promise write access by reusing an external customer login. Arrange a native integration or partner account with the appropriate permissions.
Endpoint reference
Paths below are relative to https://api.translate24.pro/v1. Availability depends on the authenticated account’s permissions.
| Method | Path | Purpose |
|---|---|---|
| GET | /user/view | Your profile |
| GET | /user/list | Clients created by a partner |
| POST | /user/registration | Create a partner’s client |
| POST | /user/delete | Delete a partner’s client |
| GET | /order/index | Your orders and permitted client orders |
| GET | /order/view | Order details |
| GET | /order/get-data-for-create-order | Options for creating an order |
| POST | /order/create-as-draft | Create a draft record |
| POST | /order/in-work | Approve payment and start work |
| POST | /order/delete | Delete an eligible order |
| GET | /languages/get-pairs | Language pairs |
| GET | /languages/get-themes | Topics |
| GET | /languages/get-types | Translation types |
For the existing parameter schemas, open the Swagger reference with your documentation login. For integration access, contact Translate24.