DEVELOPER DOCUMENTATION

Connect to Translate24.

Use the API from your company’s backend to read service options, create translation orders and follow their progress.

Base URLhttps://api.translate24.pro/v1

The 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_TOKEN

Keep 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 · read-only
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-pairs
  • GET /languages/get-themes
  • GET /languages/get-types
  • GET /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 · native account
<?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

  1. Read the live catalogues. Select a valid language pair, translation type and topic.
  2. Create a draft. Send POST /order/create-as-draft. This creates an order record; it does not automatically submit it for paid work.
  3. Review the response. Inspect errors, the returned order, its price and infoMessage. Some documents may require manual word counting.
  4. Approve and submit. POST /order/in-work?id=ORDER_ID&pay_by=1 can debit a balance and start work. Obtain approval before calling it.
  5. Follow progress. Read GET /order/view?id=ORDER_ID or GET /order/index. Restrict polling to what your application needs.

Draft request fields

FieldMeaning
type1: text · 2: files · 3: audio
source_type1: text output · 2: audio output
language_pair_idA valid ID from the live catalogue. Alternatively supply from_language_code and to_language_code.
translate_type_idA live translation type ID
translate_theme_idA live topic ID
source_textSource content for a text order
uploadSourceFiles[]Multipart uploads for file or audio orders
user_idOptional: 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

ResultHow to handle it
401Check authentication and the account’s access.
403Check account type, permissions and the requested operation.
404Check the identifier and whether the account owns the record.
2xx with errorsTreat this as an application failure. Several current write actions return validation errors with HTTP 200.
Timeout or 5xxA 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.

MethodPathPurpose
GET/user/viewYour profile
GET/user/listClients created by a partner
POST/user/registrationCreate a partner’s client
POST/user/deleteDelete a partner’s client
GET/order/indexYour orders and permitted client orders
GET/order/viewOrder details
GET/order/get-data-for-create-orderOptions for creating an order
POST/order/create-as-draftCreate a draft record
POST/order/in-workApprove payment and start work
POST/order/deleteDelete an eligible order
GET/languages/get-pairsLanguage pairs
GET/languages/get-themesTopics
GET/languages/get-typesTranslation types

For the existing parameter schemas, open the Swagger reference with your documentation login. For integration access, contact Translate24.