Referencia API
API de Translayer
Integre la traducción visual impulsada por IA en su flujo de trabajo. Suba páginas, siga el progreso en tiempo real, descargue los resultados.
URL Base: https://translayer.app/api
Autenticación
La API de Translayer utiliza su UID de Firebase para la autenticación. Pase su userId en el cuerpo de la solicitud.
Se requiere plan Pro. El acceso API está disponible en el plan Pro ($199/mes). Genere su clave API en Panel de Control → Configuración.
POST
/api/translate
Suba imágenes para traducción. Devuelve un ID de trabajo para seguir el progreso.
Solicitud (multipart/form-data)
| Campo | Tipo | Descripción |
|---|---|---|
| images | File[] | Page images (JPG, PNG, WebP). Required. |
| sourceLang | string | Source language or "auto" for detection. |
| targetLang | string | Target language (e.g. "pl", "en", "ja"). |
| mode | string | "fast" (0.5x credits), "standard" (1x), "advanced" (2x). |
| resolution | string | "original", "1K", "2K", "4K". |
| userId | string | Your Firebase UID. Required. |
| customPrompt | string | Optional translation instructions. |
Fórmula de Costo de Créditos
credits = ceil(pages × resolution_multiplier × mode_multiplier)
Ejemplo (cURL)
curl -X POST https://translayer.app/api/translate \
-F "images=@page1.jpg" \
-F "images=@page2.jpg" \
-F "sourceLang=en" \
-F "targetLang=ja" \
-F "mode=standard" \
-F "resolution=2K" \
-F "userId=YOUR_FIREBASE_UID" Respuesta
{
"jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"mode": "standard",
"creditsNeeded": 4
} 402 — Créditos insuficientes 400 — No se subieron archivos
GET
/api/jobs/:jobId/events
Flujo de eventos enviados por el servidor (SSE) en tiempo real para el progreso de la traducción.
Ejemplo (JavaScript)
const es = new EventSource('/api/jobs/' + jobId + '/events');
es.onmessage = (event) => {
const job = JSON.parse(event.data);
console.log(job.status, job.progress + '/' + job.total);
if (job.status === 'completed' || job.status === 'failed') {
es.close();
}
}; Carga del Evento
{
"id": "job-uuid",
"status": "processing", // pending | processing | completed | failed
"progress": 3,
"total": 10,
"currentFile": "page_003.jpg",
"results": [
{ "sourceFilename": "page_001.jpg", "url": "/api/outputs/..." }
]
} GET
/api/download/:jobId
Descargue todas las páginas traducidas como un archivo ZIP.
Ejemplo (cURL)
curl -o translated.zip https://translayer.app/api/download/JOB_ID Retención de Archivos
| Plan | Retención |
|---|---|
| Free | 3 days |
| Starter | 14 days |
| Standard | 30 days |
| Pro | 90 days |
404 — Trabajo no encontrado 410 — Expirado
DELETE
/api/projects/:id
Elimine un proyecto de traducción y sus archivos de salida.
Ejemplo (cURL)
curl -X DELETE https://translayer.app/api/projects/JOB_ID \
-H "Content-Type: application/json" \
-d '{"userId": "YOUR_FIREBASE_UID"}' 403 — No autorizado 404 — No encontrado
POST
/api/checkout
Cree una sesión de Stripe Checkout para la compra de una suscripción o paquete de créditos.
curl -X POST https://translayer.app/api/checkout \
-H "Content-Type: application/json" \
-d '{
"priceId": "price_xxx",
"mode": "subscription",
"userId": "YOUR_FIREBASE_UID"
}'
// Response: { "url": "https://checkout.stripe.com/..." } Ejemplo Completo (Python)
import requests, json, sseclient
BASE = "https://translayer.app/api"
UID = "your_firebase_uid"
# 1. Upload pages for translation
files = [("images", open(f"page_{i}.jpg", "rb")) for i in range(1, 6)]
data = {"sourceLang": "en", "targetLang": "ja", "mode": "standard",
"resolution": "2K", "userId": UID}
res = requests.post(f"{BASE}/translate", files=files, data=data)
job_id = res.json()["jobId"]
print(f"Job started: {job_id}")
# 2. Track progress via SSE
response = requests.get(f"{BASE}/jobs/{job_id}/events", stream=True)
client = sseclient.SSEClient(response)
for event in client.events():
job = json.loads(event.data)
print(f"{job['progress']}/{job['total']} - {job['status']}")
if job["status"] in ("completed", "failed"):
break
# 3. Download ZIP
if job["status"] == "completed":
zip_res = requests.get(f"{BASE}/download/{job_id}")
with open("translated.zip", "wb") as f:
f.write(zip_res.content)
print("Downloaded translated.zip") Límites de Velocidad y Cuotas
| Plan | Páginas/mes | Trabajos simultáneos | Tamaño máximo de archivo |
|---|---|---|---|
| Free | 10 | 1 | 5 MB |
| Starter | 75 | 2 | 10 MB |
| Standard | 500 | 5 | 25 MB |
| Pro | 1,000 | 10 | 50 MB |
¿Listo para integrar?
Comience con el nivel gratuito o actualice a Pro para acceso completo a la API.
Comenzar Gratis