Chaque point d'entrée ci-dessous est la version ouverte d'une fonction que vous utilisez déjà sur le site : mêmes modèles, même quota, mêmes fichiers produits. Seule différence, une clé API remplace la session de connexion.
Quatre étapes, d'un PDF brut au fichier traduit. Les points d'entrée vidéo suivent exactement la même logique.
01
Créer une clé API
Connectez-vous à belindoc.com, ouvrez le menu de votre avatar en haut à droite, allez dans Espace développeur et créez une clé. Les clés commencent par ft_ et la valeur complète n'apparaît qu'une seule fois, juste après la création.
02
Envoyer le fichier
Demandez une URL présignée, puis envoyez le fichier directement dessus en PUT. L'URL reste valable 10 minutes ; conservez l'objectKey renvoyé pour l'étape suivante.
bash
# 1. Obtenir une URL d'upload présignée (valable 10 minutes)
curl -X POST https://belindoc.com/api/external/translate/batchPresignedUploadUrl \
-H "X-Api-Key: $BELINDOC_API_KEY" \
-H "Content-Type: application/json" \
-d '{"fileNameList": ["contract.pdf"]}'
# → data[0].persignedUploadUrl / data[0].objectKey
# 2. Envoyer le fichier directement sur cette URL avec PUT
curl -X PUT "<persignedUploadUrl>" --upload-file contract.pdf
03
Soumettre la traduction
fileList, sourceLanguage, targetLanguage et model sont obligatoires. Passez AnyLanguage pour détecter la langue source automatiquement, et lisez la liste des modèles via getModelList plutôt que de la coder en dur.
Interrogez le batchNo jusqu'à ce que status vaille 3, puis demandez l'URL de téléchargement. Ce point d'entrée répond en flux SSE : le lien arrive dans l'événement [DONE].
bash
# Interroger la tâche — status = 3 signifie que la traduction est prête
curl -X POST https://belindoc.com/api/external/translate/searchTranslateFileByBatchNo \
-H "X-Api-Key: $BELINDOC_API_KEY" \
-H "Content-Type: application/json" \
-d '{"batchNo": "<batchNo>"}'
# Récupérer l'URL de téléchargement — réponse SSE, le lien arrive dans l'événement [DONE]
curl -N -X POST https://belindoc.com/api/external/translate/getTranslateS3DownloadUrl \
-H "X-Api-Key: $BELINDOC_API_KEY" \
-H "Content-Type: application/json" \
-d '{"translateOrderNo": "<translateOrderNo>", "urlType": 2}'
# event:[DONE]
# data:{"url":"https://..."}
Prise en main
Authentification
Les points d'entrée ouverts vivent sous /external/ et identifient l'appelant à la seule clé. Tout le reste — corps de requête, valeurs par défaut, enveloppe de réponse — est identique au site.
Envoyez votre clé à chaque requête. Une clé absente, désactivée, expirée ou appelée depuis une IP hors liste blanche est rejetée avant toute logique métier.
En-tête language
Facultatif. Détermine la langue du champ msg de la réponse ; en par défaut. Valeurs acceptées : les 9 langues du site (en, zh, zh-Hant, ja, ko, fr, ru, de, ar).
Une clé agit sur le compte personnel
Une clé correspond toujours au compte personnel qui l'a créée. Les fichiers passent par le stockage de la plateforme et les tâches consomment le quota de ce compte : l'espace privé d'une organisation n'est pas accessible via l'API.
Enveloppe de réponse
Tous les points d'entrée répondent avec la même enveloppe. Un code à 200 signifie succès ; toute autre valeur est une erreur métier et msg porte le message localisé.
Ni JWT, ni signature de requête
Les filtres de jeton et de signature qui protègent le site laissent passer /external/. La clé est le seul justificatif : traitez-la comme un mot de passe et gardez-la côté serveur.
/external/translate9 points d'entrée
Traduction de documents
Toute la chaîne documentaire : envoi, soumission, suivi, téléchargement — plus les listes de modèles et de langues, à lire ici plutôt qu'à coder en dur.
status : 0 en attente · 1 analyse · 2 en cours · 3 terminé · 4 échec · 5 annulé
L'offre derrière cette clé : palier, période en cours et les limites qui en découlent — parallélisme, taille de fichier, durée de vidéo.
Paramètres
Aucun paramètre — envoyez un corps JSON vide.
Réponse · data
Champ
Type
Description
vipName
string
Nom de l'offre
vipType
number
Palier de l'offre
subscriptionStatus
number
État de l'abonnement — voir la légende ci-dessus
interval
number
Périodicité — voir la légende ci-dessus
startTime
number
Début de période, epoch en millisecondes
endTime
number
Fin de période, epoch en millisecondes
translateQuota
number
Pages accordées par période
advancedTranslateQuota
number
Pages de modèles avancés accordées par période
freeTranslateQuota
number
Pages gratuites accordées par cycle
freeTranslateQuotaInterval
number
Cycle de remise à zéro des pages gratuites : 1 jour · 2 semaine · 3 mois
concurrenceTask
number
Tâches documentaires simultanées autorisées
uploadFileSize
number
Taille maximale d'un fichier, en Mo
videoDurationLimit
number
Durée maximale d'une vidéo, en minutes
videoTranslateConcurrency
number
Tâches vidéo simultanées autorisées
videoFileSize
number
Taille maximale d'une vidéo, en Mo
Annexes
Codes d'erreur
Les échecs liés à la clé reviennent en HTTP 200, avec un code métier dans l'enveloppe. Voici ceux que votre intégration doit traiter.
Code
Signification
Que faire
30306
Clé API invalide
Vérifiez que la clé a été copiée en entier, préfixe ft_ compris. Une clé supprimée renvoie aussi ce code.
30307
Clé désactivée
Réactivez-la depuis l'espace développeur ou basculez sur une autre clé.
30308
Clé expirée
Repoussez la date d'expiration ou créez une nouvelle clé.
30309
IP appelante hors liste blanche
Ajoutez l'IP sortante du serveur à la liste blanche de la clé, ou videz cette liste.
30312
Clé bloquée par un administrateur
Contactez le support : ce blocage ne se lève pas depuis l'espace développeur.
Les erreurs propres à la traduction — quota insuffisant, fichier non pris en charge, soumission en double — ont leurs propres codes et arrivent toujours avec un msg localisé. Branchez sur code, jamais sur msg.
Annexes
Quotas et limites
L'API est une porte d'entrée de plus, pas un autre produit. Voici les règles qu'elle hérite du site.
Même quota, pas de facturation à part
Les appels API consomment le même quota de pages et de vidéo que le site, avec les mêmes coefficients par modèle. Il n'existe pas de tarif propre à l'API.
Mêmes règles de filigrane
En offre gratuite, les PDF traduits portent un filigrane, exactement comme dans le navigateur. Passer par l'API ne le retire pas.
Seules les soumissions comptent comme appels
Le compteur d'appels d'une clé n'avance que sur batchSubmitTranslateTask, submitVideoTranslate et submitVideoRewrite. Les lectures de statut et de détail peuvent être interrogées librement.
Une soumission à la fois
Les soumissions sont sérialisées par compte. Une seconde soumission pendant que la première est encore acceptée renvoie une erreur de tâche en double : réessayez un instant plus tard plutôt qu'en parallèle.
L'OCR est désactivé par défaut
N'activez isOcr que pour les documents scannés. L'OCR consomme un sous-quota dédié en plus du quota de pages : le laisser actif sur un PDF texte revient à payer deux fois. En cas de doute, appelez d'abord le point de terminaison isOcr.
Envie d'éviter la plomberie HTTP ?
Les mêmes capacités sont exposées sous forme d'outils MCP : un agent IA peut traduire un document sans que vous écriviez le moindre appel HTTP.