Dokumentacja API
Integruj potężne tłumaczenie do aplikacji z naszym prostym REST API.
Rozpoczęcie
TranslateAPI zapewnia prosty interfejs REST do tłumaczenia tekstu między 180+ językami. Wszystkie punkty końcowe API zwracają odpowiedzi JSON.
https://api.translateapi.ai/api/v1/
Szybki start
Zapytaj o pierwsze tłumaczenie:
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!"
}
}
Uwierzytelnienie
Uwierzytelniaj swoje żądania za pomocą klucza API. Możesz utworzyć klawisze API z Twojego Panel.
Uwierzytelnianie nagłówka (zalecane)
Authorization: Bearer ta_your_api_key_here
Parametr zapytania
https://api.translateapi.ai/api/v1/translate/?api_key=ta_your_api_key_here
Przetłumacz tekst
Przetłumacz tekst na jeden język docelowy.
POST https://api.translateapi.ai/api/v1/translate/
Organ wniosku
| Parametr | Rodzaj | Wymagane | Opis |
|---|---|---|---|
text |
string | Tak. | Tekst do przetłumaczenia (max 50 000 znaków) |
target_language |
string | Tak* | Target language code (e.g., "es", "fr", "de") |
source_language |
string | Nie. | Source language code. Default: "auto" (auto-detect) |
* Użyj target_language (wiersz) dla jednego języka lub target_languages (masy) dla wielokrotnego. Patrz Tłumaczenie Multi-Target.
Odpowiedź
{
"translated_text": "Hola, mundo!",
"source_language": "en",
"target_language": "es",
"translations": {
"es": "Hola, mundo!"
},
"character_count": 13,
"translation_time": 0.45
}
Tłumaczenie Multi-Target
Przetłumacz tekst na wiele języków w jednym żądaniu. Używa tego samego punktu końcowego co pojedyncze tłumaczenie.
POST https://api.translateapi.ai/api/v1/translate/
Organ wniosku
{
"text": "Hello, world!",
"target_languages": ["es", "fr", "de", "ja"],
"source_language": "en"
}
Użyj target_languages (Ras) zamiast target_language (string) dla wielu celów.
Odpowiedź
{
"source_language": "en",
"translations": {
"es": "Hola, mundo!",
"fr": "Bonjour, monde!",
"de": "Hallo, Welt!",
"ja": "こんにちは、世界!"
},
"character_count": 52,
"translation_time": 2.31
}
Tłumaczenie serii
Przetłumacz kilka tekstów naraz przy przetwarzaniu async. Wyślij partię i ankiet o wyniki.
POST https://api.translateapi.ai/api/v1/translate/batch/
Krok 1: Wyślij serię
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"
}'
Odpowiedź (HTTP 202 akceptowana)
{
"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/"
}
Krok 2: Analiza wyników
GET https://api.translateapi.ai/api/v1/jobs/{job_id}/
Przykład badania (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)
Odpowiedź (w kolejce – w kolejce, czeka na GPU)
{
"job_id": "67535b2b-...",
"status": "pending",
"processed_texts": 0,
"total_texts": 3,
"progress_percentage": 0.0,
"queue_position": 3
}
Odpowiedź (w trakcie przetwarzania)
{
"job_id": "67535b2b-...",
"status": "processing",
"processed_texts": 1,
"total_texts": 3,
"progress_percentage": 33.33,
"queue_position": null
}
Odpowiedź (zakończona)
{
"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
}
}
Śledzenie postępów w czasie rzeczywistym
Każda odpowiedź na badania obejmuje pola postępu w czasie rzeczywistym, więc można dokładnie monitorować, co się dzieje z partią:
| Pole | Opis |
|---|---|
status |
Aktualny stan pracy: pending (polecony, czekający na pracownika GPU), processing (aktywnie tłumaczenie), completed, failed |
processed_texts |
Liczba indywidualnych tłumaczeń zakończonych dotychczas. Aktualizacje w czasie rzeczywistym, jak każdy tekst jest tłumaczony. |
total_texts |
Łączna liczba tłumaczeń w tej serii (teksty × języki docelowe). |
progress_percentage |
Odsetek zakończeń (0-100). Wyliczony z przetworzonych_tekstów / total_texts. |
queue_position |
Twoja pozycja w kolejce, gdy status jest "wstrzymujący" (1 = następny). Null po przetwarzaniu lub zakończeniu. Użyj tego, aby oszacować czas poczekania i pokazać status kolejki użytkownikom. |
processing_time |
Całkowity czas przetwarzania w sekundach (dostępny po zakończeniu). |
status jest "pending"Pracownicy GPU są zajęci innymi partiami. queue_position aby zobaczyć ile miejsc pracy jest przed Twoim (1 = jesteś następny). Twoja praca rozpocznie się automatycznie – nie potrzeba działania, po prostu kontynuuj ankietowanie.
Najlepsze praktyki dla dużych obciążeń roboczych
- Wyślij 1 język docelowy na zapytanie serii. Utrzymuje to każdą partię szybko i łatwo śledzić postępy.
- Przechowywać partie na 50-100 tekstów. Mniejsze partie zakończą się szybciej i zapewniają częstsze aktualizacje postępów.
- Uruchom co najmniej 2 równoległe zadania serii. GPU procesuje 2 partii równolegle — dodatkowe kolejki zadań i nie rozpoczyna się szybciej.
- Po przekroczeniu czasu, ponownie pobrać ten sam job_id zamiast składać nową partię. Oryginalne zadanie może nadal przetwarzać na GPU.
- Badanie co 3-5 sekund. Bardziej częste badania nie przyspiesza przetwarzania.
Seria wielojęzyczna
Przetłumacz wiele tekstów na wiele języków naraz:
{
"texts": ["Hello", "Goodbye"],
"target_languages": ["es", "fr"],
"source_language": "en"
}
Zakończone wyniki_ danych
{
"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
}
Parametry żądania
| Parametr | Rodzaj | Wymagane | Opis |
|---|---|---|---|
texts |
array | Tak. | Array strun do przetłumaczenia |
target_language |
string | Tak* | Kod języka docelowego dla jednego języka |
target_languages |
array | Tak* | Przestrzeń kodów języka docelowego dla wielu języków |
source_language |
string | Nie. | Source language code. Default: "auto" |
* Upewnić się, że którykolwiek z nich target_language lub target_languagesNie oboje.
job_id. Badanie GET /api/v1/jobs/{job_id}/ do czasu status jest "completed", a następnie przeczytaj result_data do tłumaczenia. Użyj progress_percentage Do śledzenia postępów.
Tłumaczenie dokumentu
Przetłumacz całe dokumenty przy zachowaniu formatu. Obsługuje wiele formatów plików.
POST https://api.translateapi.ai/api/v1/translate/document/
Wniosek (multipart/form-data)
| Parametr | Rodzaj | Wymagane | Opis |
|---|---|---|---|
file |
file | Tak. | Dokument do przetłumaczenia (max. 10MB) |
target_language |
string | Tak. | Target language code (e.g., "es", "fr", "de") |
source_language |
string | Nie. | Source language code. Default: "auto" (auto-detect) |
Obsługiwane typy plików
.txt- Pliki tekstowe.docx- Dokumenty słowowe.pdf- Dokumenty PDF (w tym skanowane).json- Pliki JSON (tłumaczone wartości stringowe).xml- Pliki XML
.srt- Pliki napisów.po/.pot- Pliki tłumaczeń Gettext.jpg/.jpeg- Zdjęcia JPEG (OCR).png- Zdjęcia PNG (OCR).tiff/.tif- Obrazy TIFF (OCR).bmp- Zdjęcia BMP (OCR).webp- Zdjęcia WebP (OCR)
Przykład (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 Pliki.
Odpowiedź
{
"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"
}
Wartości stanu
pending |
Plik wysłany, czekający na przetwarzanie |
processing |
Tłumaczenie w toku |
completed |
Tłumaczenie zakończone, pobierz dostępne |
failed |
Tłumaczenie nie powiodło się (poprawka błędu_ wiadomości) |
GET https://api.translateapi.ai/api/v1/translate/document/{id}/
Sprawdź stan tłumaczenia dokumentu lub odbierz URL pobierania.
Odpowiedź
{
"id": 123,
"original_filename": "document.docx",
"status": "completed",
"translated_file_url": "/media/translated/document_es.docx",
"character_count": 5420
}
Wykrywanie języka
Wykrywanie języka jest wbudowane w każdy wniosek o tłumaczenie. Set source_language to "auto" (lub opuścić) i wykryty język zostaje zwrócony w odpowiedzi.
POST https://api.translateapi.ai/api/v1/translate/
Organ wniosku
{
"text": "Bonjour, comment allez-vous?",
"target_language": "en"
}
Odpowiedź
{
"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
}
CZĘŚĆ CZĘŚĆ CZĘŚCIOWOŚĆ CZĘŚCIOWOŚCI source_language pole w odpowiedzi pokazuje wykryty język podczas używania automatycznego wykrywania.
Języki obsługiwane
Pobierz listę wszystkich obsługiwanych języków.
GET https://api.translateapi.ai/api/v1/translate/languages/
Odpowiedź
{
"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"},
...
]
}
Modele tłumaczenia
Używamy najnowocześniejszych modeli tłumaczenia otwartego źródła działających na naszej własnej infrastrukturze GPU. Wszystkie modele są licencjonowane komercyjne (Apache 2.0).
| Wzór | Języki | Najlepsze dla |
|---|---|---|
| Helsinki-NLP/opus-mt | 50+ par językowych | Języki wspólne (EN, ES, FR, DE, IT, PT, RU, ZH, JA itp.) |
| Google MADLAD-400 | 400+ języków | Rzadkie języki, kompleksowy zakres |
API automatycznie wybiera najlepszy model dla pary języków. Można opcjonalnie określić engine parametr:
| Silnik | Opis |
|---|---|
"auto" |
Domyślnie. Próbuje najpierw HuggingFace, zwraca się do MADLAD-400 |
"huggingface" |
Force HuggingFace/MarianMT (najszybsze, 50+ języków) |
"madlad" |
Siła MADLAD-400 (400+ języków) |
Rozwiązanie błędów
API wykorzystuje standardowe kody stanu HTTP, aby wskazywać sukces lub porażkę.
| Kod | Opis |
|---|---|
200 |
Sukces |
400 |
Zły wniosek - nieprawidłowe parametry |
401 |
Nieuprawniony - nieprawidłowy lub brakuje klucza API |
402 |
Wymagana płatność - Kontyngent dzienny |
429 |
Zbyt wiele zapytań - limit stawki przekroczony |
503 |
Usługa Niedostępna - Silnik tłumaczeń tymczasowo obniżony |
Format odpowiedzi na błąd
{
"error": "daily_limit_exceeded",
"credits_remaining": 0,
"daily_limit": 100000
}
Ograniczenia stawki
Ograniczenia różnią się w zależności od planu. Zob. ceny Szczegółowe informacje:
| Plan | Znaki/miesiąc | Cena | |
|---|---|---|---|
| Darmowe | 250,000 | $0 | Zarejestruj się za darmo |
| Rozpoczynacz | 2,500,000 | $9/Mo | Subskrypcja |
| Prof. | 10,000,000 | $29/Mo | Subskrypcja |
| Biznes | 40,000,000 | $79/Mo | Subskrypcja |
| Skaluj | 125,000,000 | $199/Mo | Subskrypcja |
Kiedy przekroczysz granicę, otrzymasz 429 Too Many Requests Odpowiedź do następnego miesiąca lub uaktualnij.
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.