Se connecter

API

API REST pour la traduction de texte et de documents. Créez une clé dans votre tableau de bord.

Authentification

Transmettez votre clé sous forme de jeton bearer (ou via l'en-tête x-api-key).

headers.http
HTTP
Authorization: Bearer wsk_xxx# …or, equivalently:x-api-key: wsk_xxx

Traduire du texte

POST/api/v1/translate
curl -X POST https://translate.baobabtech.app/api/v1/translate \  -H "Authorization: Bearer wsk_xxx" \  -H "Content-Type: application/json" \  -d '{    "source": "en",    "target": "fr",    "text": "Clean water saves lives.",    "domain": "wash"  }'
response.json
JSON
{  "translation": "...",  "source": "en",  "target": "fr",  "domain": "wash",  "model": "...",  "ragApplied": true,  "characters": 24}

domain vaut wash par défaut. 50 000 caractères maximum par requête. reasoning_effort (facultatif : off · low · medium · high) vaut off par défaut — la traduction n’a pas besoin de raisonnement.

Traduction par lots

Envoyez un tableau dans text pour traduire jusqu’à 100 chaînes en un seul appel. Les traductions reviennent dans translations, dans l’ordre d’entrée. Un lot compte pour UNE requête au regard de la limite de débit : un travail de plusieurs centaines de chaînes courtes coûte donc quelques requêtes au lieu de centaines. Les chaînes identiques sont traduites une seule fois et facturées une seule fois.

curl -X POST https://translate.baobabtech.app/api/v1/translate \  -H "Authorization: Bearer wsk_xxx" \  -H "Content-Type: application/json" \  -d '{    "source": "en",    "target": "fr",    "domain": "wash",    "text": [      "Clean water saves lives.",      "Hygiene promotion",      "Household water treatment and safe storage"    ]  }'# → { "translations": ["...", "...", "..."], "items": 3, "characters": 74, ... }
response.json
JSON
{  "translations": ["...", "...", "..."],  "items": 3,  "source": "en",  "target": "fr",  "domain": "wash",  "format": "text",  "model": "...",  "characters": 74}

Traduire du HTML

Réglez format sur html pour les valeurs de champs d’un CMS. Le balisage n’est jamais envoyé au modèle : seuls les nœuds de texte sont traduits puis réinsérés dans le document d’origine, si bien que tableaux, images, iframes, liens, classes et attributs data- ressortent intacts. script et style sont restitués tels quels et jamais traduits. La facturation ne porte que sur le texte visible.

Traduire un document (.docx, .pptx, .xlsx, .pdf)

Trois étapes : demander une URL de téléversement, téléverser le fichier, lancer le traitement, puis interroger l'état.

# 1. Create the job → returns a presigned upload URLcurl -X POST https://translate.baobabtech.app/api/v1/documents \  -H "Authorization: Bearer wsk_xxx" \  -H "Content-Type: application/json" \  -d '{ "filename": "report.docx", "source": "en", "target": "fr", "domain": "wash" }'# → { "jobId": "...", "uploadUrl": "https://...", "method": "PUT", "contentType": "..." }
# 2. Upload the file straight to the presigned URLcurl -X PUT "<uploadUrl>" \  -H "Content-Type: <contentType>" \  --data-binary @report.docx
# 3. Start processingcurl -X POST https://translate.baobabtech.app/api/v1/documents/<jobId>/start \  -H "Authorization: Bearer wsk_xxx"# → { "jobId": "...", "status": "processing" }
# 4. Poll until done, then downloadcurl https://translate.baobabtech.app/api/v1/documents/<jobId> \  -H "Authorization: Bearer wsk_xxx"# → { "status": "done", "downloadUrl": "https://...", "segmentCount": 120 }

Découverte

GET /api/v1/help renvoie en JSON les points d’entrée, les limites et les capacités. Public, il permet à une intégration de se configurer seule et de vérifier la connectivité avant même qu’une clé soit définie.

# All three endpoints are public — no API key required.curl https://translate.baobabtech.app/api/v1/languages# → { "languages": [ { "code": "fr", "name": "French", "script": "Latn", "rtl": false } ] }
curl https://translate.baobabtech.app/api/v1/domains# → { "domains": [ { "slug": "wash", "name": "WASH", "description": "..." } ] }
# Endpoints, limits and capabilities, for integrations that self-configure.curl https://translate.baobabtech.app/api/v1/help# → { "endpoints": { ... }, "formats": ["text", "html"], "languages": ["en", "fr", ...] }

Limites de débit et quota

Chaque clé a une limite de requêtes par minute et un quota mensuel de caractères (selon le palier). En cas de dépassement :

  • 429 avec Retry-After — limite de débit
  • 402 quota_exceeded — quota mensuel de caractères atteint
  • 401 — clé manquante ou invalide
error.json
JSON
{ "error": { "code": "rate_limited", "message": "..." } }