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. Obtenha sua chave API
Criar uma conta gratuita e gerar a sua chave API a partir do painel:
- Inscrever-se em translateapi.ai/signup
- Vá para Painel de borda → Chaves da API
- Clique em "Crear a chave da API" e copie a sua chave
As teclas da API começam com ta_ seguido por 56 caracteres hexadecimais.
https://api.translateapi.ai/api/v1/2. Faça sua primeira solicitação
Substitua o TU_API_KEY pela chave do seu painel:
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
Cabeçalho apiKey
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 | Motor de tradução: "auto" (por defeito), "suggestivo", ou "madlad". Veja os modelos de tradução. 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 ou fixar-o para "auto" para detectar automaticamente a língua de origem. A língua detectada é devolvida na source_language campo de resposta.
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
}
}
Seguimento do progresso em tempo real
| Campo | Descrição |
|---|---|
status |
pending (em fila, à espera de um trabalhador do GPU), processing (traduzir ativamente), completed, failed |
processed_texts |
Número de traduções individuais completadas até agora. Atualizações em tempo real como cada texto é traduzido. |
progress_percentage |
Percentagem de conclusão (0-100). Calculada a partir de textos_processados/textos_total. |
queue_position |
Sua posição na fila quando o estado está "pendido" (1 = próximo). Null ao processar ou completar. Use isto para estimar o tempo de espera e mostrar o estado da fila aos seus usuários. |
processing_time |
Tempo total de processamento em segundos (disponível quando completado). |
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.
Melhores práticas para grandes cargas de trabalho
- Envie 1 idioma-alvo por pedido de lote. Isto mantém cada lote rápido e torna o progresso fácil de rastrear.
- Manter lotes em 50-100 textos. Lotes menores completam mais rápido e lhe dão atualizações de progresso mais frequentes.
- Envie tantos trabalhos em lote como você precisa — nossas escalas automáticas GPU cluster para lidar com a demanda. Empregos são processados em paralelo em múltiplas instâncias.
- No tempo de espera, re-poll o mesmo job_id em vez de enviar um novo lote. O trabalho original pode ainda estar processando na GPU.
- Enquete a cada 3-5 segundos. A sondagem mais frequente não acelera o processamento.
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
Documentos
.txt- Ficheiros de texto simples.docx- Documentos-chave.pdf- Documentos PDF (incluindo escaneados)
Dados e Localização
.json- Arquivos JSON (traduzir os valores de string).xml- Ficheiros XML.srt- Ficheiros de subtítulos.po/.pot- Ficheiros de tradução do Gettext
Imagens (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"},
...
]
}
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 | Aceito — Lote de trabalho na fila de espera com sucesso |
| 400 | Pedido inadequado — Parâmetros inválidos (texto faltante, linguagem não suportada, etc.) |
| 401 | Não autorizado - Inválido ou faltando chave API |
| 402 | Pagamento exigido — Créditos de caracteres esgotados. Atualize o seu plano ou compre um top-up. |
| 403 | Proibido — A chave API carece de escopo necessário ou IP não na lista branca |
| 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
}
Límites de utilização
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 | API de Lote | Documentos | 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.
Infraestrutura de nuvem de escala automática
A TranslateAPI é executada em instâncias NVIDIA A100 GPU dedicadas com escala horizontal automática. Quando aumenta a demanda, instâncias adicionais da GPU são lançadas em minutos para manter os tempos de resposta rápidos. Todos os pedidos são processados e encaminhados para enviar centenas de pedidos concorrentes e todos eles serão tratados. traduções em tempo real obtêm prioridade, processo de trabalhos em lote em segundo plano.
Precisa de mais créditos?
Sair de caracteres meados de mês? Comprar um topo de crédito de uma só vez sem alterar o seu plano. Ver embalagens de cima