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

Интегриране на мощен превод във вашите приложения с нашите прости REST API.

Започване

The 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 общо елементи (текстове × целеви езици).
Време на обработка варира по език: общи езици (испански, френски, немски и т.н.) използват бързи модели (~0.1s на текст), а по-малко общи езици използват нашия голям многоезичен модел (~1-3s на текст). 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 (наследник, чакане на работник на ГПС), processing (активно превеждане), completed, failed
processed_texts Брой на индивидуалните преводи, завършени досега. Актуализации в реално време, тъй като всеки текст се превежда.
total_texts Общ брой преводи в тази партида (текстове × целеви езици).
progress_percentage Процент за завършване (0-100). Изчислен от преработени_ текстове / total_texts.
queue_position Позицията ви в опашката, когато състоянието е "панинг" (1 = следващ). Нула при обработка или завършване. Използвайте това, за да прецените времето за чакане и да покажете статуса на опашката за вашите потребители.
processing_time Общо време за обработка в секунди (на разположение при завършване).
Съвет: Кога status е "pending"Работниците на ГПС са заети с други партиди. queue_position За да видите колко работни места са пред вас (1 = вие сте следващата). Работата ви ще започне автоматично — не е необходимо действие, просто продължавайте да избирате.
Най-добрите практики за големи работни товари
  • Изпращане на 1 цел език на партида искане. Това поддържа всяка партида бързо и прави напредъка лесен за проследяване.
  • Съхранявайте партиди на 50-100 текстове. По-малки партиди се завършват по-бързо и ви дава по-чести напредък актуализации.
  • Стартиране на най-много 2 едновременни партидни задачи. GPU процесира 2 партиди паралелно — допълнителни задачи редица и няма да започне по-бързо.
  • При тайм-аут, превземете една и съща 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 Да. Документът за превеждане (максимум 10MB)
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)
  • .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"},
        ...
    ]
}

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

Ние използваме най-модерните модели за превод на открит източник, които работят по собствената си GPU инфраструктура. Всички модели са търговски лицензирани (Apache 2.0).

Модел Езици Най-добро за
Helsinki-NLP/opus-mt 50+ езикови двойки Общи езици (EN, ES, FR, DE, IT, PT, RU, ZH, JA и др.)
Google MADLAD-400 400+ езици Редки езици, всеобхватно покритие

API автоматично избира най-добрият модел за езиковата ви двойка. Можете да зададете опционално engine параметър:

Двигател Описание
"auto" По подразбиране. Първата пробва HuggingFace, пада обратно на MADLAD-400
"huggingface" Force HuggingFace/Мария MT (най-бързо, 50+ езици)
"madlad" Сила МАДЛАД-400 (400+ езици)

Оправяне на грешки

API използва стандартни 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 отговор до следващия месец или ъпгрейд.

Инфраструктура на облака за автоматично обкачане

TranslateAPI работи на специализирани NVIDIA A100 GPU случаи с автоматично хоризонтално скалиране. Когато търсенето се увеличава, допълнителни GPU случаи се стартира в рамките на минути, за да поддържа бързо реагиране време. Това означава, че нашият API може да се справи практически неограничен едновременни заявки без деградация — от едно искане до хиляди на минута.

Оцени тази страница
Благодаря за оценката!
/5 базирано на рейтинги