Програмно розміщуйте та відстежуйте замовлення на сертифікований переклад документів. REST API через HTTPS, аутентифікація за допомогою токена «bearer» та повернення даних у форматі JSON — із підписаними веб-хуками для кожної події.
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, перш ніж писати код? У нашій колекції Postman усі кінцеві точки вже налаштовані — разом з автентифікацією, прикладами тіл запитів та параметрами запитів.
apiKey до ключа з Налаштування бізнесу → Ключі API.baseUrl для вашого середовища — за замовчуванням встановлено «production».Аутентифікуйте кожен запит за допомогою вашого секретного ключа 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 | платіж_не_пройшов | Замовлення затверджено, але оплату не вдалося отримати |
| 402 | credit_hold | Сума замовлення перевищує ваш кредитний ліміт |
| 403 | заборонена_область | Key не має необхідного обсягу |
| 403 | account_suspended | Організація була тимчасово призупинена через несплачені рахунки-фактури |
| 404 | not_found | Такого замовлення для цієї організації немає |
| 409 | дублікат_посилання | Посилання використано повторно для іншого замовлення |
| 409 | не_очікує_затвердження | Замовлення не очікує на ваше затвердження |
| 422 | помилка перевірки | Відсутні або некоректні поля |
| 429 | rate_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)); Є три речі, які стають для людей перешкодою:
X-RapidTranslate-Підпис заголовок містить sha256= префікс. Або порівняти з 'sha256=' + yourHmac (як зазначено вище) або видаліть префікс перед порівнянням — не порівнюйте сам шістнадцятковий код із усім заголовком.hash_equals / crypto.timingSafeEqual), ніколи з == або ===.У "The {timestamp} є частиною підписаного рядка, тому зчитайте його з заголовка та додайте на початок перед хешуванням. Це також дозволяє відхиляти застарілі або повторно надіслані повідомлення — наприклад, будь-які, мітки часу яких старші за п’ять хвилин.
У разі невдалої доставки здійснюється повторна спроба з експоненційним відстроченням (до 5 спроб). Відповідайте за допомогою 2xx статус для підтвердження отримання.