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:

  1. Sign up at translateapi.ai/signup
  2. Go to Painel de borda → Chaves da API
  3. Click "Create API Key" and copy your key

API keys start with ta_ followed by 56 hex characters.

URL da base: 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
Mantenha as teclas API seguras! Não os expor no código do lado do cliente ou repositórios públicos.

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
}
Auto-Detection: Omit 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
}
Dica: Você pode traduzir até 50 idiomas em um único pedido.

Tradução de Lote

Traduzir múltiplos textos de uma vez com processamento de async. Envie um lote e pesquisa para obter resultados.

Limits: Max 100 texts per batch, max 300 total items (texts × target languages). Jobs time out 45 minutes after processing starts.
Speed: Common languages (ES, FR, DE) use fast models (~0.1s/text). Less common languages use our multilingual model (~1-3s/text).
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"
}
Suporte do OCR: Os arquivos de imagem e PDF digitalizados são processados com reconhecimento óptico de caracteres (OCR) para extrair texto antes da tradução. Para os melhores resultados, use imagens claras e de alta resolução.
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"},
        ...
    ]
}

View All 186 Languages

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.

Note: this endpoint is served from the main domain 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

Avaliar esta página
Obrigado pela sua classificação!
/5 baseado em Notas