API dokumentacija
Integrirajte moćan prijevod u vaše aplikacije s našim jednostavnim REST API.
Započinjemo
TranslateAPI pruža jednostavno REST sučelje za prevođenje teksta između 180+ jezika. Svi API ishodi vraća JSON odgovore.
https://api.translateapi.ai/api/v1/
Brzi početak
Zahtjev za prvim prijevodom:
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!"
}
}
Ovjera
Ovjerite svoje zahtjeve korištenjem API ključa. Možete stvoriti API tipke iz vašeg Tabela s pločama.
Ovjera zaglavlja (preporučena)
Authorization: Bearer ta_your_api_key_here
Parametr upita
https://api.translateapi.ai/api/v1/translate/?api_key=ta_your_api_key_here
Prevedi tekst
Prevedite tekst na jedan ciljni jezik.
POST https://api.translateapi.ai/api/v1/translate/
Zahtjevno tijelo
| Parametri | Vrsta | Potrebno | Opis |
|---|---|---|---|
text |
string | -Da. -Da. | Tekst za prevođenje (najviše 50.000 znakova) |
target_language |
string | Da, da. | Target language code (e.g., "es", "fr", "de") |
source_language |
string | Ne. | Source language code. Default: "auto" (auto-detect) |
* Koristi target_language (string) za jedan jezik ili target_languages (Marie) za višestruke. Vidi Višestruki prijevod.
Odgovor
{
"translated_text": "Hola, mundo!",
"source_language": "en",
"target_language": "es",
"translations": {
"es": "Hola, mundo!"
},
"character_count": 13,
"translation_time": 0.45
}
Višestruki prijevod
Prevedite tekst na više jezika u jednom zahtjevu. Koristi isti ishod kao i jedan prijevod.
POST https://api.translateapi.ai/api/v1/translate/
Zahtjevno tijelo
{
"text": "Hello, world!",
"target_languages": ["es", "fr", "de", "ja"],
"source_language": "en"
}
Koristi target_languages (marsij) umjesto target_language (string) za više meta.
Odgovor
{
"source_language": "en",
"translations": {
"es": "Hola, mundo!",
"fr": "Bonjour, monde!",
"de": "Hallo, Welt!",
"ja": "こんにちは、世界!"
},
"character_count": 52,
"translation_time": 2.31
}
Parsirani prijevod
Prevedite više tekstova odjednom s asinc obradom. Pošaljite seriju i anketu za rezultate.
POST https://api.translateapi.ai/api/v1/translate/batch/
Korak 1: Odaberite parcelu
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"
}'
Odgovor (HTTP 202 prihvaćeno)
{
"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/"
}
Korak 2: Istraživanje rezultata
GET https://api.translateapi.ai/api/v1/jobs/{job_id}/
Primjer ispitivanja (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)
Odgovor (pokretanje – u redu, čekanje na GPU)
{
"job_id": "67535b2b-...",
"status": "pending",
"processed_texts": 0,
"total_texts": 3,
"progress_percentage": 0.0,
"queue_position": 3
}
Odgovor (prilikom obrade)
{
"job_id": "67535b2b-...",
"status": "processing",
"processed_texts": 1,
"total_texts": 3,
"progress_percentage": 33.33,
"queue_position": null
}
Odgovor (dovršen)
{
"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
}
}
Praćenje napretka u realnom vremenu
Svaki odgovor ankete uključuje polja napretka u realnom vremenu tako da možete pratiti točno ono što se događa sa svojom serijom:
| Polje | Opis |
|---|---|
status |
Trenutno stanje posla: pending (Naručeno, čeka na GPU radnika), processing (aktivno prevođenje), completed, failed |
processed_texts |
Broj pojedinačnih prijevoda završen do sada. Ažuriranja u realnom vremenu kao svaki tekst je preveden. |
total_texts |
Ukupan broj prijevoda u ovoj seriji (teksti × ciljni jezici). |
progress_percentage |
Postotak dovršetka (0-100). Izračunano iz procesiranih_ teksta / total_teksta. |
queue_position |
Vaš položaj u redu kada je status "panding" (1 = sljedeća gore). Null prilikom obrade ili završetka. Koristite ovo za procjenu vremena čekanja i prikazivanje statusa reda svojim korisnicima. |
processing_time |
Ukupno vrijeme obrade u sekundama (dostupno nakon završetka). |
status je "pending"GPU radnici su zauzeti drugim serijama. queue_position kako bi vidjeli koliko je poslova ispred vas (1 = ste sljedeći). Vaš posao će početi automatski – nema akcije potrebno, samo nastavite anketu.
Najbolje prakse za velike radne opterećenja
- Pošaljite 1 ciljni jezik po zahtjevu za serijom. Ovo održava svaku seriju brzo i olakšava praćenje napretka.
- Držite serije na 50-100 tekstova. Manje serije kompletiraju brže i daju vam češće napretke ažuriranja.
- Pokrenite na najviše 2 istovremena serija posla. GPU procesira 2 serije paralelno — dodatni posao reda i neće početi brže.
- Pri vremenskom prekidu, ponavljanje iste job_id umjesto odašiljanja nove serije. Izvorni posao još uvijek može biti obrada na GPU.
- Anketa svakih 3-5 sekundi. Češće anketa ne ubrzava obradu.
Višejezični paket
Prevedi više tekstova na više jezika odjednom:
{
"texts": ["Hello", "Goodbye"],
"target_languages": ["es", "fr"],
"source_language": "en"
}
Dovršeni rezultati
{
"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
}
Parametri zatraži
| Parametri | Vrsta | Potrebno | Opis |
|---|---|---|---|
texts |
array | -Da. -Da. | Raspored stringova za prevođenje |
target_language |
string | Da, da. | Šifra ciljnog jezika za jedan jezik |
target_languages |
array | Da, da. | Raspored ciljnih kodova jezika za više jezika |
source_language |
string | Ne. | Source language code. Default: "auto" |
* Osigurajte bilo koji target_language ili target_languages, ne oboje.
job_id. Istraživanje GET /api/v1/jobs/{job_id}/ sve do status je "completed", zatim pročitati result_data za prijevode. Koristi progress_percentage Da pratimo napredak.
_Dokumenti
Prevodi čitave dokumente pri očuvanju formatiranja. Podržava više formata datoteka.
POST https://api.translateapi.ai/api/v1/translate/document/
Zahtjev (multipartmentalni/formalni podaci)
| Parametri | Vrsta | Potrebno | Opis |
|---|---|---|---|
file |
file | -Da. -Da. | Dokument koji će se prevesti (max. 10MB) |
target_language |
string | -Da. -Da. | Target language code (e.g., "es", "fr", "de") |
source_language |
string | Ne. | Source language code. Default: "auto" (auto-detect) |
Podržani tipovi datoteka
.txt- Obične tekstualne datoteke.docx- Riječni dokumenti.pdf- PDF dokumenti (uključujući skeniranje).json- JSON datoteke (vrijednosti niza prevodi).xml- XML datoteke
.srt- Datoteke podnaslova.po/.pot- Gettext translation datoteke.jpg/.jpeg- JPEG slike (OCR).png- PNG slike (OCR).tiff/.tif- TIFF slike (OCR).bmp- BMP slike (OCR).webp- WebP slike (OCR)
Primjer (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 Datoteka.
Odgovor
{
"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"
}
Vrijednosti stanja
pending |
Datoteka uploadirana, čeka na obradu |
processing |
Prijevod u tijeku |
completed |
Prijevod završen, preuzimanje dostupno |
failed |
Prijevod nije uspio (provjeri pogrešku_poruka) |
GET https://api.translateapi.ai/api/v1/translate/document/{id}/
Provjerite stanje prijevoda dokumenta ili dohvatite URL preuzimanja.
Odgovor
{
"id": 123,
"original_filename": "document.docx",
"status": "completed",
"translated_file_url": "/media/translated/document_es.docx",
"character_count": 5420
}
Otkrivanje jezika
Detekcija jezika je ugrađena u svaki zahtjev za prijevodom. source_language to "auto" (ili ga izostavite) i otkriveni jezik je vraćen u odgovoru.
POST https://api.translateapi.ai/api/v1/translate/
Zahtjevno tijelo
{
"text": "Bonjour, comment allez-vous?",
"target_language": "en"
}
Odgovor
{
"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
}
Dječja jezgra. source_language polje u odgovoru prikazuje otkriveni jezik kada se koristi automatsko otkrivanje.
Podržani jezici
Dobavi popis svih podržanih jezika.
GET https://api.translateapi.ai/api/v1/translate/languages/
Odgovor
{
"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"},
...
]
}
Modeli prijevoda
Koristimo najmodernije modele prevođenja otvorenog izvora koji rade na vlastitoj GPU infrastrukturi. Svi modeli su komercijalno licencirani (Apache 2.0).
| Uzorak | Jezici | Najbolje za |
|---|---|---|
| Helsinki-NLP/opus-mt | 50+ Jezikovni parovi | Zajednički jezici (EN, ES, FR, DE, IT, PT, RU, ZH, JA, itd.) |
| Google MADLAD-400 | 400+ jezika | Rijetki jezici, sveobuhvatna pokrivenost |
API automatski odabire najbolji model za vaš jezični par. Možete opcionalno navesti engine parametar:
| Pogon | Opis |
|---|---|
"auto" |
Podrazumijevano. Pokušava prvo HuggingFace, pada natrag na MADLAD-400 |
"huggingface" |
Force HuggingFace/MarianMT (najbrže, 50+ jezika) |
"madlad" |
Sila MADLAD-400 (400+ jezika) |
Rukovanje greškama
API koristi standardne HTTP kodove statusa kako bi pokazao uspjeh ili neuspjeh.
| Oznaka | Opis |
|---|---|
200 |
Uspjeh |
400 |
Loš zahtjev - Neispravni parametri |
401 |
Neovlašteni - neispravan ili nedostaje API ključ |
402 |
Obavezno plaćanje - Dnevna kvota karaktera prekoračena |
429 |
Previše zahtjeva - ograničenje stope prekoračeno |
503 |
Servis nedostupan - Prijevod motor privremeno dolje |
Format odgovora na grešku
{
"error": "daily_limit_exceeded",
"credits_remaining": 0,
"daily_limit": 100000
}
Ograničenja stope
Ograničenja se razlikuju prema planu. Vidi cijene za potpune detalje:
| Plan | Znakovi/Mjesec | Cijena | |
|---|---|---|---|
| Slobodno | 250,000 | $0 | Slobodno se prijavite |
| Pokretanje | 2,500,000 | $9/Mo | Pretplati se |
| Profesionalno | 10,000,000 | $29/Mo | Pretplati se |
| Poslovno | 40,000,000 | $79/Mo | Pretplati se |
| Skaliraj | 125,000,000 | $199/Mo | Pretplati se |
Kada pređeš granicu, primit ćeš 429 Too Many Requests odgovor do sljedećeg mjeseca ili nadogradite.
Infrastruktura oblaka za automatsko mjerenje oblaka
TranslateAPI radi na posvećenom NVIDIA A100 GPU primjeraka s automatskim horizontalnim skaliranjem. Kada se potražnja povećava, dodatni GPU slučajevi se pokreću u roku od nekoliko minuta kako bi se održalo vrijeme brzog odgovora. To znači da naš API može nositi gotovo neograničene istodobne zahtjeve bez degradacije – od jednog zahtjeva do tisuća u minuti.