Introducción
¡Bienvenido a la API de traducción i18n-agent! Servicio de traducción con tecnología de IA y adaptación cultural
Esta documentación de la API proporciona información completa sobre todos los endpoints disponibles, métodos de autenticación, formatos de solicitud/respuesta y códigos de error.
URLs base
| Entorno | URL |
|---|---|
| Producción | https://api.i18nagent.ai |
Funciones clave
- 🌐 Soporte multilingüe - Traducción de contenido a más de 10 idiomas con adaptación cultural
- 🚀 Transmisión en tiempo real - Server-Sent Events para actualizaciones de progreso
- 📁 Traducción de archivos - Compatible con JSON, YAML, XML, CSV y más
- 🔐 Autenticación segura - Autenticación basada en clave de API
- 💳 Sistema de créditos - Modelo de precios de pago por uso
- 🤖 Con tecnología de IA - Utiliza LLMs avanzados para traducciones precisas
Autenticación
Para autenticarse, use este código:
# With shell, you can just pass the correct header with each request
curl "api_endpoint_here" \
-H "Authorization: Bearer i18n_your_api_key_here"
const headers = {
'Authorization': 'Bearer i18n_your_api_key_here',
'Content-Type': 'application/json'
};
fetch('api_endpoint_here', { headers })
.then(response => response.json())
.then(data => console.log(data));
import requests
headers = {
'Authorization': 'Bearer i18n_your_api_key_here',
'Content-Type': 'application/json'
}
response = requests.get('api_endpoint_here', headers=headers)
print(response.json())
package main
import (
"net/http"
)
func main() {
client := &http.Client{}
req, _ := http.NewRequest("GET", "api_endpoint_here", nil)
req.Header.Add("Authorization", "Bearer i18n_your_api_key_here")
resp, _ := client.Do(req)
defer resp.Body.Close()
}
Asegúrese de reemplazar
i18n_your_api_key_herecon su clave de API.
La API de i18n-agent utiliza claves de API para permitir el acceso. Puede obtener su clave de API desde su panel de cuenta.
La clave de API debe incluirse en todas las solicitudes al servidor mediante un encabezado con el siguiente formato:
Authorization: Bearer i18n_your_api_key_here
Endpoints
Créditos
Obtener créditos del equipo
GET /credits
Obtener el saldo de créditos actual del equipo autenticado
curl -X GET "https://api.i18nagent.ai/credits" \
-H "Authorization: Bearer i18n_your_api_key_here" \
-H "Content-Type: application/json"
const response = await fetch('https://api.i18nagent.ai/credits', {
method: 'GET',
headers: {
'Authorization': 'Bearer i18n_your_api_key_here',
'Content-Type': 'application/json'
}
});
const data = await response.json();
console.log(data);
import requests
import json
response = requests.get(
'https://api.i18nagent.ai/credits',
headers={
'Authorization': 'Bearer i18n_your_api_key_here',
'Content-Type': 'application/json'
}
)
print(response.json())
package main
import (
"bytes"
"encoding/json"
"net/http"
)
func main() {
client := &http.Client{}
req, _ := http.NewRequest("GET", "https://api.i18nagent.ai/credits", )
req.Header.Add("Authorization", "Bearer i18n_your_api_key_here")
req.Header.Add("Content-Type", "application/json")
resp, _ := client.Do(req)
defer resp.Body.Close()
}
El comando anterior devuelve un JSON con la siguiente estructura:
{
"success": true,
"data": {
"teamId": "team_123",
"teamName": "My Team",
"credits": 125.5,
"userId": "user_456"
},
"metadata": {
"timestamp": "2024-01-15T12:00:00.000Z"
}
}
Campos de respuesta
| Campo | Tipo | Descripción |
|---|---|---|
| success | boolean | Indica si la solicitud se completó con éxito |
| data | object | |
| data.teamId | string | Identificador de equipo |
| data.teamName | string | Nombre del equipo |
| data.credits | number | Saldo de créditos actual |
| data.userId | string | Identificador de usuario |
| metadata | object | |
| metadata.timestamp | string | Marca de tiempo de la respuesta |
Idiomas
Listar idiomas compatibles
GET /languages
Obtener una lista de todos los idiomas compatibles con sus calificaciones de calidad
curl -X GET "https://api.i18nagent.ai/languages" \
-H "Authorization: Bearer i18n_your_api_key_here" \
-H "Content-Type: application/json"
const response = await fetch('https://api.i18nagent.ai/languages', {
method: 'GET',
headers: {
'Authorization': 'Bearer i18n_your_api_key_here',
'Content-Type': 'application/json'
}
});
const data = await response.json();
console.log(data);
import requests
import json
response = requests.get(
'https://api.i18nagent.ai/languages',
headers={
'Authorization': 'Bearer i18n_your_api_key_here',
'Content-Type': 'application/json'
}
)
print(response.json())
package main
import (
"bytes"
"encoding/json"
"net/http"
)
func main() {
client := &http.Client{}
req, _ := http.NewRequest("GET", "https://api.i18nagent.ai/languages", )
req.Header.Add("Authorization", "Bearer i18n_your_api_key_here")
req.Header.Add("Content-Type", "application/json")
resp, _ := client.Do(req)
defer resp.Body.Close()
}
El comando anterior devuelve un JSON con la siguiente estructura:
{
"languages": [
{
"code": "es",
"name": "Spanish",
"quality": "high"
}
]
}
Campos de respuesta
| Campo | Tipo | Descripción |
|---|---|---|
| languages | array |
Trabajos de traducción
Obtener historial de traducción
GET /translations
Obtener una lista paginada de trabajos de traducción con filtros opcionales por estado, tipo, idiomas de destino y rango de fechas
curl -X GET "https://api.i18nagent.ai/translations" \
-H "Authorization: Bearer i18n_your_api_key_here" \
-H "Content-Type: application/json"
const response = await fetch('https://api.i18nagent.ai/translations', {
method: 'GET',
headers: {
'Authorization': 'Bearer i18n_your_api_key_here',
'Content-Type': 'application/json'
}
});
const data = await response.json();
console.log(data);
import requests
import json
response = requests.get(
'https://api.i18nagent.ai/translations',
headers={
'Authorization': 'Bearer i18n_your_api_key_here',
'Content-Type': 'application/json'
}
)
print(response.json())
package main
import (
"bytes"
"encoding/json"
"net/http"
)
func main() {
client := &http.Client{}
req, _ := http.NewRequest("GET", "https://api.i18nagent.ai/translations", )
req.Header.Add("Authorization", "Bearer i18n_your_api_key_here")
req.Header.Add("Content-Type", "application/json")
resp, _ := client.Do(req)
defer resp.Body.Close()
}
El comando anterior devuelve un JSON con la siguiente estructura:
{
"translations": [
{
"id": "translation_job_id",
"type": "TEXT",
"fileName": "file_name_(for_file_translations)",
"fileType": "file_type_(for_file_translations)",
"targetLanguages": [
"string"
],
"status": "PENDING",
"progress": 0,
"wordCount": 0,
"creditsRequired": 0,
"createdAt": "2024-01-15T12:00:00.000Z",
"startedAt": "2024-01-15T12:00:00.000Z",
"completedAt": "2024-01-15T12:00:00.000Z",
"user": {}
}
],
"pagination": {
"page": 0,
"limit": 0,
"total": 0,
"totalPages": 0
}
}
Parámetros de consulta
| Parámetro | Obligatorio | Descripción |
|---|---|---|
| page | No | Número de página para la paginación |
| limit | No | Número de elementos por página |
| status | No | Filtrar por estado de la traducción |
| type | No | Filtrar por tipo de traducción |
| targetLanguages | No | Lista de códigos de idioma de destino, separados por comas, para filtrar |
| fromDate | No | Filtrar traducciones creadas después de esta fecha |
| toDate | No | Filtrar traducciones creadas antes de esta fecha |
Campos de respuesta
| Campo | Tipo | Descripción |
|---|---|---|
| translations | array | |
| pagination | object | |
| pagination.page | integer | |
| pagination.limit | integer | |
| pagination.total | integer | |
| pagination.totalPages | integer |
Obtener detalles de la traducción
GET /translations/{id}
Obtener detalles de una traducción específica por ID
curl -X GET "https://api.i18nagent.ai/translations/{id}" \
-H "Authorization: Bearer i18n_your_api_key_here" \
-H "Content-Type: application/json"
const response = await fetch('https://api.i18nagent.ai/translations/{id}', {
method: 'GET',
headers: {
'Authorization': 'Bearer i18n_your_api_key_here',
'Content-Type': 'application/json'
}
});
const data = await response.json();
console.log(data);
import requests
import json
response = requests.get(
'https://api.i18nagent.ai/translations/{id}',
headers={
'Authorization': 'Bearer i18n_your_api_key_here',
'Content-Type': 'application/json'
}
)
print(response.json())
package main
import (
"bytes"
"encoding/json"
"net/http"
)
func main() {
client := &http.Client{}
req, _ := http.NewRequest("GET", "https://api.i18nagent.ai/translations/{id}", )
req.Header.Add("Authorization", "Bearer i18n_your_api_key_here")
req.Header.Add("Content-Type", "application/json")
resp, _ := client.Do(req)
defer resp.Body.Close()
}
El comando anterior devuelve un JSON con la siguiente estructura:
{
"id": "translation_job_id",
"type": "TEXT",
"fileName": "original_file_name_(for_file_translations)",
"fileType": "file_type_(json,_yaml,_etc",
"fileSize": 0,
"targetLanguages": [
"string"
],
"context": "translation_context_or_instructions",
"wordCount": 0,
"creditsRequired": 0,
"status": "PENDING",
"progress": 0,
"errorMessage": "error_message_if_translation_failed",
"translatedFiles": {},
"createdAt": "2024-01-15T12:00:00.000Z",
"startedAt": "2024-01-15T12:00:00.000Z",
"completedAt": "2024-01-15T12:00:00.000Z",
"user": {}
}
Parámetros de consulta
| Parámetro | Obligatorio | Descripción |
|---|---|---|
| id | Sí | ID de traducción |
Campos de respuesta
| Campo | Tipo | Descripción |
|---|---|---|
| id | string | ID del trabajo de traducción |
| type | string | Tipo de trabajo de traducción |
| fileName | string | Nombre del archivo original (para traducciones de archivos) |
| fileType | string | Tipo de archivo (json, yaml, etc.) |
| fileSize | integer | Tamaño del archivo en bytes |
| targetLanguages | array | Idiomas de destino para la traducción |
| context | string | Contexto o instrucciones de traducción |
| wordCount | integer | Número de palabras en el contenido original |
| creditsRequired | number | Créditos requeridos para esta traducción |
| status | string | Estado actual de la traducción |
| progress | integer | Porcentaje de progreso (0-100) |
| errorMessage | string | Mensaje de error si la traducción falló |
| translatedFiles | object | Datos del archivo traducido (cuando se completa) |
| createdAt | string | Fecha de creación del trabajo |
| startedAt | string | Inicio del procesamiento |
| completedAt | string | Momento en que se completó el trabajo |
| user | object | Usuario que creó la traducción |
Obtener estado de la traducción
GET /translations/{id}/status
Obtener el estado en tiempo real de un trabajo de traducción con seguimiento detallado del avance, que incluye: porcentaje de progreso, tiempo transcurrido, tiempo estimado restante, información de checkpoints, finalización parcial para traducciones a varios idiomas y URLs de descarga prefirmadas para los resultados completados.
curl -X GET "https://api.i18nagent.ai/translations/{id}/status" \
-H "Authorization: Bearer i18n_your_api_key_here" \
-H "Content-Type: application/json"
const response = await fetch('https://api.i18nagent.ai/translations/{id}/status', {
method: 'GET',
headers: {
'Authorization': 'Bearer i18n_your_api_key_here',
'Content-Type': 'application/json'
}
});
const data = await response.json();
console.log(data);
import requests
import json
response = requests.get(
'https://api.i18nagent.ai/translations/{id}/status',
headers={
'Authorization': 'Bearer i18n_your_api_key_here',
'Content-Type': 'application/json'
}
)
print(response.json())
package main
import (
"bytes"
"encoding/json"
"net/http"
)
func main() {
client := &http.Client{}
req, _ := http.NewRequest("GET", "https://api.i18nagent.ai/translations/{id}/status", )
req.Header.Add("Authorization", "Bearer i18n_your_api_key_here")
req.Header.Add("Content-Type", "application/json")
resp, _ := client.Do(req)
defer resp.Body.Close()
}
El comando anterior devuelve un JSON con la siguiente estructura:
{
"id": "translation_job_id",
"status": "PENDING",
"statusText": "localized_human-readable_status_message",
"progress": 0,
"elapsedTime": "120 seconds",
"estimatedTimeRemaining": "45 seconds",
"message": "Translation in progress... 65% complete",
"chunks": {
"completed": 0,
"total": 0
},
"lastCheckpointId": "opaque_checkpoint_id_for_the_last_saved_checkpoint_(can_be_used_to_resume)",
"checkpointDescription": "Localization (65% complete, chunk 60%)",
"completedLanguages": [
"es",
"fr",
"de"
],
"partialCompletionMessage": "3 language(s) completed: es, fr, de",
"downloadUrls": {},
"createdAt": "2024-01-15T12:00:00.000Z",
"startedAt": "2024-01-15T12:00:00.000Z",
"completedAt": "2024-01-15T12:00:00.000Z",
"metadata": {},
"result": {},
"error": "error_message_(only_when_failed)"
}
Parámetros de consulta
| Parámetro | Obligatorio | Descripción |
|---|---|---|
| id | Sí | ID de la traducción |
Campos de respuesta
| Campo | Tipo | Descripción |
|---|---|---|
| id | string | ID del trabajo de traducción |
| status | string | Estado actual |
| statusText | string | Mensaje de estado legible y localizado |
| progress | integer | Porcentaje de progreso (0-100) |
| elapsedTime | string | Tiempo transcurrido desde que el trabajo inició el procesamiento |
| estimatedTimeRemaining | string | Tiempo estimado restante para finalizar |
| message | string | Mensaje de estado o detalles del error |
| chunks | object | Progreso del procesamiento por lotes/fragmentos (para traducciones extensas) |
| chunks.completed | integer | Número de fragmentos completados |
| chunks.total | integer | Número total de fragmentos |
| lastCheckpointId | string | ID opaco del último punto de control guardado (se puede utilizar para reanudar) |
| checkpointDescription | string | Descripción legible por humanos del progreso actual del punto de control |
| completedLanguages | array | Arreglo de códigos de idioma completados (para traducciones en varios idiomas con finalización parcial) |
| partialCompletionMessage | string | Mensaje que describe el estado de finalización parcial |
| downloadUrls | object | URLs de descarga prefirmadas para traducciones completadas, organizadas por código de idioma. Ejemplo: {"es": "https://...", "fr": "https://..."}. Las URLs expiran después de 1 hora. Este es el método principal para acceder a los archivos de traducción completados. |
| createdAt | string | Fecha de creación del trabajo |
| startedAt | string | Fecha en que el trabajo inició el procesamiento |
| completedAt | string | Fecha de finalización del trabajo |
| metadata | object | Metadatos adicionales de la traducción |
| result | object | Resultado de la traducción (solo cuando se completa) |
| error | string | Mensaje de error (solo cuando falló) |
Descargar resultado de la traducción
GET /translations/{id}/result
Descargar el contenido traducido
curl -X GET "https://api.i18nagent.ai/translations/{id}/result" \
-H "Authorization: Bearer i18n_your_api_key_here" \
-H "Content-Type: application/json"
const response = await fetch('https://api.i18nagent.ai/translations/{id}/result', {
method: 'GET',
headers: {
'Authorization': 'Bearer i18n_your_api_key_here',
'Content-Type': 'application/json'
}
});
const data = await response.json();
console.log(data);
import requests
import json
response = requests.get(
'https://api.i18nagent.ai/translations/{id}/result',
headers={
'Authorization': 'Bearer i18n_your_api_key_here',
'Content-Type': 'application/json'
}
)
print(response.json())
package main
import (
"bytes"
"encoding/json"
"net/http"
)
func main() {
client := &http.Client{}
req, _ := http.NewRequest("GET", "https://api.i18nagent.ai/translations/{id}/result", )
req.Header.Add("Authorization", "Bearer i18n_your_api_key_here")
req.Header.Add("Content-Type", "application/json")
resp, _ := client.Do(req)
defer resp.Body.Close()
}
Parámetros de consulta
| Parámetro | Obligatorio | Descripción |
|---|---|---|
| id | Sí | ID de traducción |
| language | No | Código de idioma para un resultado de idioma específico |
Descargar archivo original
GET /translations/{id}/original
Descargar el archivo original subido
curl -X GET "https://api.i18nagent.ai/translations/{id}/original" \
-H "Authorization: Bearer i18n_your_api_key_here" \
-H "Content-Type: application/json"
const response = await fetch('https://api.i18nagent.ai/translations/{id}/original', {
method: 'GET',
headers: {
'Authorization': 'Bearer i18n_your_api_key_here',
'Content-Type': 'application/json'
}
});
const data = await response.json();
console.log(data);
import requests
import json
response = requests.get(
'https://api.i18nagent.ai/translations/{id}/original',
headers={
'Authorization': 'Bearer i18n_your_api_key_here',
'Content-Type': 'application/json'
}
)
print(response.json())
package main
import (
"bytes"
"encoding/json"
"net/http"
)
func main() {
client := &http.Client{}
req, _ := http.NewRequest("GET", "https://api.i18nagent.ai/translations/{id}/original", )
req.Header.Add("Authorization", "Bearer i18n_your_api_key_here")
req.Header.Add("Content-Type", "application/json")
resp, _ := client.Do(req)
defer resp.Body.Close()
}
Parámetros de consulta
| Parámetro | Obligatorio | Descripción |
|---|---|---|
| id | Sí | ID de traducción |
Reanudar traducción desde un punto de control
POST /translations/{id}/resume
Reanudar una traducción fallida o interrumpida desde un punto de control específico, o automáticamente desde el último punto de control completado con éxito
curl -X POST "https://api.i18nagent.ai/translations/{id}/resume" \
-H "Authorization: Bearer i18n_your_api_key_here" \
-H "Content-Type: application/json" \
-d '{
"texts": [
"Hello, world!",
"Welcome to our service"
],
"targetLanguage": "es",
"targetAudience": "general",
"industry": "technology",
"sourceLanguage": "en",
"region": "Mexico",
"notes": "Keep technical terms in English, use formal tone"
}'
const response = await fetch('https://api.i18nagent.ai/translations/{id}/resume', {
method: 'POST',
headers: {
'Authorization': 'Bearer i18n_your_api_key_here',
'Content-Type': 'application/json'
},
body: JSON.stringify({
"texts": [
"Hello, world!",
"Welcome to our service"
],
"targetLanguage": "es",
"targetAudience": "general",
"industry": "technology",
"sourceLanguage": "en",
"region": "Mexico",
"notes": "Keep technical terms in English, use formal tone"
})
});
const data = await response.json();
console.log(data);
import requests
import json
response = requests.post(
'https://api.i18nagent.ai/translations/{id}/resume',
headers={
'Authorization': 'Bearer i18n_your_api_key_here',
'Content-Type': 'application/json'
},
json={
"texts": [
"Hello, world!",
"Welcome to our service"
],
"targetLanguage": "es",
"targetAudience": "general",
"industry": "technology",
"sourceLanguage": "en",
"region": "Mexico",
"notes": "Keep technical terms in English, use formal tone"
}
)
print(response.json())
package main
import (
"bytes"
"encoding/json"
"net/http"
)
func main() {
client := &http.Client{}
data := map[string]interface{}{
"texts": []string{"Hello, world!", "Welcome to our service"},
"targetLanguage": "es",
"targetAudience": "general",
"industry": "technology",
}
jsonData, _ := json.Marshal(data)
req, _ := http.NewRequest("POST", "https://api.i18nagent.ai/translations/{id}/resume", bytes.NewBuffer(jsonData))
req.Header.Add("Authorization", "Bearer i18n_your_api_key_here")
req.Header.Add("Content-Type", "application/json")
resp, _ := client.Do(req)
defer resp.Body.Close()
}
El comando anterior devuelve un JSON con la siguiente estructura:
{
"success": true,
"message": "Translation resume initiated",
"id": "translation_job_id",
"checkpointId": "the_checkpoint_id_from_which_the_translation_is_resuming",
"description": "Resuming from last checkpoint",
"status": "PROCESSING"
}
Parámetros de consulta
| Parámetro | Obligatorio | Descripción |
|---|---|---|
| id | Sí | ID de traducción |
Parámetros del cuerpo de la solicitud
| Parámetro | Tipo | Obligatorio | Descripción |
|---|---|---|---|
| checkpointId | string | No | ID de punto de control opaco desde el cual reanudar (obtenido del endpoint de estado). Si no se proporciona y autoDetect es true, se reanudará desde el último punto de control completado con éxito. |
| continueToEnd | boolean | No | Si se debe continuar procesando todo el contenido restante después de reanudar (predeterminado: true) |
| autoDetect | boolean | No | Detectar automáticamente y reanudar desde el último punto de control completado con éxito si no se proporciona checkpointId (predeterminado: true) |
Campos de respuesta
| Campo | Tipo | Descripción |
|---|---|---|
| success | boolean | Indica si la reanudación se inició con éxito |
| message | string | Mensaje de estado |
| id | string | ID del trabajo de traducción |
| checkpointId | string | El ID del punto de control desde el cual se reanuda la traducción |
| description | string | Descripción legible por humanos de la acción de reanudación |
| status | string | Estado actual de la traducción después de reanudar |
Obtener trabajos de traducción activos
GET /translations/jobs/active
Obtener la lista de trabajos de traducción activos
curl -X GET "https://api.i18nagent.ai/translations/jobs/active" \
-H "Authorization: Bearer i18n_your_api_key_here" \
-H "Content-Type: application/json"
const response = await fetch('https://api.i18nagent.ai/translations/jobs/active', {
method: 'GET',
headers: {
'Authorization': 'Bearer i18n_your_api_key_here',
'Content-Type': 'application/json'
}
});
const data = await response.json();
console.log(data);
import requests
import json
response = requests.get(
'https://api.i18nagent.ai/translations/jobs/active',
headers={
'Authorization': 'Bearer i18n_your_api_key_here',
'Content-Type': 'application/json'
}
)
print(response.json())
package main
import (
"bytes"
"encoding/json"
"net/http"
)
func main() {
client := &http.Client{}
req, _ := http.NewRequest("GET", "https://api.i18nagent.ai/translations/jobs/active", )
req.Header.Add("Authorization", "Bearer i18n_your_api_key_here")
req.Header.Add("Content-Type", "application/json")
resp, _ := client.Do(req)
defer resp.Body.Close()
}
El comando anterior devuelve un JSON con la siguiente estructura:
{
"activeJobs": [
{
"id": "string",
"type": "FILE",
"fileName": "string",
"fileType": "string",
"text": "string",
"targetLanguages": [
"string"
],
"status": "PENDING",
"progress": 0,
"wordCount": 0,
"creditsRequired": 0,
"createdAt": "string",
"startedAt": "string",
"originalPreview": "string",
"user": {
"id": "string",
"name": "string",
"email": "string"
}
}
]
}
Campos de respuesta
| Campo | Tipo | Descripción |
|---|---|---|
| activeJobs | array |
Descargar resultados de la traducción
POST /translations/{jobId}/download
Descargar los resultados de traducción completados. Devuelve URLs de descarga prefirmadas organizadas por idioma. Las URLs expiran después de 24 horas.
curl -X POST "https://api.i18nagent.ai/translations/{jobId}/download" \
-H "Authorization: Bearer i18n_your_api_key_here" \
-H "Content-Type: application/json"
const response = await fetch('https://api.i18nagent.ai/translations/{jobId}/download', {
method: 'POST',
headers: {
'Authorization': 'Bearer i18n_your_api_key_here',
'Content-Type': 'application/json'
}
});
const data = await response.json();
console.log(data);
import requests
import json
response = requests.post(
'https://api.i18nagent.ai/translations/{jobId}/download',
headers={
'Authorization': 'Bearer i18n_your_api_key_here',
'Content-Type': 'application/json'
}
)
print(response.json())
package main
import (
"bytes"
"encoding/json"
"net/http"
)
func main() {
client := &http.Client{}
req, _ := http.NewRequest("POST", "https://api.i18nagent.ai/translations/{jobId}/download", )
req.Header.Add("Authorization", "Bearer i18n_your_api_key_here")
req.Header.Add("Content-Type", "application/json")
resp, _ := client.Do(req)
defer resp.Body.Close()
}
El comando anterior devuelve un JSON con la siguiente estructura:
{
"jobId": "translation_job_id",
"fileName": "original_file_name",
"targetLanguages": [
"string"
],
"requestedLanguages": [
"string"
],
"downloadUrls": {},
"message": "Translation files ready for download. Use downloadUrls to access each language file.",
"expiresIn": "24 hours",
"partialFailure": true,
"failedLanguages": [
"string"
],
"errorMessage": "error_message_for_failed_languages",
"warning": "Translation completed partially. 2 of 5 language(s) failed: ja, zh-CN"
}
Parámetros de consulta
| Parámetro | Obligatorio | Descripción |
|---|---|---|
| jobId | Sí | ID del trabajo de traducción |
Campos de respuesta
| Campo | Tipo | Descripción |
|---|---|---|
| jobId | string | ID del trabajo de traducción |
| fileName | string | Nombre del archivo original |
| targetLanguages | array | Idiomas de destino completados disponibles para descargar |
| requestedLanguages | array | Idiomas de destino solicitados originalmente |
| downloadUrls | object | URLs de descarga prefirmadas, organizadas por código de idioma. Ejemplo: {"es": {"url": "https://...", "key": "..."}, "fr": {"url": "https://...", "key": "..."}} |
| message | string | Mensaje de estado o información |
| expiresIn | string | Tiempo de vencimiento de las URLs de descarga |
| partialFailure | boolean | Indica si no se pudieron traducir algunos idiomas |
| failedLanguages | array | Códigos de idioma que no se pudieron traducir |
| errorMessage | string | Mensaje de error de los idiomas que fallaron |
| warning | string | Mensaje de advertencia sobre finalización parcial |
Descargar archivo de traducción para un idioma específico
GET /translations/{jobId}/files/{language}
Descargar un archivo de traducción individual para un idioma de destino específico. Devuelve el contenido del archivo directamente con el encabezado Content-Type apropiado.
curl -X GET "https://api.i18nagent.ai/translations/{jobId}/files/{language}" \
-H "Authorization: Bearer i18n_your_api_key_here" \
-H "Content-Type: application/json"
const response = await fetch('https://api.i18nagent.ai/translations/{jobId}/files/{language}', {
method: 'GET',
headers: {
'Authorization': 'Bearer i18n_your_api_key_here',
'Content-Type': 'application/json'
}
});
const data = await response.json();
console.log(data);
import requests
import json
response = requests.get(
'https://api.i18nagent.ai/translations/{jobId}/files/{language}',
headers={
'Authorization': 'Bearer i18n_your_api_key_here',
'Content-Type': 'application/json'
}
)
print(response.json())
package main
import (
"bytes"
"encoding/json"
"net/http"
)
func main() {
client := &http.Client{}
req, _ := http.NewRequest("GET", "https://api.i18nagent.ai/translations/{jobId}/files/{language}", )
req.Header.Add("Authorization", "Bearer i18n_your_api_key_here")
req.Header.Add("Content-Type", "application/json")
resp, _ := client.Do(req)
defer resp.Body.Close()
}
El comando anterior devuelve un JSON con la siguiente estructura:
"string"
Parámetros de consulta
| Parámetro | Obligatorio | Descripción |
|---|---|---|
| jobId | Sí | ID del trabajo de traducción |
| language | Sí | Código de idioma de destino (p. ej., 'es', 'fr', 'ja') |
Traducción
Crear traducción con progreso en tiempo real
POST /translations/stream
Crear una traducción con eventos enviados por el servidor (SSE) para actualizaciones de progreso en tiempo real. Solo admite traducción de texto (no archivos). Devuelve actualizaciones de progreso en tiempo real como eventos SSE.
curl -X POST "https://api.i18nagent.ai/translations/stream" \
-H "Authorization: Bearer i18n_your_api_key_here" \
-H "Content-Type: application/json" \
-d '{
"texts": [
"Hello, world!",
"Welcome to our service"
],
"targetLanguage": "es",
"targetAudience": "general",
"industry": "technology",
"sourceLanguage": "en",
"region": "Mexico",
"notes": "Keep technical terms in English, use formal tone"
}'
const response = await fetch('https://api.i18nagent.ai/translations/stream', {
method: 'POST',
headers: {
'Authorization': 'Bearer i18n_your_api_key_here',
'Content-Type': 'application/json'
},
body: JSON.stringify({
"texts": [
"Hello, world!",
"Welcome to our service"
],
"targetLanguage": "es",
"targetAudience": "general",
"industry": "technology",
"sourceLanguage": "en",
"region": "Mexico",
"notes": "Keep technical terms in English, use formal tone"
})
});
const data = await response.json();
console.log(data);
import requests
import json
response = requests.post(
'https://api.i18nagent.ai/translations/stream',
headers={
'Authorization': 'Bearer i18n_your_api_key_here',
'Content-Type': 'application/json'
},
json={
"texts": [
"Hello, world!",
"Welcome to our service"
],
"targetLanguage": "es",
"targetAudience": "general",
"industry": "technology",
"sourceLanguage": "en",
"region": "Mexico",
"notes": "Keep technical terms in English, use formal tone"
}
)
print(response.json())
package main
import (
"bytes"
"encoding/json"
"net/http"
)
func main() {
client := &http.Client{}
data := map[string]interface{}{
"texts": []string{"Hello, world!", "Welcome to our service"},
"targetLanguage": "es",
"targetAudience": "general",
"industry": "technology",
}
jsonData, _ := json.Marshal(data)
req, _ := http.NewRequest("POST", "https://api.i18nagent.ai/translations/stream", bytes.NewBuffer(jsonData))
req.Header.Add("Authorization", "Bearer i18n_your_api_key_here")
req.Header.Add("Content-Type", "application/json")
resp, _ := client.Do(req)
defer resp.Body.Close()
}
Parámetros del cuerpo de la solicitud
| Parámetro | Tipo | Obligatorio | Descripción |
|---|---|---|---|
| texts | array | Sí | Arreglo de textos para traducir |
| targetLanguage | string | No | Código del idioma de destino (por ejemplo, 'es', 'fr', 'ja') - para traducción a un solo idioma |
| targetAudience | string | No | Público objetivo (p. ej., 'general', 'técnico', 'casual', 'formal') (predeterminado: general) |
| industry | string | No | Contexto de la industria (por ejemplo, 'tecnología', 'salud', 'finanzas') (predeterminado: tecnología) |
| sourceLanguage | string | No | Código de idioma de origen (se detecta automáticamente si no se proporciona) |
| region | string | No | Región específica para la localización (p. ej., 'España', 'México', 'Brasil') |
| targetLanguages | array | No | Arreglo de códigos de idioma de destino (por ejemplo, ['es', 'fr', 'zh-CN']) para traducción a múltiples idiomas. No se puede usar junto con targetLanguage. |
| context | string | No | Contexto adicional opcional o instrucciones para la traducción (por ejemplo, 'Mantener los términos técnicos en inglés', 'Usar tono formal', 'Conservar los nombres de marca') |
| pseudoTranslation | boolean | No | Habilitar el modo de pseudotraducción para probar implementaciones de i18n sin traducción con IA y SIN costo de créditos. Transforma el texto con acentos, corchetes y caracteres CJK opcionales para identificar cadenas sin traducir y probar el diseño de la interfaz de usuario. (predeterminado: false) |
| pseudoOptions | object | No | Opciones de configuración para la pseudotraducción (solo se usa cuando pseudoTranslation es true) |
| skipWarnings | boolean | No | Omitir las advertencias de calidad del texto de origen y proceder con la traducción (predeterminado: false). Cuando es false, las advertencias sobre texto de origen problemático (por ejemplo, frases difíciles de traducir, problemas de pluralización, problemas de expansión de texto) se devuelven en la respuesta bajo el campo 'validationSuggestions'. Cuando es true, estas advertencias se suprimen para una salida más limpia. (predeterminado: false) |
Obtener estimación del costo de traducción
POST /translations/estimate
Calcular el recuento de palabras y los créditos necesarios para traducir
curl -X POST "https://api.i18nagent.ai/translations/estimate" \
-H "Authorization: Bearer i18n_your_api_key_here" \
-H "Content-Type: application/json" \
-d '{
"texts": [
"Hello, world!",
"Welcome to our service"
],
"targetLanguage": "es",
"targetAudience": "general",
"industry": "technology",
"sourceLanguage": "en",
"region": "Mexico",
"notes": "Keep technical terms in English, use formal tone"
}'
const response = await fetch('https://api.i18nagent.ai/translations/estimate', {
method: 'POST',
headers: {
'Authorization': 'Bearer i18n_your_api_key_here',
'Content-Type': 'application/json'
},
body: JSON.stringify({
"texts": [
"Hello, world!",
"Welcome to our service"
],
"targetLanguage": "es",
"targetAudience": "general",
"industry": "technology",
"sourceLanguage": "en",
"region": "Mexico",
"notes": "Keep technical terms in English, use formal tone"
})
});
const data = await response.json();
console.log(data);
import requests
import json
response = requests.post(
'https://api.i18nagent.ai/translations/estimate',
headers={
'Authorization': 'Bearer i18n_your_api_key_here',
'Content-Type': 'application/json'
},
json={
"texts": [
"Hello, world!",
"Welcome to our service"
],
"targetLanguage": "es",
"targetAudience": "general",
"industry": "technology",
"sourceLanguage": "en",
"region": "Mexico",
"notes": "Keep technical terms in English, use formal tone"
}
)
print(response.json())
package main
import (
"bytes"
"encoding/json"
"net/http"
)
func main() {
client := &http.Client{}
data := map[string]interface{}{
"texts": []string{"Hello, world!", "Welcome to our service"},
"targetLanguage": "es",
"targetAudience": "general",
"industry": "technology",
}
jsonData, _ := json.Marshal(data)
req, _ := http.NewRequest("POST", "https://api.i18nagent.ai/translations/estimate", bytes.NewBuffer(jsonData))
req.Header.Add("Authorization", "Bearer i18n_your_api_key_here")
req.Header.Add("Content-Type", "application/json")
resp, _ := client.Do(req)
defer resp.Body.Close()
}
El comando anterior devuelve un JSON con la siguiente estructura:
{
"wordCount": 0,
"creditsRequired": 0,
"fileType": "txt",
"estimatedCostUSD": 0
}
Parámetros del cuerpo de la solicitud
| Parámetro | Tipo | Obligatorio | Descripción |
|---|---|---|---|
| content | string | Sí | Contenido para analizar |
| fileType | string | No | Tipo de archivo para el análisis de contenido (predeterminado: txt) |
Campos de respuesta
| Campo | Tipo | Descripción |
|---|---|---|
| wordCount | integer | Número de palabras en el contenido |
| creditsRequired | number | Créditos necesarios para traducir |
| fileType | string | Tipo de archivo utilizado para el análisis |
| estimatedCostUSD | number | Costo estimado en USD |
Análisis
Validar el texto de origen para verificar que esté listo para traducir
POST /analyze
Validación ligera del texto de origen para identificar posibles problemas antes de traducir. Devuelve resultados de validación con códigos de error para acceso programático. Este endpoint NO consume créditos; ejecuta una validación rápida y determinista sin llamadas a IA/LLM.
curl -X POST "https://api.i18nagent.ai/analyze" \
-H "Authorization: Bearer i18n_your_api_key_here" \
-H "Content-Type: application/json" \
-d '{
"texts": [
"Hello, world!",
"Welcome to our service"
],
"targetLanguage": "es",
"targetAudience": "general",
"industry": "technology",
"sourceLanguage": "en",
"region": "Mexico",
"notes": "Keep technical terms in English, use formal tone"
}'
const response = await fetch('https://api.i18nagent.ai/analyze', {
method: 'POST',
headers: {
'Authorization': 'Bearer i18n_your_api_key_here',
'Content-Type': 'application/json'
},
body: JSON.stringify({
"texts": [
"Hello, world!",
"Welcome to our service"
],
"targetLanguage": "es",
"targetAudience": "general",
"industry": "technology",
"sourceLanguage": "en",
"region": "Mexico",
"notes": "Keep technical terms in English, use formal tone"
})
});
const data = await response.json();
console.log(data);
import requests
import json
response = requests.post(
'https://api.i18nagent.ai/analyze',
headers={
'Authorization': 'Bearer i18n_your_api_key_here',
'Content-Type': 'application/json'
},
json={
"texts": [
"Hello, world!",
"Welcome to our service"
],
"targetLanguage": "es",
"targetAudience": "general",
"industry": "technology",
"sourceLanguage": "en",
"region": "Mexico",
"notes": "Keep technical terms in English, use formal tone"
}
)
print(response.json())
package main
import (
"bytes"
"encoding/json"
"net/http"
)
func main() {
client := &http.Client{}
data := map[string]interface{}{
"texts": []string{"Hello, world!", "Welcome to our service"},
"targetLanguage": "es",
"targetAudience": "general",
"industry": "technology",
}
jsonData, _ := json.Marshal(data)
req, _ := http.NewRequest("POST", "https://api.i18nagent.ai/analyze", bytes.NewBuffer(jsonData))
req.Header.Add("Authorization", "Bearer i18n_your_api_key_here")
req.Header.Add("Content-Type", "application/json")
resp, _ := client.Do(req)
defer resp.Body.Close()
}
El comando anterior devuelve un JSON con la siguiente estructura:
{
"success": true,
"isValid": true,
"hasWarnings": true,
"wordCount": 0,
"issues": [
{
"code": "EMPTY_CONTENT",
"severity": "info",
"message": "human-readable_description_of_the_issue",
"suggestion": "suggested_fix_for_the_issue",
"affectedCount": 0,
"examples": [
"string"
]
}
],
"totalIssues": 0,
"summary": {
"errors": 0,
"warnings": 0,
"info": 0
},
"errorCodes": {
"EMPTY_CONTENT": "string",
"ENCODING_ISSUES": "string",
"UNCLOSED_PLACEHOLDER": "string",
"NESTED_PLACEHOLDERS": "string",
"INCONSISTENT_PLACEHOLDER_FORMAT": "string",
"HARDCODED_PLURALS": "string",
"VERY_LONG_STRINGS": "string",
"INVISIBLE_CHARACTERS": "string",
"EMPTY_JSON_VALUES": "string",
"INVALID_JSON": "string",
"HARDCODED_VALUES": "string"
}
}
Parámetros del cuerpo de la solicitud
| Parámetro | Tipo | Obligatorio | Descripción |
|---|---|---|---|
| content | string | Sí | Contenido para validar (texto o cadena JSON) |
| fileType | string | No | Indicación del tipo de archivo para la validación (se detecta automáticamente si no se proporciona) (predeterminado: auto) |
Campos de respuesta
| Campo | Tipo | Descripción |
|---|---|---|
| success | boolean | Indica si la validación se completó (igual que isValid) |
| isValid | boolean | Si el contenido pasó la validación (sin errores) |
| hasWarnings | boolean | Si el contenido tiene advertencias (pero sin errores de bloqueo) |
| wordCount | integer | Número de palabras en el contenido |
| issues | array | Lista de problemas de validación encontrados |
| totalIssues | integer | Número total de problemas encontrados |
| summary | object | Resumen de conteos por severidad |
| summary.errors | integer | Número de problemas de nivel error |
| summary.warnings | integer | Número de problemas de nivel advertencia |
| summary.info | integer | Número de problemas de nivel informativo |
| errorCodes | object | Enumeración de referencia de todos los códigos de error posibles para acceso programático |
| errorCodes.EMPTY_CONTENT | string | |
| errorCodes.ENCODING_ISSUES | string | |
| errorCodes.UNCLOSED_PLACEHOLDER | string | |
| errorCodes.NESTED_PLACEHOLDERS | string | |
| errorCodes.INCONSISTENT_PLACEHOLDER_FORMAT | string | |
| errorCodes.HARDCODED_PLURALS | string | |
| errorCodes.VERY_LONG_STRINGS | string | |
| errorCodes.INVISIBLE_CHARACTERS | string | |
| errorCodes.EMPTY_JSON_VALUES | string | |
| errorCodes.INVALID_JSON | string | |
| errorCodes.HARDCODED_VALUES | string |
Traducciones de espacio de nombres
Subir archivo de traducción para reutilizar en un espacio de nombres
POST /namespaces/{namespace}/translations/upload
Subir un archivo de traducción existente a un espacio de nombres para reutilizarlo en el futuro. Esto permite optimizar costos al reutilizar cadenas traducidas previamente. El archivo se procesa y los pares de traducción se extraen para almacenamiento en caché.
curl -X POST "https://api.i18nagent.ai/namespaces/{namespace}/translations/upload" \
-H "Authorization: Bearer i18n_your_api_key_here" \
-H "Content-Type: application/json" \
-d '{
"texts": [
"Hello, world!",
"Welcome to our service"
],
"targetLanguage": "es",
"targetAudience": "general",
"industry": "technology",
"sourceLanguage": "en",
"region": "Mexico",
"notes": "Keep technical terms in English, use formal tone"
}'
const response = await fetch('https://api.i18nagent.ai/namespaces/{namespace}/translations/upload', {
method: 'POST',
headers: {
'Authorization': 'Bearer i18n_your_api_key_here',
'Content-Type': 'application/json'
},
body: JSON.stringify({
"texts": [
"Hello, world!",
"Welcome to our service"
],
"targetLanguage": "es",
"targetAudience": "general",
"industry": "technology",
"sourceLanguage": "en",
"region": "Mexico",
"notes": "Keep technical terms in English, use formal tone"
})
});
const data = await response.json();
console.log(data);
import requests
import json
response = requests.post(
'https://api.i18nagent.ai/namespaces/{namespace}/translations/upload',
headers={
'Authorization': 'Bearer i18n_your_api_key_here',
'Content-Type': 'application/json'
},
json={
"texts": [
"Hello, world!",
"Welcome to our service"
],
"targetLanguage": "es",
"targetAudience": "general",
"industry": "technology",
"sourceLanguage": "en",
"region": "Mexico",
"notes": "Keep technical terms in English, use formal tone"
}
)
print(response.json())
package main
import (
"bytes"
"encoding/json"
"net/http"
)
func main() {
client := &http.Client{}
data := map[string]interface{}{
"texts": []string{"Hello, world!", "Welcome to our service"},
"targetLanguage": "es",
"targetAudience": "general",
"industry": "technology",
}
jsonData, _ := json.Marshal(data)
req, _ := http.NewRequest("POST", "https://api.i18nagent.ai/namespaces/{namespace}/translations/upload", bytes.NewBuffer(jsonData))
req.Header.Add("Authorization", "Bearer i18n_your_api_key_here")
req.Header.Add("Content-Type", "application/json")
resp, _ := client.Do(req)
defer resp.Body.Close()
}
El comando anterior devuelve un JSON con la siguiente estructura:
{
"success": true,
"fileId": "string",
"pairsStored": 0,
"pairsUpdated": 0,
"message": "string"
}
Parámetros de consulta
| Parámetro | Obligatorio | Descripción |
|---|---|---|
| namespace | Sí | Identificador de espacio de nombres (3-50 caracteres, alfanumérico + solo guiones/guiones bajos) |
Campos de respuesta
| Campo | Tipo | Descripción |
|---|---|---|
| success | boolean | |
| fileId | string | |
| pairsStored | integer | Número de nuevos pares de traducción almacenados |
| pairsUpdated | integer | Número de pares de traducción existentes actualizados |
| message | string |
Obtener estadísticas de traducción del espacio de nombres
GET /namespaces/{namespace}/translations/stats
Obtener estadísticas sobre los archivos de traducción cargados y la reutilización de caché para un espacio de nombres
curl -X GET "https://api.i18nagent.ai/namespaces/{namespace}/translations/stats" \
-H "Authorization: Bearer i18n_your_api_key_here" \
-H "Content-Type: application/json"
const response = await fetch('https://api.i18nagent.ai/namespaces/{namespace}/translations/stats', {
method: 'GET',
headers: {
'Authorization': 'Bearer i18n_your_api_key_here',
'Content-Type': 'application/json'
}
});
const data = await response.json();
console.log(data);
import requests
import json
response = requests.get(
'https://api.i18nagent.ai/namespaces/{namespace}/translations/stats',
headers={
'Authorization': 'Bearer i18n_your_api_key_here',
'Content-Type': 'application/json'
}
)
print(response.json())
package main
import (
"bytes"
"encoding/json"
"net/http"
)
func main() {
client := &http.Client{}
req, _ := http.NewRequest("GET", "https://api.i18nagent.ai/namespaces/{namespace}/translations/stats", )
req.Header.Add("Authorization", "Bearer i18n_your_api_key_here")
req.Header.Add("Content-Type", "application/json")
resp, _ := client.Do(req)
defer resp.Body.Close()
}
El comando anterior devuelve un JSON con la siguiente estructura:
{
"namespaceId": "string",
"namespaceName": "string",
"totalFiles": 0,
"files": [
{
"id": "string",
"baseFileName": "string",
"sourceLocale": "string",
"targetLocale": "string",
"pairsExtracted": 0,
"createdAt": "2024-01-15T12:00:00.000Z"
}
],
"cacheStatistics": [
{
"sourceLocale": "string",
"targetLocale": "string",
"pairCount": 0,
"totalReuses": 0
}
]
}
Parámetros de consulta
| Parámetro | Obligatorio | Descripción |
|---|---|---|
| namespace | Sí | Identificador de espacio de nombres |
Campos de respuesta
| Campo | Tipo | Descripción |
|---|---|---|
| namespaceId | string | |
| namespaceName | string | |
| totalFiles | integer | |
| files | array | |
| cacheStatistics | array |
Listar archivos de traducción cargados en el espacio de nombres
GET /namespaces/{namespace}/translations/files
Obtener lista paginada de archivos de traducción cargados para un espacio de nombres
curl -X GET "https://api.i18nagent.ai/namespaces/{namespace}/translations/files" \
-H "Authorization: Bearer i18n_your_api_key_here" \
-H "Content-Type: application/json"
const response = await fetch('https://api.i18nagent.ai/namespaces/{namespace}/translations/files', {
method: 'GET',
headers: {
'Authorization': 'Bearer i18n_your_api_key_here',
'Content-Type': 'application/json'
}
});
const data = await response.json();
console.log(data);
import requests
import json
response = requests.get(
'https://api.i18nagent.ai/namespaces/{namespace}/translations/files',
headers={
'Authorization': 'Bearer i18n_your_api_key_here',
'Content-Type': 'application/json'
}
)
print(response.json())
package main
import (
"bytes"
"encoding/json"
"net/http"
)
func main() {
client := &http.Client{}
req, _ := http.NewRequest("GET", "https://api.i18nagent.ai/namespaces/{namespace}/translations/files", )
req.Header.Add("Authorization", "Bearer i18n_your_api_key_here")
req.Header.Add("Content-Type", "application/json")
resp, _ := client.Do(req)
defer resp.Body.Close()
}
El comando anterior devuelve un JSON con la siguiente estructura:
{
"namespaceId": "string",
"namespaceName": "string",
"totalFiles": 0,
"limit": 0,
"offset": 0,
"files": [
{
"id": "string",
"baseFileName": "string",
"originalFileName": "string",
"fileType": "string",
"fileSize": 0,
"sourceLocale": "string",
"targetLocale": "string",
"pairsExtracted": 0,
"status": "string",
"uploadedBy": "string",
"createdAt": "2024-01-15T12:00:00.000Z",
"updatedAt": "2024-01-15T12:00:00.000Z"
}
]
}
Parámetros de consulta
| Parámetro | Obligatorio | Descripción |
|---|---|---|
| namespace | Sí | Identificador de espacio de nombres |
| limit | No | Número máximo de archivos a devolver |
| offset | No | Número de archivos a omitir para la paginación |
Campos de respuesta
| Campo | Tipo | Descripción |
|---|---|---|
| namespaceId | string | |
| namespaceName | string | |
| totalFiles | integer | |
| limit | integer | |
| offset | integer | |
| files | array |
Eliminar archivo de traducción cargado
DELETE /namespaces/{namespace}/translations/files/{fileId}
Eliminar un archivo de traducción cargado y todos los pares de traducción asociados de la caché
curl -X DELETE "https://api.i18nagent.ai/namespaces/{namespace}/translations/files/{fileId}" \
-H "Authorization: Bearer i18n_your_api_key_here" \
-H "Content-Type: application/json"
const response = await fetch('https://api.i18nagent.ai/namespaces/{namespace}/translations/files/{fileId}', {
method: 'DELETE',
headers: {
'Authorization': 'Bearer i18n_your_api_key_here',
'Content-Type': 'application/json'
}
});
const data = await response.json();
console.log(data);
import requests
import json
response = requests.delete(
'https://api.i18nagent.ai/namespaces/{namespace}/translations/files/{fileId}',
headers={
'Authorization': 'Bearer i18n_your_api_key_here',
'Content-Type': 'application/json'
}
)
print(response.json())
package main
import (
"bytes"
"encoding/json"
"net/http"
)
func main() {
client := &http.Client{}
req, _ := http.NewRequest("DELETE", "https://api.i18nagent.ai/namespaces/{namespace}/translations/files/{fileId}", )
req.Header.Add("Authorization", "Bearer i18n_your_api_key_here")
req.Header.Add("Content-Type", "application/json")
resp, _ := client.Do(req)
defer resp.Body.Close()
}
El comando anterior devuelve un JSON con la siguiente estructura:
{
"success": true,
"fileName": "string",
"pairsDeleted": 0,
"message": "string"
}
Parámetros de consulta
| Parámetro | Obligatorio | Descripción |
|---|---|---|
| namespace | Sí | Identificador de espacio de nombres |
| fileId | Sí | ID del archivo a eliminar |
Campos de respuesta
| Campo | Tipo | Descripción |
|---|---|---|
| success | boolean | |
| fileName | string | |
| pairsDeleted | integer | |
| message | string |
Cargar archivos de traducción paralelos
POST /translations/upload-parallel
Cargar archivos de origen y destino en paralelo para extraer y almacenar en caché los pares de traducción. Ambos archivos deben tener la misma estructura y tipo de archivo.
curl -X POST "https://api.i18nagent.ai/translations/upload-parallel" \
-H "Authorization: Bearer i18n_your_api_key_here" \
-H "Content-Type: application/json" \
-d '{
"texts": [
"Hello, world!",
"Welcome to our service"
],
"targetLanguage": "es",
"targetAudience": "general",
"industry": "technology",
"sourceLanguage": "en",
"region": "Mexico",
"notes": "Keep technical terms in English, use formal tone"
}'
const response = await fetch('https://api.i18nagent.ai/translations/upload-parallel', {
method: 'POST',
headers: {
'Authorization': 'Bearer i18n_your_api_key_here',
'Content-Type': 'application/json'
},
body: JSON.stringify({
"texts": [
"Hello, world!",
"Welcome to our service"
],
"targetLanguage": "es",
"targetAudience": "general",
"industry": "technology",
"sourceLanguage": "en",
"region": "Mexico",
"notes": "Keep technical terms in English, use formal tone"
})
});
const data = await response.json();
console.log(data);
import requests
import json
response = requests.post(
'https://api.i18nagent.ai/translations/upload-parallel',
headers={
'Authorization': 'Bearer i18n_your_api_key_here',
'Content-Type': 'application/json'
},
json={
"texts": [
"Hello, world!",
"Welcome to our service"
],
"targetLanguage": "es",
"targetAudience": "general",
"industry": "technology",
"sourceLanguage": "en",
"region": "Mexico",
"notes": "Keep technical terms in English, use formal tone"
}
)
print(response.json())
package main
import (
"bytes"
"encoding/json"
"net/http"
)
func main() {
client := &http.Client{}
data := map[string]interface{}{
"texts": []string{"Hello, world!", "Welcome to our service"},
"targetLanguage": "es",
"targetAudience": "general",
"industry": "technology",
}
jsonData, _ := json.Marshal(data)
req, _ := http.NewRequest("POST", "https://api.i18nagent.ai/translations/upload-parallel", bytes.NewBuffer(jsonData))
req.Header.Add("Authorization", "Bearer i18n_your_api_key_here")
req.Header.Add("Content-Type", "application/json")
resp, _ := client.Do(req)
defer resp.Body.Close()
}
El comando anterior devuelve un JSON con la siguiente estructura:
{
"success": true,
"fileId": "string",
"pairsStored": 0,
"pairsUpdated": 0,
"message": "string"
}
Campos de respuesta
| Campo | Tipo | Descripción |
|---|---|---|
| success | boolean | |
| fileId | string | |
| pairsStored | integer | Número de nuevos pares de traducción almacenados |
| pairsUpdated | integer | Número de pares de traducción existentes actualizados |
| message | string |
Archivos
Descargar archivo del almacenamiento
GET /files/{filePath}
Sirve archivos del almacenamiento local (desarrollo) o S3 (producción). Se utiliza para acceder a archivos subidos y traducidos.
curl -X GET "https://api.i18nagent.ai/files/{filePath}" \
-H "Authorization: Bearer i18n_your_api_key_here" \
-H "Content-Type: application/json"
const response = await fetch('https://api.i18nagent.ai/files/{filePath}', {
method: 'GET',
headers: {
'Authorization': 'Bearer i18n_your_api_key_here',
'Content-Type': 'application/json'
}
});
const data = await response.json();
console.log(data);
import requests
import json
response = requests.get(
'https://api.i18nagent.ai/files/{filePath}',
headers={
'Authorization': 'Bearer i18n_your_api_key_here',
'Content-Type': 'application/json'
}
)
print(response.json())
package main
import (
"bytes"
"encoding/json"
"net/http"
)
func main() {
client := &http.Client{}
req, _ := http.NewRequest("GET", "https://api.i18nagent.ai/files/{filePath}", )
req.Header.Add("Authorization", "Bearer i18n_your_api_key_here")
req.Header.Add("Content-Type", "application/json")
resp, _ := client.Do(req)
defer resp.Body.Close()
}
Parámetros de consulta
| Parámetro | Obligatorio | Descripción |
|---|---|---|
| filePath | Sí | Ruta del archivo, incluidos los subdirectorios (por ejemplo, 'uploads/test-file.json' o 'translations/result.json') |
Errores
La API de i18n-agent utiliza los siguientes códigos de error:
| Código de error | Significado |
|---|---|
| 400 | Solicitud incorrecta: su solicitud no es válida. |
| 401 | No autorizado: su clave de API no es válida. |
| 402 | Pago requerido: créditos insuficientes en su cuenta. |
| 403 | Prohibido: su clave de API está inactiva o no se encontró el equipo. |
| 404 | No encontrado: no se pudo encontrar el recurso especificado. |
| 500 | Error interno del servidor: hubo un problema de nuestro lado. Inténtelo de nuevo más tarde. |
| 503 | Servicio no disponible: estamos temporalmente fuera de línea por mantenimiento. Inténtelo de nuevo más tarde. |
Formato de respuesta de error
{
"error": "Detailed error message describing what went wrong",
"success": false
}