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

Включите мощный перевод в ваши приложения с нашим простым REST API.

Начинается

TranclateAPI обеспечивает простой интерфейс 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 из вашего запроса. Приборная панель.

Заголовок Аутентификация (рекомендуется)
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,1s на текст), в то время как наши большие многоязычные языки (~1-3s на текст). 100-текстовая партия, как правило, заполняется за 10-30 секунд для общих языков или 2-5 минут для менее распространенных языков.
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"
}'
Ответ (TTP 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}/
Пример опроса (Питон)
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)
Ответ (в ожидании — в очереди, в ожидании ВПС)
{
    "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 (подготовлен, ждёт работника ГПС), processing (активно переводит), completed, failed
processed_texts Количество выполненных на данный момент индивидуальных переводов. Обновление в режиме реального времени при переводе каждого текста.
total_texts Общее число переводов в этой партии (тексты х целевых языков).
progress_percentage Процентная доля завершения (0-100). Рассчитана на основе обработанных текстов/всего _текстов.
queue_position Ваша позиция в очереди, когда статус "ожидается" (1 = следующий). Наклоните при обработке или завершении. Используйте это для оценки времени ожидания и показа статуса очереди вашим пользователям.
processing_time Общее время обработки в секундах (имеется в наличии по завершении).
Тип: Когда status ...................................................................... "pending", рабочие GPU заняты другими партиями. queue_position Чтобы увидеть, сколько рабочих мест впереди вас (1 = вы следующий).
Наилучшая практика в отношении большого объема работы
  • Отправьте 1 язык цели за каждую партию запроса. Это держит каждую партию быстро и облегчает отслеживание прогресса.
  • Держите партии на 50-100 текстах. Меньшие партии заканчиваются быстрее и дают вам более частые обновления.
  • Запустить не более двух параллельных групп. GPU обрабатывает 2 партии параллельно — дополнительные рабочие места в очереди и не будет начинаться быстрее.
  • При тайм-ауте повторите одну и ту же работу_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 - Получить файлы перевода текста
  • .jpg / .jpeg - Снимки JPEG (OCR)
  • .png - Изображение PNG (OCR)
  • .tiff / .tif - Снимки TIFF (OCR)
  • .bmp - Изображение BMP (OCR)
  • .webp - Снимки WebP (OCR)
Поддержка OCR: Файлы изображений и отсканированные 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"
Файлы изображений обрабатываются с помощью OCR для извлечения текста перед переводом. Переводное издание возвращается в качестве документа .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
}

:: Всё, что я знаю. 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"},
        ...
    ]
}

Модели перевода

Мы используем современные модели перевода с открытыми исходными кодами, работающие на нашей собственной инфраструктуре ГПС. Все модели имеют коммерческую лицензию (Apache 2.0).

Модель Знание языков Лучший для
Helsinki-NLP/opus-mt 50+ пары языков Общие языки (EN, ES, FR, DE, IT, PT, RU, ZH, JA и т.д.)
Google MADLAD-400 400 и более языков Редкие языки, всеобъемлющий охват

API автоматически выбирает наилучшую модель для вашей языковой пары. Вы можете факультативно указать engine параметр:

Двигатель Описание
"auto" По умолчанию: сначала попробуй Хаггинг Фэйс, вернись к MADLAD-400
"huggingface" Force HaggingFace/MarianMT (быстрейший, 50+язык)
"madlad" Сила MADLAD-400 (400+ языков)

Обработка ошибок

АПИ использует стандартные коды состояния HTTP для указания успеха или неудачи.

Код Описание
200 Успех
400 Плохой запрос - неверные параметры
401 Несанкционированный - неверный или отсутствующий ключ API
402 Требуемая оплата - превышение ежедневной квоты
429 Слишком много запросов - предельный показатель превышен
503 Недоступный сервис - временно выключен двигатель перевода
Формат ответа на ошибку
{
    "error": "daily_limit_exceeded",
    "credits_remaining": 0,
    "daily_limit": 100000
}

Предельные ставки

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

План Символы/месяц Цена
Свободные 250,000 $0 Не подписываться
Запуск 2,500,000 $9/м. Подписаться
Про 10,000,000 $29/м. Подписаться
Бизнес 40,000,000 $79/м. Подписаться
Шкала 125,000,000 $199/м. Подписаться

Когда вы превзойдете свой предел, вы получите 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 на основе рейтинги