Документація з API
Інтегрувати потужний переклад у ваших програмах за допомогою нашого простого REST API.
Початок роботи
Інструмент TranslateAPI надає простий інтерфейс REST для перекладу тексту між 180+мовами. Всі точки API повертаються до відповідей JSON.
https://api.translateapi.ai/api/v1/
Швидкий запуск
Зроби свій перший запит на переклад:
curl -X POST https://api.translateapi.ai/api/v1/translate/ \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '{
"text": "Hello, world!",
"target_language": "es"
}'
import requests
response = requests.post(
"https://api.translateapi.ai/api/v1/translate/",
headers={
"Authorization": "Bearer YOUR_API_KEY",
"Content-Type": "application/json"
},
json={
"text": "Hello, world!",
"target_language": "es"
}
)
result = response.json()
print(result["translated_text"]) # "Hola, mundo!"
const response = await fetch("https://api.translateapi.ai/api/v1/translate/", {
method: "POST",
headers: {
"Authorization": "Bearer YOUR_API_KEY",
"Content-Type": "application/json"
},
body: JSON.stringify({
text: "Hello, world!",
target_language: "es"
})
});
const result = await response.json();
console.log(result.translated_text); // "Hola, mundo!"
using System;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
using Newtonsoft.Json;
class Program
{
static async Task Main()
{
var client = new HttpClient();
client.DefaultRequestHeaders.Add(
"Authorization", "Bearer YOUR_API_KEY"
);
var content = new StringContent(
JsonConvert.SerializeObject(new {
text = "Hello, world!",
target_language = "es"
}),
Encoding.UTF8,
"application/json"
);
var response = await client.PostAsync(
"https://api.translateapi.ai/api/v1/translate/",
content
);
var result = await response.Content.ReadAsStringAsync();
var data = JsonConvert.DeserializeObject<dynamic>(result);
Console.WriteLine(data.translated_text); // "Hola, mundo!"
}
}
Розпізнавання
Автентифікуйте ваші запити за допомогою ключа API. Ви можете створювати ключі API з вашого Панель приладів.
Розпізнавання заголовка (рекомендовано)
Authorization: Bearer ta_your_api_key_here
Параметр запиту
https://api.translateapi.ai/api/v1/translate/?api_key=ta_your_api_key_here
Перекласти текст
Перекласти текст на одну мову перекладу.
POST https://api.translateapi.ai/api/v1/translate/
Вимагати тіло
| Параметр | Тип | Обов' язково | Опис |
|---|---|---|---|
text |
string | Так. | Текст для перекладу (макс. 50 000 символів) |
target_language |
string | Так * | Target language code (e.g., "es", "fr", "de") |
source_language |
string | Ні | Source language code. Default: "auto" (auto-detect) |
Використання target_language (рядок) для однієї мови або target_languages (масив) для декількох. Див. Багатоталоговий переклад.
Відповідь
{
"translated_text": "Hola, mundo!",
"source_language": "en",
"target_language": "es",
"translations": {
"es": "Hola, mundo!"
},
"character_count": 13,
"translation_time": 0.45
}
Багатоталоговий переклад
Перекладати текст декількома мовами за одним запитом. Використовує ту саму кінцеву точку, що і один переклад.
POST https://api.translateapi.ai/api/v1/translate/
Вимагати тіло
{
"text": "Hello, world!",
"target_languages": ["es", "fr", "de", "ja"],
"source_language": "en"
}
Користування target_languages (масив) замість target_language (рядок) для декількох цілей.
Відповідь
{
"source_language": "en",
"translations": {
"es": "Hola, mundo!",
"fr": "Bonjour, monde!",
"de": "Hallo, Welt!",
"ja": "こんにちは、世界!"
},
"character_count": 52,
"translation_time": 2.31
}
Пакетний переклад
Перекладати одразу декілька текстів з асинхронною обробкою. Надсилайте пакетне опитування результатів.
POST https://api.translateapi.ai/api/v1/translate/batch/
Крок 1: Надіслати пакет
curl -X POST https://api.translateapi.ai/api/v1/translate/batch/ \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"texts": ["Hello", "Goodbye", "Thank you"],
"target_language": "es",
"source_language": "en"
}'
Відповідь (Прийнятний HTTP 202)
{
"job_id": "67535b2b-c9e3-4f82-9499-e237edbc1dd8",
"status": "pending",
"total_texts": 3,
"queue_position": 1,
"source_language": "en",
"target_languages": ["es"],
"character_count": 22,
"credits_remaining": -1,
"poll_url": "https://api.translateapi.ai/api/v1/jobs/67535b2b-c9e3-4f82-9499-e237edbc1dd8/"
}
Крок 2. Опитування результатів
GET https://api.translateapi.ai/api/v1/jobs/{job_id}/
Приклад опитування (Python)
import time, requests
job_id = response.json()["job_id"]
total = response.json()["total_texts"]
headers = {"Authorization": "Bearer YOUR_API_KEY"}
print(f"Batch submitted: {total} texts (job {job_id})")
while True:
result = requests.get(f"https://api.translateapi.ai/api/v1/jobs/{job_id}/", headers=headers).json()
status = result["status"]
processed = result.get("processed_texts", 0)
progress = result.get("progress_percentage", 0)
if status == "completed":
print(f"Completed: {processed}/{total} texts in {result.get('processing_time', 0):.1f}s")
translations = result["result_data"]["translations"]
break
elif status == "failed":
print(f"Failed at {processed}/{total}: {result.get('error_message', 'unknown')}")
raise Exception(result.get("error_message", "Translation failed"))
elif status == "pending":
queue_pos = result.get("queue_position", "?")
print(f"Queued (position {queue_pos}) — waiting for GPU worker...")
else:
print(f"[{status}] {processed}/{total} ({progress:.0f}%)")
time.sleep(3)
Відповідь (починаючи з черги, очікуючи на GPU)
{
"job_id": "67535b2b-...",
"status": "pending",
"processed_texts": 0,
"total_texts": 3,
"progress_percentage": 0.0,
"queue_position": 3
}
Відповідь (під час обробки)
{
"job_id": "67535b2b-...",
"status": "processing",
"processed_texts": 1,
"total_texts": 3,
"progress_percentage": 33.33,
"queue_position": null
}
Відповідь (завершена)
{
"job_id": "67535b2b-...",
"status": "completed",
"processed_texts": 3,
"total_texts": 3,
"progress_percentage": 100.0,
"processing_time": 10.65,
"result_data": {
"translations": ["Hola", "Adiós", "Gracias"],
"source_language": "en",
"target_language": "es",
"character_count": 22,
"processing_time": 10.65
}
}
Слідкування за поступом у реальному часі
У кожній відповіді на кожне опитування містяться поля поступу у режимі реального часу, отже ви можете спостерігати за тим, що відбувається з вашою пакетною інформацією:
| Поле | Опис |
|---|---|
status |
Поточний стан завдання: pending (сервер, чекає працівника GPU), processing (активно переклад) completed, Description of a condition. Do not translate key words (# V1S #, # V1 #,...) failed |
processed_texts |
Кількість окремих перекладів завершена до цього часу. Оновлюється у режимі реального часу під час перекладу кожного з перекладів тексту. |
total_texts |
Загальна кількість перекладів у цій парті (тексти × цільові мови). |
progress_percentage |
Відсоток завершення (0- 100). Обчислено з оброблених_ текстів / загалом_ текстів. |
queue_position |
Ваша позиція у черзі, якщо стан " очікується " (1 = наступний). Нульувати під час обробки або завершення. Скористайтеся цим пунктом, щоб оцінити час очікування і показати стан черги для ваших користувачів. |
processing_time |
Загальний час обробки у секундах (доступний після завершення). |
status є "pending", працівники поліції зайняті іншими партіями. queue_position Щоб побачити, скільки завдань попереду вас (1 = ви наступні). Ваше завдання буде автоматично починатися * Не потрібно жодної дії, просто продовжуйте опитування.
Найкращі практики для великих робіт
- Надсилати 1 мову призначення на пакетний запит. Використання цього параметра пришвидшує роботу кожної пакетної групи, отже, ви можете зробити поступ простим для стеження.
- Тримайте пакети на 50- 100 текстах. Менші пакети завершуються швидше і надають вам змогу отримувати частіші оновлення поступу.
- Запустити у більшості 2 послідовних пакетних завданнях. Процеси GPU відбуваються у паралельній черзі } Додаткові робочі місця і не будуть починатися швидше.
- Під час перезапуску буде виконано дію з тією самою назвою job_ id замість надсилання нової пакетної копії. Початкове завдання може бути оброблено у GPU.
- Частіші опитування не пришвидшують обробки.
Пакет з декількома латами
Переклад декількох текстів на декілька мов одночасно:
{
"texts": ["Hello", "Goodbye"],
"target_languages": ["es", "fr"],
"source_language": "en"
}
Завершено результат_ дані
{
"translations": [
{"es": "Hola", "fr": "Bonjour"},
{"es": "Adiós", "fr": "Au revoir"}
],
"source_language": "en",
"target_languages": ["es", "fr"],
"character_count": 24,
"processing_time": 2.45
}
Запит на параметри
| Параметр | Тип | Обов' язково | Опис |
|---|---|---|---|
texts |
array | Так. | Масив рядків для перекладу |
target_language |
string | Так * | Код мови призначення для однієї мови |
target_languages |
array | Так * | Масив кодів перекладу для декількох мов |
source_language |
string | Ні | Source language code. Default: "auto" |
Подбайте також target_language або target_languagesНе обоих.
job_id. Опитування GET /api/v1/jobs/{job_id}/ до status є "completed", тоді читайте result_data Перекладачі. Використовуйте progress_percentage для стеження за поступом.
Переклад документа
Перекладати всі документи під час збереження форматування. Підтримує декілька форматів файлів.
POST https://api.translateapi.ai/api/v1/translate/document/
Запит (багато частин/ даних)
| Параметр | Тип | Обов' язково | Опис |
|---|---|---|---|
file |
file | Так. | Документ, який слід перекласти (макс 10 Мб) |
target_language |
string | Так. | Target language code (e.g., "es", "fr", "de") |
source_language |
string | Ні | Source language code. Default: "auto" (auto-detect) |
Типи файлів, що підтримуються
.txt- Простий текстовий файл.docx- Текстові документи.pdf- Документи PDF (включаючи скановані).json- Файли JSON (перекладає значення рядків).xml- Файли XML
.srt- Файли субтитрів.po/.pot- Файли перекладу gettext.jpg/.jpeg- Зображення JPEG (OCR).png- Зображення PNG (OCR) Image/ info menu item (should be translated).tiff/.tif- Зображення TIFF (OCR).bmp- Зображення BMP (OCR).webp- Зображення WebP (OCR) Image/ info menu item (should be translated)
Приклад (cURL)
# Translate a Word document
curl -X POST https://api.translateapi.ai/api/v1/translate/document/ \
-H "Authorization: Bearer YOUR_API_KEY" \
-F "file=@document.docx" \
-F "target_language=es" \
-F "source_language=en"
# Translate text from an image (OCR)
curl -X POST https://api.translateapi.ai/api/v1/translate/document/ \
-H "Authorization: Bearer YOUR_API_KEY" \
-F "file=@scanned_page.jpg" \
-F "target_language=es" \
-F "source_language=en"
.txt файл.
Відповідь
{
"id": 123,
"original_filename": "document.docx",
"file_type": "docx",
"source_language": "en",
"target_language": "es",
"status": "completed",
"character_count": 5420,
"translated_file_url": "/media/translated/document_es.docx",
"created_at": "2024-01-15T10:30:00Z",
"completed_at": "2024-01-15T10:30:05Z"
}
Значення стану
pending |
Файл вивантажено, очікування на обробку |
processing |
Триває переклад |
completed |
Переклад завершено, звантаження наявне |
failed |
Спроба виконання перекладу зазнала невдачі (перевірити_ повідомлення про помилку) |
GET https://api.translateapi.ai/api/v1/translate/document/{id}/
Перевірте стан перекладу документа або звантажте адресу URL звантаження.
Відповідь
{
"id": 123,
"original_filename": "document.docx",
"status": "completed",
"translated_file_url": "/media/translated/document_es.docx",
"character_count": 5420
}
Виявлення мови
Виявлення мови вбудовується у всі запити на переклад. Встановіть source_language to "auto" (або пропустити) у відповіді буде повернуто виявлену мову.
POST https://api.translateapi.ai/api/v1/translate/
Вимагати тіло
{
"text": "Bonjour, comment allez-vous?",
"target_language": "en"
}
Відповідь
{
"translated_text": "Hello, how are you?",
"source_language": "fr",
"target_language": "en",
"translations": {
"en": "Hello, how are you?"
},
"character_count": 28,
"translation_time": 0.52
}
The source_language поле у відповіді показує виявлену мову, якщо використано автоматичне визначення.
Підтримувані мови
Отримати список всіх підтримуваних мов.
GET https://api.translateapi.ai/api/v1/translate/languages/
Відповідь
{
"count": 186,
"results": [
{"iso": "en", "name": "English", "en_label": "English"},
{"iso": "es", "name": "Español", "en_label": "Spanish"},
{"iso": "fr", "name": "Français", "en_label": "French"},
...
]
}
Моделі перекладу
Ми використовуємо сучасні моделі перекладу з відкритим кодом, які працюють на власній інфраструктурі GPU.
| Модель | Мови | Найкраще для |
|---|---|---|
| Helsinki-NLP/opus-mt | Пари мов 50+ | Загальні мови (EN, ES, FR, DE, IT, PT, RU, ZH, JA тощо) |
| Google MADLAD-400 | 400+ Мови | Рідкі мови, вичерпні повідомлення |
Програмний інтерфейс програм автоматично вибирає найкращу модель вашої пари мов. За бажання, ви можете вказати назву engine параметр:
| Рушій | Опис |
|---|---|
"auto" |
Типове значення. Спочатку Тріес Huging Face, повертається до MADLAD- 400 |
"huggingface" |
Примусово збирати Face/MariMT (найшвидші, 50+ мов) |
"madlad" |
Примусово встановити MADLAD- 400 (400 мовами+) |
Обробка помилок
API використовує стандартні коди стану HTTP для позначення успіху або невдачі.
| Код | Опис |
|---|---|
200 |
Успіх |
400 |
Неправильний запит - некоректні параметри |
401 |
Несанкціонований - некоректний або відсутній ключ API |
402 |
Потрібна сплата - перевищена денна квота символів |
429 |
Забагато запитів - перевищено частоту |
503 |
Недоступний рушій перекладу Service |
Формат відповіді на помилку
{
"error": "daily_limit_exceeded",
"credits_remaining": 0,
"daily_limit": 100000
}
Обмеження швидкості
Обмеження різняться за планом. Ціноутворення для всіх подробиць:
| План | Символи/Month | Ціна | |
|---|---|---|---|
| Вільно | 250,000 | $0 | Вільний підпис |
| Започаткування | 2,500,000 | $9/моunit description in lists | Підписатися |
| Pro | 10,000,000 | $29/моunit description in lists | Підписатися |
| Бізнес | 40,000,000 | $79/моunit description in lists | Підписатися |
| Масштаб | 125,000,000 | $199/моunit description in lists | Підписатися |
Коли ви перевищите свою норму, ви отримаєте 429 Too Many Requests відповідання до наступного місяця або оновлення.
Auto-Scaling Cloud Infrastructure
TranslateAPI runs on dedicated NVIDIA A100 GPU instances with automatic horizontal scaling. When demand increases, additional GPU instances are launched within minutes to maintain fast response times. This means our API can handle virtually unlimited concurrent requests without degradation — from a single request to thousands per minute.