Зображення у 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». Ключі відображаються лише один раз під час створення та зберігаються у хешованому вигляді — якщо ви втратили ключ, оновлюйте його. Кожен ключ належить до одного режиму («Live» або «Sandbox») і має фіксований набір областей доступу.

Області застосування

Кожна кінцева точка вимагає наявності певної можливості у ключі. Якщо у ключі відсутня необхідна область дії, повертається 403 заборонений_діапазон.

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

Пісочниця та тестовий режим

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

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

Кожна відповідь та вебхук містять livemode Вкажіть цей прапорець, щоб ваша інтеграція могла створювати гілки без перевірки ключа:

  • livemode: true — справжнє замовлення, що підлягає оплаті
  • livemode: false — тестове середовище / тестове замовлення

Обмеження частоти запитів

Кількість запитів обмежена для кожної організації. За замовчуванням дозволено 120 запитів на хвилину. Якщо це значення перевищено, повертається 429 обмеження швидкості; спробуйте ще раз через деякий час. Якщо для вашої інтеграції потрібне більше обмеження, зверніться до 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код_помилкиЗначення
400помилка_запитуНеправильно сформований текст запиту
401без автентифікаціїВідсутній, недійсний або скасований ключ
402платіж_не_пройшовЗамовлення затверджено, але оплату не вдалося отримати
402credit_holdСума замовлення перевищує ваш кредитний ліміт
403заборонена_областьKey не має необхідного обсягу
403account_suspendedОрганізація була тимчасово призупинена через несплачені рахунки-фактури
404not_foundТакого замовлення для цієї організації немає
409дублікат_посиланняПосилання використано повторно для іншого замовлення
409не_очікує_затвердженняЗамовлення не очікує на ваше затвердження
422помилка перевіркиВідсутні або некоректні поля
429rate_limitedПеревищено обмеження кількості запитів
500помилка сервераНесподівана помилка сервера
503обробка_не_вдаласяПодальша обробка (OCR / визначення ціни) завершилася невдало

Статуси замовлень

Замовлення статус дотримується стабільного життєвого циклу. Ці п’ять цінностей також визнаються статус ввімкнути фільтр Список замовлень:

СтатусЗначення
у процесі розглядуОтримано; ціноутворення ще не завершено. загалом можливо нуль.
очікує затвердженняВартість вже визначена, чекаємо на ваше затвердження загальної суми (лише у разі, якщо таке затвердження необхідне).
обробкаЗатверджено та активовано; переклад триває.
завершеноГотово; перекладені документи доступні.
скасованоЗамовлення було скасовано.

Поки замовлення знаходиться в процесі виконання, більш детальні позначки (наприклад, Доручено перекладачеві, Переклад, Відправлено) також може з’явитися. Якщо потрібно отримати схвалення, у замовленні може бути коротко зазначено платіж_не_пройшов або credit_hold якщо оплату не вдалося отримати — визначте спосіб оплати та підтвердьте замовлення ще раз.

Перелік мов

GET /мови

Повертає всі мови, що підтримуються. Використовуйте ім'я дослівно перекласти як мова_джерела / 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 }
  ]
}

Отримати прайс-лист

GET /ціни

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

Сфера застосування: ціна:читати

{
  "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" }
  }
}

Ціни, підтверджені під присягою. Вартість присяжного перекладу визначається за мовною парою. пари мов містить перелік усіх пар, які відповідають критеріям для присяги, разом із їхніми власними звичайний/швидкий ціна. Приймаються будь-які варіанти англійської мови (English (US/UK/AU/CA)), і кожна мовна пара працює в обох напрямках, якщо тільки вона не містить "bidirectional": false.

Створити замовлення

POST /замовлення

Створює замовлення на переклад і завантажує вихідні файли. Оскільки ця кінцева точка передбачає передачу файлів, вона використовує multipart/form-data (не JSON). У вкладених полях використовується нотація з дужками, наприклад: клієнт[ім'я].

Сфера застосування: замовлення:запис

Параметри тіла

ПолеТипПримітки
посиланнярядок обов’язковийВаш власний унікальний ідентифікатор замовлення. Повторне використання цього ідентифікатора повертає існуюче замовлення (див. ідемпотентність).
клієнт[ім'я]рядок обов’язковийПовне ім'я кінцевого споживача.
клієнт[email]рядок обов’язковийЕлектронна адреса кінцевого клієнта.
мова_джереларядок обов’язковийТочна формулювання ім'я з Перелік мов.
target_languageрядок обов’язковийТочна формулювання ім'я з Перелік мов.
тип_перекладурядок обов’язковийОдне з сертифікований, стандартний, спеціалізований, присяжний, нааті.
поворотрядок обов’язковийзвичайний або швидкий.
спосіб доставки[метод]рядок обов’язковийОдне з електронна пошта, нотаріально завірений електронний лист, mail_standard, доставка_наступного_дня.
доставка[адреса][...]об'єктНеобхідно для mail_standard / доставка_наступного_дня: вулиця, місто, поштовий_індекс, країна (штат (не обов’язково). країна — це код ISO, наприклад: США.
апостиль [увімкнено]логічне значенняДодати процедуру оформлення апостилю. Див. правила нижче.
апостиль [документи]ціле числоКількість документів, які потрібно завірити апостилем. Вказується, якщо ця опція увімкнена.
апостиль [країна призначення]рядокКраїна, для якої призначена апостиль.
приміткирядокІнструкції у вигляді вільного тексту.
код_купонарядокКод знижки, який потрібно застосувати. Коди, які явно є недійсними або не підходять для застосування, відхиляються під час створення 422 помилка перевірки; сама знижка визначається після розрахунку вартості замовлення (див. примітку нижче).
файли[]файл[] — обов’язкове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"
  }
}

Щойно створене замовлення спочатку має вигляд у процесі розгляду з нуль загальна сума під час розрахунку ціни. Опитування Отримати замовлення або прислухайтеся до статус_замовлення вебхук для перегляду оновленої інформації про ціну та статус.

Купони. A код_купона перевіряється у два етапи. Під час створення ми перевіряємо те, що не залежить від обсягу документа — правильність коду, обмеження щодо використання та типи перекладів/послуг, до яких він застосовується — і негайно відхиляємо неправильний код. Правила, що залежать від кількості сторінок/слів (а також від самої суми знижки), застосовуються після підрахунку обсягу документа, тому знижка відображається на за ціною загальна, а не початкова у процесі розгляду відповідь. Якщо після визначення кількості виявляється, що купон не діє, замовлення все одно оформлюється за повною ціною, а його статус позначається для подальшого розгляду нашою командою.

Отримати замовлення

GET /orders/{id}

Отримує одне замовлення за його id (UUID, повернутий під час створення). Повертає 404 не знайдено якщо замовлення не належить вашій організації.

Сфера застосування: замовлення:читати

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

Список замовлень

GET /замовлення

Повертає замовлення вашої організації, починаючи з найновіших, із розбиттям на сторінки в мета. Усі параметри запиту є необов’язковими.

Сфера застосування: замовлення:читати

ЗапитПримітки
статусОдне з у процесі розгляду, очікує затвердження, обробка, завершено, скасовано.
посиланняВідфільтруйте за вашим номером.
мова_джерела / target_languageФільтрувати за назвою мови.
створено_з / 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"

Затвердити наказ

POST /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 блок (повідомлення). Оплатіть рахунки або подайте запит на підвищення ліміту.

Конверт

Кожна доставка має однаковий конверт: подія блок (включно з livemode) та специфічний для події дані блок.

{
  "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, версія, статус) та портал посилання. Це відгук клієнта подія додає детальний перелік ціноутворення блок і actions.approve об’єкт із URL-адресою, яку потрібно викликати.

Перевірка підписів

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

ЗаголовокЗначення
X-RapidTranslate-Підписsha256=<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-Підпис заголовок містить sha256= префікс. Або порівняти з 'sha256=' + yourHmac (як зазначено вище) або видаліть префікс перед порівнянням — не порівнюйте сам шістнадцятковий код із усім заголовком.
  • Виконайте хешування необробленого тіла запиту саме в тому вигляді, в якому воно надійшло. Повторна серіалізація розібраного JSON змінює пробіли та порядок ключів, тому підпис не збігатиметься — зчитуйте тіло запиту до того, як його розбере будь-який проміжний модуль обробки JSON.
  • Порівнювати за постійний час (hash_equals / crypto.timingSafeEqual), ніколи з == або ===.

У "The {timestamp} є частиною підписаного рядка, тому зчитайте його з заголовка та додайте на початок перед хешуванням. Це також дозволяє відхиляти застарілі або повторно надіслані повідомлення — наприклад, будь-які, мітки часу яких старші за п’ять хвилин.

У разі невдалої доставки здійснюється повторна спроба з експоненційним відстроченням (до 5 спроб). Відповідайте за допомогою 2xx статус для підтвердження отримання.