Référence API

API Translayer

Intégrez la traduction visuelle par IA dans votre flux de travail. Téléchargez des pages, suivez la progression en temps réel, téléchargez les résultats.

URL de base : https://translayer.app/api

Authentification

L'API Translayer utilise votre UID Firebase pour l'authentification. Transmettez votre userId dans le corps de la requête.

Forfait Pro requis. L'accès à l'API est disponible avec le forfait Pro (199 $/mois). Générez votre clé API dans Tableau de bord → Paramètres.
POST

/api/translate

Téléchargez des images pour la traduction. Renvoie un identifiant de tâche pour suivre la progression.

Requête (multipart/form-data)

Champ Type Description
imagesFile[]Page images (JPG, PNG, WebP). Required.
sourceLangstringSource language or "auto" for detection.
targetLangstringTarget language (e.g. "pl", "en", "ja").
modestring"fast" (0.5x credits), "standard" (1x), "advanced" (2x).
resolutionstring"original", "1K", "2K", "4K".
userIdstringYour Firebase UID. Required.
customPromptstringOptional translation instructions.

Formule du coût en crédits

credits = ceil(pages × resolution_multiplier × mode_multiplier)

Exemple (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"

Réponse

{
  "jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
  "mode": "standard",
  "creditsNeeded": 4
}
402 — Crédits insuffisants 400 — Aucun fichier téléchargé
GET

/api/jobs/:jobId/events

Flux Server-Sent Events en temps réel pour la progression de la traduction.

Exemple (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();
  }
};

Charge utile de l'événement

{
  "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

Téléchargez toutes les pages traduites sous forme d'archive ZIP.

Exemple (cURL)

curl -o translated.zip https://translayer.app/api/download/JOB_ID

Conservation des fichiers

Forfait Conservation
Free3 days
Starter14 days
Standard30 days
Pro90 days
404 — Tâche introuvable 410 — Expiré
DELETE

/api/projects/:id

Supprimez un projet de traduction et ses fichiers de sortie.

Exemple (cURL)

curl -X DELETE https://translayer.app/api/projects/JOB_ID \
  -H "Content-Type: application/json" \
  -d '{"userId": "YOUR_FIREBASE_UID"}'
403 — Non autorisé 404 — Introuvable
POST

/api/checkout

Créez une session Stripe Checkout pour un abonnement ou l'achat d'un pack de crédits.

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/..." }

Exemple complet (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")

Limites de débit et quotas

Forfait Pages/mois Tâches simultanées Taille maximale du fichier
Free1015 MB
Starter75210 MB
Standard500525 MB
Pro1,0001050 MB

Prêt à intégrer ?

Commencez avec le forfait gratuit ou passez au Pro pour un accès complet à l'API.

Commencer gratuitement