Documentation API

Une API REST simple pour traduire du texte et du HTML, avec authentification par clé et mise en cache.

Démarrage

Toutes les requêtes se font sur :

https://translation.e-cosplay.fr

L'authentification se fait via une clé API, fournie au choix :

  • en en-tête HTTP : X-API-Key: etk_…
  • ou en paramètre : ?api_key=etk_…

Besoin d'une clé ? Elles sont générées depuis la console d'administration, ou fournies avec votre abonnement (voir Tarifs).

POST /translate — traduire du texte

Traduit un texte. Champs du corps JSON (ou en query string) :

ChampAliasDescription
lang_srcsourceLangue source (fr, en…) ou auto
lang_desttargetLangue cible (en, de…)
messageqTexte à traduire (chaîne ou tableau)
formattext (défaut) ou html
curl -X POST https://translation.e-cosplay.fr/translate \
  -H "X-API-Key: etk_…" \
  -H "Content-Type: application/json" \
  -d '{"lang_src":"fr","lang_dest":"en","message":"Bonjour le monde"}'

Réponse :

{ "translatedText": "Hello world", "cached": false }

Le champ cached indique si la réponse provient du cache (traductions répétées servies instantanément).

Traduire du HTML

Passez "format": "html" pour préserver les balises : seul le texte est traduit, la structure HTML reste intacte.

curl -X POST https://translation.e-cosplay.fr/translate \
  -H "X-API-Key: etk_…" \
  -H "Content-Type: application/json" \
  -d '{
    "lang_src": "fr",
    "lang_dest": "en",
    "format": "html",
    "message": "<p>Bonjour <b>le monde</b></p>"
  }'

Réponse :

{ "translatedText": "<p>Hello <b>world</b></p>", "cached": false }

Traduire plusieurs textes / détecter la langue

Le champ message accepte un tableau, et lang_src accepte auto pour détecter la langue source.

// Tableau de textes
{ "lang_src": "en", "lang_dest": "fr", "message": ["Cat", "Dog"] }
// -> { "translatedText": ["Chat", "Chien"], "cached": false }

// Détection automatique
{ "lang_src": "auto", "lang_dest": "fr", "message": "Guten Tag" }
// -> { "detectedLanguage": { "language": "de", "confidence": 90 },
//      "translatedText": "Bonjour", "cached": false }

POST /detect — détecter la langue

curl -X POST https://translation.e-cosplay.fr/detect \
  -H "X-API-Key: etk_…" -H "Content-Type: application/json" \
  -d '{"q":"Bonjour tout le monde"}'
// -> [ { "language": "fr", "confidence": 100 } ]

GET /languages — langues supportées

curl https://translation.e-cosplay.fr/languages -H "X-API-Key: etk_…"
// -> [ { "code": "en", "name": "English", "targets": ["fr","de",…] }, … ]

GET /health — état du service

Sans authentification.

curl https://translation.e-cosplay.fr/health
// -> { "status": "ok", "redis": true, "engine": true, "time": "…" }

SDK JavaScript / TypeScript

Un client officiel est disponible sur npm :

npm install @ecosplay/e-translate
import { ETranslateClient } from "@ecosplay/e-translate";

const t = new ETranslateClient({
  baseUrl: "https://translation.e-cosplay.fr",
  apiKey: "etk_…",
});

const res = await t.translate({ message: "Bonjour", from: "fr", to: "en" });
console.log(res.translatedText); // "Hello"

Codes de réponse & limites

CodeSignification
200Succès
400Requête invalide (champ manquant, langue non supportée)
401Clé API manquante ou invalide
429Trop de requêtes (limite : 240 req/min par IP)
502Service de traduction momentanément indisponible

Les erreurs renvoient un corps JSON : { "error": "…" }.