Документация API
Включите мощный перевод в ваши приложения с нашим простым REST API.
Начинается
TranclateAPI обеспечивает простой интерфейс REST для перевода текста между 180 и более языками. Все API конечных точек возвращают ответы JSON.
1. Достать ключ API
Создать свободный счет и генерировать ключ API с панели:
- Запишись. translateapi.ai/signup
- Перейти Dashboard → Ключи API
- Нажмите "Создать ключ API" и скопировать ваш ключ
Ключи API начинаются с ta_ За ним последовали 56 гекс-героев.
https://api.translateapi.ai/api/v1/2. Сделай свой первый запрос
Заменить ваш_API_KIE ключом от вашей панели:
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!"
$ch = curl_init("https://api.translateapi.ai/api/v1/translate/");
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => [
"Authorization: Bearer YOUR_API_KEY",
"Content-Type: application/json"
],
CURLOPT_POSTFIELDS => json_encode([
"text" => "Hello, world!",
"target_language" => "es"
])
]);
$result = json_decode(curl_exec($ch), true);
echo $result["translated_text"]; // "Hola, mundo!"
payload := strings.NewReader(`{
"text": "Hello, world!",
"target_language": "es"
}`)
req, _ := http.NewRequest("POST", "https://api.translateapi.ai/api/v1/translate/", payload)
req.Header.Set("Authorization", "Bearer YOUR_API_KEY")
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
var result map[string]interface{}
json.NewDecoder(resp.Body).Decode(&result)
fmt.Println(result["translated_text"]) // "Hola, mundo!"
var client = new HttpClient();
client.DefaultRequestHeaders.Add("Authorization", "Bearer YOUR_API_KEY");
var content = new StringContent(
JsonSerializer.Serialize(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 = JsonSerializer.Deserialize<JsonElement>(
await response.Content.ReadAsStringAsync()
);
Console.WriteLine(result.GetProperty("translated_text")); // "Hola, mundo!"
Ответ
{
"translated_text": "Hola, mundo!",
"source_language": "en",
"target_language": "es",
"translations": {
"es": "Hola, mundo!"
},
"character_count": 13,
"translation_time": 0.45
}
Аутентификация
Вы можете создать ключи API из вашего запроса. Приборная панель.
Заголовок Аутентификация (рекомендуется)
Authorization: Bearer ta_your_api_key_here
Заголовок ApiKey
Authorization: ApiKey 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) |
engine |
string | Нет | Двигатель перевода: "auto" (по умолчанию), "huggingface" или "madlad". См. Translate Models. Модели перевода. |
* Использование 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
}
source_language или установить его таким образом, чтобы "auto" Обнаруженный язык возвращается на source_language ответное поле.
Многоцелевой перевод
Переведите текст на несколько языков в одном запросе. Используйте тот же конечный пункт, что и единый перевод.
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"Done: {processed}/{total} in {result.get('processing_time', 0):.1f}s")
translations = result["result_data"]["translations"]
break
elif status == "failed":
raise Exception(result.get("error_message", "Translation failed"))
elif status == "pending":
print(f"Queued (position {result.get('queue_position', '?')})")
else:
print(f"[{status}] {processed}/{total} ({progress:.0f}%)")
time.sleep(3)
Ответ (завершен)
{
"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 |
Количество выполненных на данный момент индивидуальных переводов. Обновление в режиме реального времени при переводе каждого текста. |
progress_percentage |
Процентная доля завершения (0-100). Рассчитана на основе обработанных текстов/всего _текстов. |
queue_position |
Ваша позиция в очереди, когда статус "ожидается" (1 = следующий). Наклоните при обработке или завершении. Используйте это для оценки времени ожидания и показа статуса очереди вашим пользователям. |
processing_time |
Общее время обработки в секундах (имеется в наличии по завершении). |
Многоязыковая партия
Перевод нескольких текстов на несколько языков одновременно:
{
"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, не и то, и другое.
Наилучшая практика в отношении большого объема работы
- Отправьте 1 язык цели за каждую партию запроса. Это держит каждую партию быстро и облегчает отслеживание прогресса.
- Держите партии на 50-100 текстах. Меньшие партии заканчиваются быстрее и дают вам более частые обновления.
- Предоставьте столько партийных рабочих мест, сколько вам нужно — наши блоки GPU для удовлетворения спроса.
- При тайм-ауте повторите одну и ту же работу_id вместо представления новой партии. Первоначальная работа может быть все еще обработана на GPU.
- Повышенное число голосов не ускоряет процесс обработки.
Перевод документов
Переведите все документы при сохранении форматирования. Поддерживает несколько файловых форматов.
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"
Ответ
{
"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"
}
GET https://api.translateapi.ai/api/v1/translate/document/{id}/
Проверьте состояние перевода документа или снимите URL.
Значения статуса
pending |
Файл загружен, ожидает обработки |
processing |
Незавершенный перевод |
completed |
Перевод завершен, доступно для загрузки |
failed |
Ошибка перевода (проверить ошибку_ сообщение) |
Вспомогательные языки
Получите список всех поддерживаемых языков.
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 | Успех |
| 202 | Принята — успешно выбрана должность в очереди |
| 400 | Плохой запрос — недействительные параметры (отсутствующий текст, неподтвержденные формулировки и т.д.) |
| 401 | Несанкционированный - неверный или отсутствующий ключ API |
| 402 | Потребность в оплате — размер кредита исчерпан, усовершенствован или приобретен сверху. |
| 403 | Запрещено — ключ API не имеет требуемого охвата или IP не включен в белый список |
| 503 | Недоступный сервис - временно выключен двигатель перевода |
Формат ответа на ошибку
{
"error": "insufficient_credits",
"credits_remaining": 0
}
Ограничения использования
TranslateAPI has no request rate limits. All requests are queued and processed by our auto-scaling GPU cluster. Your plan determines your monthly character allowance:
| План | Символы/месяц | Партия API | Документы | Цена | |
|---|---|---|---|---|---|
| Свободные | 250,000 | — | — | $0 | Не подписываться |
| Запуск | 2,500,000 | $9/м. | Подписаться | ||
| Про | 10,000,000 | $29/м. | Подписаться | ||
| Бизнес | 40,000,000 | $79/м. | Подписаться | ||
| Шкала | 125,000,000 | $199/м. | Подписаться | ||
| Enterprise | Unlimited | $499/м. | Contact Sales |
Когда вы превзойдете свой предел, вы получите 402 Payment Required отвечайте до следующего месяца, или вы будете обновляться.
Инфраструктура автоматической масштабации облаков
Переводчик A100 GPU с автоматическим горизонтальным масштабом. При увеличении спроса в течение нескольких минут запускаются дополнительные GPU для обеспечения быстрого реагирования. Все запросы опаздывают и обрабатываются — отправляют сотни параллельных запросов, и все они будут обработаны. Переводы в реальном масштабе времени получают приоритет, процесс набора рабочих мест на заднем плане.
Нужны еще кредитки?
Закупка одноразового кредитного сверху без изменения плана. Вид Верхние пакеты