Документація з API

Інтегрувати потужний переклад у ваших програмах за допомогою нашого простого REST API.

Початок роботи

Інструмент TranslateAPI надає простий інтерфейс REST для перекладу тексту між 180+мовами. Всі точки API повертаються до відповідей JSON.

Базова адреса URL: 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
Тримайте ваші ключі API безпечними! Не викривати їх у клієнтському коді або громадських сховищах.

Перекласти текст

Перекласти текст на одну мову перекладу.

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
}

Багатоталоговий переклад

Перекладати текст декількома мовами за одним запитом. Використовує ту саму кінцеву точку, що і один переклад.

Підказка: Ви можете перекласти до 50 мов за одне прохання.
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
}

Пакетний переклад

Перекладати одразу декілька текстів з асинхронною обробкою. Надсилайте пакетне опитування результатів.

Обмеження: макс. 500 текстів на пакет, макс. 750 елементів (тексти × мови призначення). Після початку обробки виконання завдання вичерпуються через 30 хвилин (час очікування за запитом не рахується).
Час обробки мови різниться за мовою: звичайні мови (іспанська, французька, німецька тощо) використовують швидкі моделі (~0, 1 на текст), а менш поширені мови використовують нашу велику багатомовну модель (~1- 3 на текст). Пакету 100 текстів типово завершується у 10- 30 секундах для звичайних мов, або 2- 5 хвилин для менш поширених мов. Для найкращих результатів, надішліть 1 цільову мову на пакетний запит і зберігайте пакетний розмір до 50 текстів.
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Не обоих.

Синхронізація обробки: Пакетні запити негайно повертаються з a 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)
Підтримка ОРС: Файли зображень і файли PDF обробляються оптичним розпізнаванням символів (OCR) для видобування тексту до перекладу. Для найкращих результатів використовуйте зображення з високою роздільною здатністю.
Приклад (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.

Оцінити цю сторінку
Дякую за рейтинг!
/5 заснований на оцінки