Documentação da API
Integrar tradução poderosa em suas aplicações com a nossa API REST simples.
Começar
A TranslateAPI fornece uma interface REST simples para traduzir texto entre 180 mais idiomas. Todos os endpoints da API retornam respostas JSON.
1. Get Your API Key
Create a free account and generate your API key from the dashboard:
- Sign up at translateapi.ai/signup
- Go to Painel de borda → Chaves da API
- Click "Create API Key" and copy your key
API keys start with ta_ followed by 56 hex characters.
https://api.translateapi.ai/api/v1/2. Make Your First Request
Replace YOUR_API_KEY with the key from your dashboard:
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!"
Resposta
{
"translated_text": "Hola, mundo!",
"source_language": "en",
"target_language": "es",
"translations": {
"es": "Hola, mundo!"
},
"character_count": 13,
"translation_time": 0.45
}
Autenticação
Autenticar seus pedidos usando uma chave API. Você pode criar chaves API a partir de sua painel.
Autenticação Header (Recomendado)
Authorization: Bearer ta_your_api_key_here
ApiKey Header
Authorization: ApiKey ta_your_api_key_here
Parâmetro de Consulta
https://api.translateapi.ai/api/v1/translate/?api_key=ta_your_api_key_here
Traduzir Texto
Traduzir texto para um único idioma alvo.
POST https://api.translateapi.ai/api/v1/translate/
Órgão de Pedido
| Parâmetro | Tipo | Requerido | Descrição |
|---|---|---|---|
text |
string | Sim | Texto a traduzir (máx. 50.000 caracteres) |
target_language |
string | Sim* | Target language code (e.g., "es", "fr", "de") |
source_language |
string | Não | Source language code. Default: "auto" (auto-detect) |
engine |
string | Não | Translation engine: "auto" (default), "huggingface", or "madlad". See Translation Models. Modelos de Tradução. |
* Utilizar target_language (string) para uma única língua ou target_languages Para múltiplos. Tradução Multi-Target.
Resposta
{
"translated_text": "Hola, mundo!",
"source_language": "en",
"target_language": "es",
"translations": {
"es": "Hola, mundo!"
},
"character_count": 13,
"translation_time": 0.45
}
source_language or set it to "auto" to automatically detect the source language. The detected language is returned in the source_language response field.
Tradução Multi-Target
Traduzir texto para múltiplos idiomas em um único pedido. Usa o mesmo endpoint que uma única tradução.
POST https://api.translateapi.ai/api/v1/translate/
Órgão de Pedido
{
"text": "Hello, world!",
"target_languages": ["es", "fr", "de", "ja"],
"source_language": "en"
}
Utilização target_languages Em vez de target_language (string) para múltiplos alvos.
Resposta
{
"source_language": "en",
"translations": {
"es": "Hola, mundo!",
"fr": "Bonjour, monde!",
"de": "Hallo, Welt!",
"ja": "こんにちは、世界!"
},
"character_count": 52,
"translation_time": 2.31
}
Tradução de Lote
Traduzir múltiplos textos de uma vez com processamento de async. Envie um lote e pesquisa para obter resultados.
POST https://api.translateapi.ai/api/v1/translate/batch/
Passo 1: Enviar Lote
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"
}'
Resposta (HTTP 202 Aceitada)
{
"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/"
}
Etapa 2: Pesquisa de Resultados
GET https://api.translateapi.ai/api/v1/jobs/{job_id}/
Exemplo de sondagem (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)
Resposta (completada)
{
"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
}
}
Real-Time Progress Tracking
| Field | Descrição |
|---|---|
status |
pending (queued, waiting for a GPU worker), processing (actively translating), completed, failed |
processed_texts |
Number of individual translations completed so far. Updates in real time as each text is translated. |
progress_percentage |
Completion percentage (0-100). Calculated from processed_texts / total_texts. |
queue_position |
Your position in the queue when status is "pending" (1 = next up). Null when processing or completed. Use this to estimate wait time and show queue status to your users. |
processing_time |
Total processing time in seconds (available when completed). |
Lote Multi-Língua
Traduzir múltiplos textos para múltiplos idiomas de uma vez:
{
"texts": ["Hello", "Goodbye"],
"target_languages": ["es", "fr"],
"source_language": "en"
}
Data_de_resultado Completado
{
"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
}
Parâmetros de Pedido
| Parâmetro | Tipo | Requerido | Descrição |
|---|---|---|---|
texts |
array | Sim | Array de cordas para traduzir |
target_language |
string | Sim* | Código da língua-alvo para uma única língua |
target_languages |
array | Sim* | Array de códigos de língua-alvo para múltiplas línguas |
source_language |
string | Não | Source language code. Default: "auto" |
* Fornecer qualquer target_language ou target_languages, não ambos.
Best Practices for Large Workloads
- Send 1 target language per batch request. This keeps each batch fast and makes progress easy to track.
- Keep batches at 50-100 texts. Smaller batches complete faster and give you more frequent progress updates.
- Submit as many batch jobs as you need — our GPU cluster auto-scales to handle demand. Jobs are processed in parallel across multiple instances.
- On timeout, re-poll the same job_id instead of submitting a new batch. The original job may still be processing on the GPU.
- Poll every 3-5 seconds. More frequent polling does not speed up processing.
Tradução do documento
Traduzir documentos inteiros ao preservar a formatação. Suporta vários formatos de arquivo.
POST https://api.translateapi.ai/api/v1/translate/document/
Pedido (multipart/formulário)
| Parâmetro | Tipo | Requerido | Descrição |
|---|---|---|---|
file |
file | Sim | O documento a traduzir (máx. 10MB) |
target_language |
string | Sim | Target language code (e.g., "es", "fr", "de") |
source_language |
string | Não | Source language code. Default: "auto" (auto-detect) |
Tipos de Ficheiros Suportados
Documents
.txt- Ficheiros de texto simples.docx- Documentos-chave.pdf- Documentos PDF (incluindo escaneados)
Data & Localization
.json- Arquivos JSON (traduzir os valores de string).xml- Ficheiros XML.srt- Ficheiros de subtítulos.po/.pot- Ficheiros de tradução do Gettext
Images (OCR)
.jpg/.jpeg- Imagens JPEG (OCR).png- Imagens PNG (OCR).tiff/.tif- Imagens TIFF (OCR).bmp- Imagens BMP (OCR).webp- Imagens WebP (OCR)
Exemplo (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"
Resposta
{
"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}/
Verifique o estado de tradução de um documento ou recupere a URL do download.
Valores de Estado
pending |
Ficheiro carregado, à espera de ser processado |
processing |
Tradução em curso |
completed |
Tradução completa, download disponível |
failed |
A tradução falhou (verifique o erro_mensagem) |
Línguas Suportadas
Obtenha a lista de todas as línguas suportadas.
GET https://api.translateapi.ai/api/v1/translate/languages/
Resposta
{
"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"},
...
]
}
Submit Corrections
Suggest a better translation for a given source text. Corrections enter a moderation queue; once approved by our team they surface as "Community Verified" translations for that text.
https://translateapi.ai/api/v1/ (not the api. translation host), and requires an API key.POST https://translateapi.ai/api/v1/suggestions/
Órgão de Pedido
| Parameter | Tipo | Descrição |
|---|---|---|
source_text |
string | The original text that was translated. |
source_language |
string | Source language code (e.g. "en"). |
target_language |
string | Target language code (e.g. "es"). |
machine_translation |
string | The machine translation you are correcting. |
suggested_translation |
string | Your improved translation (must differ from machine_translation). |
Example Request
curl -X POST https://translateapi.ai/api/v1/suggestions/ \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"source_text": "Hello, world!",
"source_language": "en",
"target_language": "es",
"machine_translation": "Hola, mundo!",
"suggested_translation": "¡Hola, mundo!"
}'
Resposta
{
"id": 4213,
"status": "pending",
"created": true,
"message": "Correction submitted for review."
}
Re-submitting the same source/language pair updates your existing suggestion instead of creating a duplicate (returns 200 with "created": false).
Modelos de Tradução
Utilizamos modelos de tradução de código aberto de última geração que funcionam em nossa própria infraestrutura GPU. Todos os modelos são licenciados comercialmente (Apache 2.0).
| Modelo | Línguas | Melhor para |
|---|---|---|
| Helsinki-NLP/opus-mt | 50+ pares de línguas | Línguas comuns (EN, ES, FR, DE, IT, PT, RU, ZH, JA, etc.) |
| Google MADLAD-400 | 400+ línguas | Línguas raras, cobertura abrangente |
A API seleciona automaticamente o melhor modelo para o seu par de idiomas. Você pode opcionalmente especificar um engine parâmetro:
| Motor | Descrição |
|---|---|
"auto" |
Por defeito. Tria HuggingFace primeiro, volta para MADLAD-400 |
"huggingface" |
Força HuggingFace/MarianMT (mais rápido, 50+ línguas) |
"madlad" |
Força MADLAD-400 (400+ línguas) |
Tratamento de Erros
A API usa códigos de estado HTTP padrão para indicar sucesso ou falha.
| Código | Descrição |
|---|---|
| 200 | Sucesso |
| 202 | Accepted — Batch job queued successfully |
| 400 | Bad Request — Invalid parameters (missing text, unsupported language, etc.) |
| 401 | Não autorizado - Inválido ou faltando chave API |
| 402 | Payment Required — Character credits exhausted. Upgrade your plan or purchase a top-up. |
| 403 | Forbidden — API key lacks required scope or IP not in whitelist |
| 503 | Serviço não disponível - Motor de tradução temporariamente para baixo |
Formato de Resposta de Erro
{
"error": "insufficient_credits",
"credits_remaining": 0
}
Usage Limits
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:
| Plano | Características/Mes | Batch API | Documents | Preço | |
|---|---|---|---|---|---|
| Grátis | 250,000 | — | — | $0 | Inscreva-se gratuitamente |
| Início | 2,500,000 | $9/mo | Subscrever | ||
| Pro | 10,000,000 | $29/mo | Subscrever | ||
| Negócios | 40,000,000 | $79/mo | Subscrever | ||
| Escala | 125,000,000 | $199/mo | Subscrever | ||
| Enterprise | Unlimited | $499/mo | Contact Sales |
Quando exceder o seu limite, você receberá um 402 Payment Required resposta até o próximo mês ou você atualiza.
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. All requests are queued and processed — send hundreds of concurrent requests and they'll all be handled. Real-time translations get priority, batch jobs process in the background.
Need More Credits?
Run out of characters mid-month? Purchase a one-time credit top-up without changing your plan. View top-up packs