Документация API
Включите мощный перевод в ваши приложения с нашим простым REST API.
Начинается
TranclateAPI обеспечивает простой интерфейс 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 из вашего запроса. Приборная панель.
Заголовок Аутентификация (рекомендуется)
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"
}'
Ответ (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)
Пример (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
}
:: Всё, что я знаю. 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.