Изображение Facebook
03 Часы 10 Минут 31 Сек
Документация для разработчиков

API RapidTranslate

Программное размещение и отслеживание заказов на сертифицированный перевод документов. REST API по протоколу HTTPS с аутентификацией с помощью токена «bearer» и возвратом данных в формате JSON — с подписанными веб-хуками для каждого события.

Базовый URL https://www.rapidtranslate.org/api/v1
Версия v1
Формат JSON
create-order.sh
curl -X POST https://www.rapidtranslate.org/api/v1/orders \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -F "reference=APO-10432" \
  -F "source_language=Spanish" \
  -F "target_language=English (US)" \
  -F "translation_type=certified" \
  -F "files[]=@document.pdf"

 {
  "id": "9b1c2d3e-…",
  "status": "pending",
  "livemode": true
}

Введение

API RapidTranslate позволяет вашему приложению отправлять документы на заверенный перевод, получать актуальную информацию о статусе и стоимости, а также получать готовые файлы — при этом вашей команде не нужно взаимодействовать с нашей системой оформления заказов. Этот сервис предназначен для компаний, которые размещают заказы на перевод от имени своих клиентов.

Все запросы направляются по адресу https://www.rapidtranslate.org/api/v1 через HTTPS. Запросы и ответы передаются в формате JSON, за исключением создания заказа, при котором файлы загружаются в виде multipart/form-data. Все суммы возвращаются в виде целые центы в долларах США, а все временные метки указаны в формате UTC по стандарту ISO‑8601.

Получение доступа. Доступ к API предоставляется учетным записям организаций. Добавьте свою компанию в личный кабинет, а затем сгенерируйте ключи в разделе «Настройки компании» → «Ключи API». Если у вас еще нет учетной записи компании, обратитесь по адресу support@rapidtranslate.org.

Коллекция «Почтальон»

Предпочитаете сначала ознакомиться с API, прежде чем приступать к написанию кода? В нашей коллекции Postman все конечные точки уже настроены — включая аутентификацию, примеры тел запросов и параметры запроса.

Скачать коллекцию Postman

  1. В Postman выберите «Файл » → «Импорт» и выберите загруженный файл.
  2. Откройте коллекцию Переменные и установить apiKey в ключ из Настройки бизнеса → Ключи API.
  3. (Необязательно) Установить baseUrl для вашей среды — по умолчанию установлено значение «production».
  4. Отправляйте любые запросы. Используйте ключ «Sandbox» для тестирования без размещения платных заказов.

Аутентификация

Аутентифицируйте каждый запрос с помощью своего секретного ключа API в качестве токена «bearer» и запросите ответ в формате JSON. Оба заголовка являются обязательными:

Авторизация: Bearer YOUR_API_KEY
Принимаемые форматы: application/json

Создавайте и обновляйте ключи в панели управления в разделе «Настройки бизнеса» → «Ключи API». Ключи отображаются только один раз при создании и хранятся в хешированном виде — если вы потеряли ключ, обновите его. Каждый ключ относится к одному режиму («Производственная среда» или «Тестовая среда») и имеет фиксированный набор областей доступа.

Области применения

Каждому конечному пункту требуется определённая способность ключа. Если у ключа отсутствует требуемый диапазон, возвращается 403 запрещённый_область_применения.

Область примененияГранты
заказы:записьСоздание и утверждение заказов
заказы:прочитатьПолучить и отобразить заказы
цена:читатьОзнакомьтесь с прайс-листом
Держите ключи в секрете. Активный ключ позволяет оформлять заказы, подлежащие оплате. Ни в коем случае не раскрывайте его в коде на стороне клиента, браузерах или общедоступных репозиториях.

Пробная версия и тестовый режим

Тестовый режим является свойством ключа, а не вашей учетной записи. Ключ «Sandbox» работает в полностью смоделированной среде; ключ «Live» использует для размещения реальных заказов, подлежащих оплате. Вы можете использовать оба ключа одновременно.

Заказы в тестовой среде проходят ту же проверку, сопоставление полей и расчет реальной стоимости, но при этом не включают хранение файлов, OCR и выполнение заказа. При создании заказ в тестовой среде автоматически проходит весь свой жизненный цикл (обработка → завершена), запуская те же веб-хуки, что и при обработке реального заказа, и, наконец, предоставляя статический образец документа.

Каждый ответ и веб-хук содержит режим реального времени Укажите этот флаг, чтобы ваша интеграция могла создавать ветки без проверки ключа:

  • livemode: true — реальный заказ, подлежащий выставлению счета
  • livemode: false — тестовая среда / тестовый заказ

Ограничения по скорости

На количество запросов на одну организацию установлено ограничение. По умолчанию разрешено 120 запросов в минуту. При превышении этого значения возвращается 429 rate_limited; попробуйте ещё раз через некоторое время. Если для вашей интеграции требуется более высокий лимит, обратитесь к support@rapidtranslate.org.

Ответы

Каждый успешный ответ упаковывает свои данные в данные ключ. В конец списка добавьте мета блок с пагинацией.

Один ресурс

{
  "data": {
    "id": "9b1c...-uuid",
    "reference": "APO-10432",
    "status": "processing",
    "total": 11270,
    "currency": "USD"
  }
}

Список с нумерацией страниц

{
  "data": [ ... ],
  "meta": {
    "current_page": 1,
    "per_page": 25,
    "total": 134,
    "last_page": 6
  }
}

Ошибки

Ошибки используют стандартные коды статуса HTTP и возвращают стабильный, машиночитаемый код_ошибки наряду с текстом, введенным пользователем. Ошибки проверки добавляют поле с ключом ошибки объект.

{
  "message": "The given data was invalid.",
  "error_code": "validation_failed",
  "errors": {
    "source_language": ["The selected source language is invalid."]
  }
}
HTTPкод_ошибкиЗначение
400bad_requestНекорректный текст запроса
401без аутентификацииОтсутствующий, недействительный или отозванный ключ
402оплата не прошлаЗаказ утвержден, но оплату не удалось принять
402credit_holdСумма заказа превышает ваш кредитный лимит
403запрещённая_областьKey не имеет необходимого объема
403аккаунт_заблокированОрганизация приостановлена за неуплату счетов
404not_foundДля этой организации такого заказа нет
409дубликат_ссылкиСсылка использована повторно для другого заказа
409не_ожидает_утвержденияЗаказ не ожидает вашего одобрения
422проверка не прошлаОтсутствующие или недопустимые поля
429rate_limitedПревышен лимит запросов
500ошибка_сервераНеожиданная ошибка сервера
503Ошибка обработкиОшибка при последующей обработке (OCR / определение цены)

Статусы заказов

Порядок статус проходит стабильный жизненный цикл. Эти пять значений также являются теми, которые приняты в статус включить фильтр Список заказов:

СтатусЗначение
в процессе рассмотренияПолучено; расчет стоимости ещё не завершён. всего возможно null.
ожидание_утвержденияСтоимость рассчитана, ждем вашего подтверждения итоговой суммы (только в случае, если требуется подтверждение).
обработкаУтверждено и находится в активном состоянии; перевод ведётся.
завершеноРабота завершена; переведенные документы готовы.
отмененоЗаказ был отменен.

Пока выполняется заказ, используются более детализированные метки (например, Назначено переводчику, Перевод, Отправлено) также может появиться. Если требуется утверждение, в заказе может быть кратко указано оплата не прошла или credit_hold если оплату не удалось принять — уточните способ оплаты и подтвердите заказ заново.

Список языков

ПОЛУЧИТЬ /языки

Возвращает список всех поддерживаемых языков. Используйте имя дословно перевести как исходный язык / target_language при создании заказа — заказы сопоставляются по названию языка, а не по коду.

Требуется ключ с авторизацией.

curl https://www.rapidtranslate.org/api/v1/languages \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Accept: application/json"
{
  "data": [
    { "code": "english-uk", "name": "English (UK)", "active": true },
    { "code": "spanish",     "name": "Spanish",      "active": true }
  ]
}

Получить прайс-лист

ПОЛУЧИТЬ /цены

Возвращает прайс-лист по базовым тарифам для США в долларах США, на основании которого выставляются счета за ваши заказы. Суммы представлены в виде десятичных строк. Цены сгруппированы по перевод тип (каждый с обычный и быстрый на‑единица цена), доставка метод, и апостиль — те же значения, которые вы указываете при оформлении заказа.

Область применения: цена:читать

{
  "data": {
    "country":  { "code": "US", "name": "United States" },
    "currency": { "code": "USD", "symbol": "$" },
    "translation": {
      "certified":   { "unit": "page", "regular": "27.99", "rapid": "37.99" },
      "standard":    { "unit": "word", "regular": "0.11",  "rapid": "0.15" },
      "specialized": { "unit": "page", "regular": "47.99", "rapid": "57.99" },
      "naati":       { "unit": "page", "regular": "42.99", "rapid": "52.99" },
      "sworn": {
        "unit": "page",
        "note": "Sworn pricing depends on the language pair.",
        "language_pairs": [
          { "languages": ["Spanish","English"], "unit": "page", "regular": "57.99", "rapid": "67.99" },
          { "languages": ["Polish","English"],  "unit": "page", "regular": "46.99", "rapid": "56.99" }
        ]
      }
    },
    "delivery": {
      "email": "0.00", "notarized_email": "19.99",
      "mail_standard": "29.99", "mail_next_day": "55.00"
    },
    "apostille": { "base": "79.00", "additional_document": "15.00" }
  }
}

Официальные цены. Стоимость присяжного перевода рассчитывается за каждую языковую пару. языковые пары содержит список всех пар, имеющих право на присягу, с указанием для каждой из них обычный/быстрый цена. Допускается любой вариант английского языка (английский (США/Великобритания/Австралия/Канада)), и каждая пара работает в обоих направлениях, если только она не содержит "bidirectional": false.

Создать заказ

ПОСТ /заказы

Создает заказ на перевод и загружает исходные файлы. Поскольку этот конечный пункт передаёт файлы, он использует multipart/form-data (не JSON). Для вложенных полей используется запись в квадратных скобках, например: клиент[имя].

Область применения: заказы:запись

Параметры тела

ПолеТипПримечания
ссылкастрока обязательнаВаш уникальный идентификатор заказа. Повторный вызов с этим идентификатором возвращает существующий заказ (см. идемпотентность).
клиент[имя]строка обязательнаПолное имя конечного клиента.
клиент[email]строка обязательнаЭлектронная почта конечного клиента.
исходный языкстрока обязательнаТочная формулировка имя из Список языков.
target_languageстрока обязательнаТочная формулировка имя из Список языков.
тип_переводастрока обязательнаОдин из сертифицированный, стандартный, специализированный, под присягой, наати.
разворотстрока обязательнаобычный или быстрый.
доставка[способ]строка обязательнаОдин из электронная почта, нотариально заверенное электронное письмо, mail_standard, доставка_на_следующий_день.
доставка[адрес][...]объектТребуется для mail_standard / доставка_на_следующий_день: улица, город, почтовый_индекс, страна (государство (необязательно). страна — это код ISO, например: США.
апостиль [включено]логическое значениеДобавить услугу оформления апостиля. См. правила ниже.
апостиль [документы]целое числоКоличество документов, подлежащих апостилированию. Указывается при необходимости.
апостиль [страна назначения]строкаСтрана, для которой предназначена апостиль.
примечаниястрокаИнструкции в виде свободного текста.
код_купонастрокаКод скидки для применения. Явно недействительные или неприменимые коды отклоняются на этапе создания с помощью 422 Ошибка проверки; сама скидка фиксируется после определения стоимости заказа (см. примечание ниже).
файлы[]file[] — обязательный параметр1–20 файлов. Допустимые форматы: pdf, jpg, jpeg, png, doc, docx, tiff, heic. Максимальный размер каждого файла — 20 МБ.
Идемпотентность. ссылка является уникальным для каждой организации. Повторное выполнение команды создания с теми же ссылка возвращает существующий заказ с 200 вместо того, чтобы создавать дубликат (новый заказ возвращает 201).
Правила апостилирования. Апостиль предоставляется только в том случае, если языком перевода является английский (в любом варианте), и при оформлении таких заказов необходимо использовать mail_standard способ доставки. доставка_на_следующий_день Доставка осуществляется только по адресам в США.

Пример

curl -X POST https://www.rapidtranslate.org/api/v1/orders \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Accept: application/json" \
  -F "reference=APO-10432" \
  -F "customer[name]=Jane Doe" \
  -F "customer[email]=jane@example.com" \
  -F "source_language=Spanish" \
  -F "target_language=English (US)" \
  -F «translation_type=certified» \
  -F «turnaround=regular» \
  -F «delivery[method]=email» \
  -F «files[]=@/path/to/birth-certificate.pdf»
{
  "data": {
    "id": "9b1c2d3e-...-uuid",
    "reference": "APO-10432",
    "livemode": true,
    "status": "pending",
    "source_language": "Spanish",
    "target_language": "English (US)",
    "translation_type": "certified",
    "turnaround": "regular",
    "total": null,
    "currency": "USD",
    "created_at": "2026-08-28T10:15:00+00:00"
  }
}

Вновь созданный заказ начинается как в процессе рассмотрения с null Общая сумма при расчете цены. Опрос Получить заказ или прислушаться к статус_заказа веб-хук для просмотра обновлений цены и статуса.

Купоны. A код_купона проверяется в два этапа. На этапе создания мы проверяем то, что не зависит от объёма документа — правильность кода, ограничения по использованию и типы переводов/услуг, к которым он применяется — и сразу отклоняем некорректный код. Правила, зависящие от количества страниц или слов (а также от самой суммы скидки), применяются после подсчёта объёма документа, поэтому скидка отображается на по цене общая сумма, а не начальная в процессе рассмотрения ответ. Если после определения количества товара выясняется, что купон не действует, заказ всё равно оформляется по полной цене и помечается для проверки нашей командой.

Получить заказ

ПОЛУЧИТЬ /orders/{id}

Извлекает один заказ по его id (UUID, возвращаемый при создании). Возвращает 404 не найдено если заказ не относится к вашей организации.

Область применения: заказы:прочитать

curl https://www.rapidtranslate.org/api/v1/orders/9b1c2d3e-...-uuid \
  -H "Authorization: Bearer ВАШ_API_КЛЮЧ" \
  -H "Accept: application/json"

Список заказов

ПОЛУЧИТЬ /заказы

Возвращает заказы вашей организации, начиная с самых новых, с разбиением на страницы в мета. Все параметры запроса являются необязательными.

Область применения: заказы:прочитать

ЗапросПримечания
статусОдин из в процессе рассмотрения, ожидание_утверждения, обработка, завершено, отменено.
ссылкаОтфильтруйте по своему справочному номеру.
исходный язык / target_languageФильтрация по названию языка.
created_from / created_toДиапазон дат (включительно).
сортировать-created_at (по умолчанию, сначала самые новые) или created_at (сначала самые старые).
на страницу1–100. По умолчанию используется стандартный размер страницы.
страницаНомер страницы.
curl "https://www.rapidtranslate.org/api/v1/orders?status=completed&per_page=50" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Accept: application/json"

Утвердить приказ

ПОСТ /orders/{id}/approve

Утверждает рассчитанную общую сумму заказа, которая составляет ожидание_утверждения, запуская его для выполнения. Это необходимо только в том случае, если для вашей учетной записи требуется одобрение перед началом работы. Вызов является идемпотентным.

Область применения: заказы:запись

curl -X POST https://www.rapidtranslate.org/api/v1/orders/9b1c2d3e-...-uuid/approve \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Accept: application/json"

В случае успешного выполнения возвращается обновленный заказ. Если заказ не находится на рассмотрении, вы получаете 409 не_ожидает_утверждения; если требуется выполнить операцию, но она завершается с ошибкой, вы получаете 402 Ошибка оплаты или 402 credit_hold.

Значения полей

Фиксированные наборы, принимаемые при создании заказа.

Типы переводов

ЗначениеОписание
сертифицированныйЗаверенный перевод (оплата за страницу).
стандартныйСтандартный перевод (оплата за слово).
специализированныйСпециализированный / экспертный перевод (за страницу).
под присягойЗаверенный перевод (за страницу).
наатиПеревод, сертифицированный NAATI (за страницу).

Переломный момент

ЗначениеОписание
обычныйСтандартный срок выполнения заказа.
быстрыйУскоренное выполнение заказа.

Способы доставки

ЗначениеАдресОписание
электронная почтаНетЦифровая доставка по электронной почте (бесплатно).
нотариально заверенное электронное письмоНетНотариально заверенная электронная доставка.
mail_standardДаПочтовая доставка; отправка в страны, входящие в список поддерживаемых.
доставка_на_следующий_деньДаДоставка на следующий рабочий день (только по адресам в США).

Веб-хуки

Вместо периодического опроса настройте конечную точку веб-хука для получения событий по мере их возникновения. Укажите URL-адрес и просмотрите секретный ключ подписи в разделе «Настройки бизнеса» → «Веб-хуки». Веб-хуки — это удобный инструмент: запрос «Получить заказ» всегда является достоверным источником информации.

События

СобытиеОтправлено, когда
статус_заказаСтатус заказа изменился.
отзыв клиентаЗаказ просчитан и ожидает вашего утверждения (только в режиме утверждения).
доставка документовПереведенные документы готовы, указаны ссылки для скачивания.
оплата не прошлаНевозможность взыскания суммы по утвержденному поручению влечет за собой сбой блок (причина, сообщение). Обновите данные в карточке кошелька и подтвердите еще раз.
credit_holdУтверждённый заказ превысит ваш кредитный лимит — это влечёт за собой credit_hold блок (сообщение). Оплатите счета или подайте заявку на увеличение лимита.

Конверт

Каждая посылка упакована в одинаковый конверт: мероприятие блок (включая режим реального времени) и специфичный для данного события данные блок.

{
  "event": {
    "type": "order_status",
    "id": "evt_9b1c...",
    "livemode": true,
    "sent_at": "2026-08-28T10:20:00+00:00"
  },
  "data": {
    "order": {
      "id": "9b1c2d3e-...-uuid",
      "reference": "APO-10432",
      "status": "completed"
    }
  }
}

The доставка документов событие добавляет документы массив (каждый из которых содержит имя, download_url, версия, статус) и портал ссылка. The отзыв клиента событие добавляет подробный список ценообразование блок и actions.approve объект с URL-адресом для вызова.

Проверка подписей

Каждый запрос подписывается, чтобы вы могли убедиться, что он поступил от RapidTranslate. Мы отправляем три заголовка:

ЗаголовокЗначение
X-RapidTranslate-Signaturesha256=<hmac>
X-RapidTranslate-Время_созданияВ подписи используется временная метка Unix
X-RapidTranslate-EventУникальный идентификатор события

Вычислить ожидаемую сигнатуру как HMAC-SHA256 от этой строки "{timestamp}.{raw_request_body}" используя секретный ключ подписи веб-хука, а затем сравните его со значением в заголовке:

// PHP
$expected = 'sha256=' . hash_hmac(
    'sha256',
    $timestamp . '.' . $rawBody,
    $webhookSecret
);
$valid = hash_equals($expected, $signatureHeader);

Node.js (Express) — подключить маршрут с помощью парсера необработанного тела запроса, чтобы сохранить точные байты:

// app.use('/webhooks/rapidtranslate', express.raw({ type: 'application/json' }))
const crypto = require('crypto');

const timestamp = req.get('X-RapidTranslate-Timestamp');
const received  = req.get('X-RapidTranslate-Signature'); // "sha256=..."
const rawBody   = req.body;                               // Buffer, untouched

const expected = 'sha256=' + crypto
  .createHmac('sha256', WEBHOOK_SECRET)
  .update(`${timestamp}.${rawBody}`)
  .digest('hex');

const valid = received &&
  crypto.timingSafeEqual(Buffer.from(received), Buffer.from(expected));

Есть три вещи, которые ставят людей в тупик:

  • The X-RapidTranslate-Signature заголовок содержит sha256= префикс. Либо сравнить с 'sha256=' + yourHmac (как указано выше) либо удалите префикс перед сравнением — не сравнивайте сам шестнадцатеричный код со всем заголовком целиком.
  • Выполните хеширование исходного тела запроса в том виде, в каком оно было получено. При повторной сериализации проанализированного JSON изменяются пробелы и порядок ключей, в результате чего подпись не будет совпадать — считывайте тело запроса до того, как его проанализирует какое-либо промежуточное ПО для работы с JSON.
  • Сравнить за постоянное время (hash_equals / crypto.timingSafeEqual), но никогда с == или ===.

The {timestamp} является частью подписанной строки, поэтому его следует прочитать из заголовка и добавить в начало перед хешированием. Это также позволяет отклонять устаревшие или повторно отправленные сообщения — например, те, у которых метка времени старше пяти минут.

В случае сбоя доставки повторяется с использованием экспоненциальной задержки (до 5 попыток). Ответьте с помощью 2xx статус для подтверждения получения.