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.
1. Weź klucz API
Utwórz bezpłatne konto i wygeneruj klucz API z panelu deski:
- Zarejestruj się. translateapi.ai/signup
- Idź do Panel → Klucze API
- Kliknij "Stwórz klucz API" i skopiuj klucz
Klucze API rozpoczynają się od ta_ a następnie 56 hex znaków.
https://api.translateapi.ai/api/v1/2. Zrób swoje pierwsze żądanie
Zastąpić VAŠE_API_KEY kluczem z panelu deskowego:
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!"
Odpowiedź
{
"translated_text": "Hola, mundo!",
"source_language": "en",
"target_language": "es",
"translations": {
"es": "Hola, mundo!"
},
"character_count": 13,
"translation_time": 0.45
}
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
Nagłówek ApiKey
Authorization: ApiKey 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) |
engine |
string | Nie. | Silnik tłumaczenia: "auto" (domyślnie), "huggingface" lub "madlad". Zobacz modele tłumaczenia. Modele tłumaczenia. |
* 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
}
source_language lub ustawić na "auto" do automatycznego wykrywania języka źródłowego. Wykryty język jest zwracany w source_language Pole odpowiedzi.
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"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)
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
| Pole | Opis |
|---|---|
status |
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. |
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). |
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.
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.
- Wyślij tyle miejsc pracy serii, ile potrzebujesz – nasza klastra GPU automatyczna obsługa popytu. Prace są przetwarzane równolegle w wielu przypadkach.
- 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.
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
Dokumenty
.txt- Pliki tekstowe.docx- Dokumenty słowowe.pdf- Dokumenty PDF (w tym skanowane)
& Lokalizacja danych
.json- Pliki JSON (tłumaczone wartości stringowe).xml- Pliki XML.srt- Pliki napisów.po/.pot- Pliki tłumaczeń Gettext
Obrazy (OCR)
.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"
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"
}
GET https://api.translateapi.ai/api/v1/translate/document/{id}/
Sprawdź stan tłumaczenia dokumentu lub odbierz URL pobierania.
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) |
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 |
| 202 | Pomyślnie zaakceptowano zadanie serii |
| 400 | Złe żądanie — nieprawidłowe parametry (brak tekstu, niepodtrzymywany język itp.) |
| 401 | Nieuprawniony - nieprawidłowy lub brakuje klucza API |
| 402 | Wymagana płatność — Kredyty charakterystyczne wyczerpane. Uaktualnij swój plan lub zakup top-up. |
| 403 | Zakazane – klucz API brakuje wymaganego zakresu lub IP nie w białej liście |
| 503 | Usługa Niedostępna - Silnik tłumaczeń tymczasowo obniżony |
Format odpowiedzi na błąd
{
"error": "insufficient_credits",
"credits_remaining": 0
}
Ograniczenia użytkowania
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:
| Plan | Znaki/miesiąc | Seria API | Dokumenty | 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 | ||
| Enterprise | Unlimited | $499/Mo | Contact Sales |
Kiedy przekroczysz granicę, otrzymasz 402 Payment Required Odpowiedź do następnego miesiąca lub uaktualnij.
Infrastruktura chmury automatycznej wyskalowania
TranslateAPI uruchamia na dedykowanej NVIDIA A100 instancji GPU z automatyczną skalizacją poziomą. Gdy popyt wzrasta, dodatkowe przypadki GPU są uruchamiane w ciągu kilku minut, aby utrzymać czas szybkiej reakcji. Wszystkie żądania są w kolejce i przetwarzane — wysłać setki jednoczesnych zapytań i wszystkie będą obsługiwane. Tłumaczenia w czasie rzeczywistym mają priorytet, pakietowy proces pracy w tle.
Potrzebujesz więcej kredytów?
Kończy się znaki w połowie miesiąca? Zakup jednorazowego zakupu kredytu bez zmiany planu. Widok opakowań top-up