Belin Doc IconBelin Doc

Belin Doc · Plateforme ouverte

API de traduction

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.

URL de base
https://belindoc.com/api
En-tête d'auth
X-Api-Key
Méthode
POST · application/json
Points d'entrée
21
Mise à jour
2026-09-04
Sommaire
Prise en main

Démarrage rapide

Quatre étapes, d'un PDF brut au fichier traduit. Les points d'entrée vidéo suivent exactement la même logique.

  1. 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.

  2. 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
  3. 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.

    bash
    curl -X POST https://belindoc.com/api/external/translate/batchSubmitTranslateTask \
      -H "X-Api-Key: $BELINDOC_API_KEY" \
      -H "Content-Type: application/json" \
      -d '{
        "fileList": [{ "fileName": "contract.pdf", "fileObjectKey": "<objectKey>" }],
        "sourceLanguage": "AnyLanguage",
        "targetLanguage": "zh-CN",
        "model": "Gemini-2.5-Flash"
      }'
    
    # → { "code": "200", "data": { "batchNo": "...", "fileList": [ ... ] } }
  4. 04

    Interroger, puis télécharger

    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.

http
POST /api/external/translate/getModelList HTTP/1.1
Host: belindoc.com
Content-Type: application/json
X-Api-Key: ft_xxxxxxxxxxxxxxxxxxxxxxxx
language: zh

{}
json
{
  "code": "200",
  "msg": null,
  "requestId": "8f1c…",
  "data": { }
}
En-tête X-Api-Key
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é
  • urlType : 1 fichier source · 2 traduction · 3 comparatif côte à côte · 4 comparatif superposé · -1 aperçu EPUB
01

Obtenir des URL d'envoi

POST

/external/translate/batchPresignedUploadUrl

Obtenir des URL d'envoi présignées pour un ou plusieurs fichiers.

Paramètres

ChampTypeOblig.Description
fileNameListarray[string]obligatoireNoms des fichiers à envoyer

Réponse · data

ChampTypeDescription
persignedUploadUrlstringURL PUT présignée, valable 10 minutes
objectKeystringClé de stockage à renvoyer à la soumission
fileNamestringNom du fichier d'origine
storageTypenumberType de stockage du fichier
Exemple
requête
{
  "fileNameList": ["contract.pdf"]
}
réponse
{
  "code": "200",
  "data": [
    {
      "persignedUploadUrl": "https://s3.../contract.pdf?X-Amz-Signature=…",
      "objectKey": "translate/10086/2026/contract.pdf",
      "fileName": "contract.pdf",
      "storageType": 1
    }
  ]
}
02

Détecter un scan

POST

/external/translate/isOcr

Déterminer avant l'envoi si un fichier téléversé est un scan, pour n'activer l'OCR que là où il sert vraiment.

Paramètres

ChampTypeOblig.Description
fileObjectKeystringobligatoireobjectKey renvoyé par l'appel présigné
storageTypenumberobligatoireType de stockage du fichier

Réponse · data

ChampTypeDescription
isOcrnumber1 signifie que le fichier est un scan
isDoubleDecknumber1 signifie que le scan porte déjà une couche de texte
Exemple
requête
{
  "fileObjectKey": "translate/10086/2026/contract.pdf",
  "storageType": 1
}
réponse
{
  "code": "200",
  "data": { "isOcr": 1, "isDoubleDeck": 0 }
}
03

Soumettre une traduction

POST

/external/translate/batchSubmitTranslateTask

Soumettre un lot de traductions ; renvoie le batchNo et un numéro de commande par fichier.

Paramètres

ChampTypeOblig.Description
fileListarrayobligatoireFichiers à traduire
fileNamestringobligatoireNom du fichier d'origine
fileObjectKeystringobligatoireobjectKey renvoyé par l'appel présigné
isOcrFilenumber1 traite ce fichier comme un scan ; reprenez la valeur d'isOcr
sourceLanguagestringobligatoireLangue source ; AnyLanguage pour la détection
targetLanguagestringobligatoireLangue cible
modelstringobligatoireVersion du modèle, lue depuis getModelList
isOcrnumber1 lance l'OCR ; 0 par défaut
isMathnumber1 préserve la mise en page des formules ; 0 par défaut
translateStylenumberStyle de traduction prédéfini
terminologyCollectionIdstringID du glossaire à appliquer ; les glossaires se créent et se gèrent uniquement dans l'application web pour l'instant

Réponse · data

ChampTypeDescription
batchNostringNuméro de lot renvoyé à la soumission
fileListarrayFichiers à traduire
balanceHintnumber1 signale un quota restant faible
Exemple
requête
{
  "fileList": [
    { "fileName": "contract.pdf", "fileObjectKey": "translate/10086/2026/contract.pdf" }
  ],
  "sourceLanguage": "AnyLanguage",
  "targetLanguage": "zh-CN",
  "model": "Gemini-2.5-Flash",
  "isOcr": 0,
  "terminologyCollectionId": "66f1c2a4b8d3e5f7a9c1b2d3"
}
réponse
{
  "code": "200",
  "data": {
    "batchNo": "B20260828173001",
    "fileList": [
      { "fileName": "contract.pdf", "fileObjectKey": "translate/10086/2026/contract.pdf" }
    ],
    "balanceHint": 0
  }
}
04

Lister les tâches d'un lot

POST

/external/translate/searchTranslateFileByBatchNo

Lister toutes les tâches d'un lot — c'est ce point d'entrée qu'il faut interroger.

Paramètres

ChampTypeOblig.Description
batchNostringobligatoireNuméro de lot renvoyé à la soumission

Réponse · objet tâche

ChampTypeDescription
translateOrderNostringNuméro de commande de la tâche
batchNostringNuméro de lot renvoyé à la soumission
sourceFileNamestringNom du fichier d'origine
statusnumberÉtat de la tâche — voir la légende
textNumbernumberCaractères décomptés
targetFileUrlstringURL du fichier traduit
targetFileUrl2stringURL de secours pour la Chine continentale
xComparisonS3UrlstringFichier comparatif côte à côte
yComparisonS3UrlstringFichier comparatif superposé
freeTranslateQuotanumberPages prises sur le quota gratuit
walletTranslateQuotanumberPages prises sur le quota payant
createTimenumberCréation, epoch en millisecondes
startTimenumberDébut, epoch en millisecondes
endTimenumberFin, epoch en millisecondes
errorCodestringCode d'échec quand status vaut 4
Exemple
requête
{
  "batchNo": "B20260828173001"
}
réponse
{
  "code": "200",
  "data": [
    {
      "translateOrderNo": "T20260828173002",
      "batchNo": "B20260828173001",
      "sourceFileName": "contract.pdf",
      "status": 3,
      "textNumber": 4820,
      "targetFileUrl": "https://s3.../contract_zh-CN.pdf?X-Amz-Signature=…"
    }
  ]
}
05

Parcourir l'historique

POST

/external/translate/searchTranslateFilePage

Parcourir l'historique de traduction du compte, page par page.

Paramètres

ChampTypeOblig.Description
pageNumnumberobligatoireNuméro de page, à partir de 1
pageSizenumberobligatoireLignes par page
statusnumberÉtat de la tâche — voir la légende
fileTypestringFiltrer par type de fichier, ex. PDF
sourceFileNamestringFiltrer par nom de fichier

Réponse · data

ChampTypeDescription
recordsarrayLignes de cette page
totalnumberNombre total
currentnumberPage courante
pagesnumberNombre de pages
06

Détail d'une tâche

POST

/external/translate/getTranslateFileDetail

Lire une tâche à partir de son numéro de commande.

Paramètres

ChampTypeOblig.Description
translateOrderNostringobligatoireNuméro de commande de la tâche

Réponse · objet tâche

ChampTypeDescription
translateOrderNostringNuméro de commande de la tâche
batchNostringNuméro de lot renvoyé à la soumission
sourceFileNamestringNom du fichier d'origine
statusnumberÉtat de la tâche — voir la légende
textNumbernumberCaractères décomptés
targetFileUrlstringURL du fichier traduit
targetFileUrl2stringURL de secours pour la Chine continentale
xComparisonS3UrlstringFichier comparatif côte à côte
yComparisonS3UrlstringFichier comparatif superposé
freeTranslateQuotanumberPages prises sur le quota gratuit
walletTranslateQuotanumberPages prises sur le quota payant
createTimenumberCréation, epoch en millisecondes
startTimenumberDébut, epoch en millisecondes
endTimenumberFin, epoch en millisecondes
errorCodestringCode d'échec quand status vaut 4
07

Obtenir un lien de téléchargement

POST

/external/translate/getTranslateS3DownloadUrl

Obtenir l'URL de téléchargement du fichier source, de la traduction ou d'un comparatif (réponse SSE).

Paramètres

ChampTypeOblig.Description
translateOrderNostringobligatoireNuméro de commande de la tâche
urlTypenumberobligatoireFichier à récupérer — voir la légende
isWatermarknumber0 retire le filigrane si l'offre le permet

Réponse · événements SSE

ChampTypeDescription
urlstringLien de téléchargement, dans l'événement [DONE]
url2stringLien de secours pour la Chine continentale, si présent
Exemple
requête
{
  "translateOrderNo": "T20260828173002",
  "urlType": 2,
  "isWatermark": 0
}
réponse
event:[PROCESS]
data:

event:[DONE]
data:{"translateOrderNo":"T20260828173002","url":"https://s3.../contract_zh-CN.pdf?X-Amz-Signature=…"}
08

Lister les modèles

POST

/external/translate/getModelList

Lister les valeurs acceptées par model et leurs coefficients de quota.

Paramètres

Aucun paramètre — envoyez un corps JSON vide.

Réponse · data

ChampTypeDescription
versionstringValeur à passer dans model
modelTypenumberFamille de modèle interne
vipTypenumberOffre requise
coefficientnumberCoefficient de quota du modèle
groupTypenumberGroupe d'affichage
09

Lister les langues

POST

/external/translate/getLanguageEnum

Lister les 79 codes de langue pris en charge avec leurs noms localisés.

Paramètres

Aucun paramètre — envoyez un corps JSON vide.

Réponse · data

ChampTypeDescription
{locale}objectlocale → code de langue → nom localisé
Exemple
réponse
{
  "code": "200",
  "data": {
    "en": {
      "AnyLanguage": "Any language",
      "zh-CN": "Simplified Chinese",
      "…": "…"
    },
    "zh": {
      "AnyLanguage": "任意语言",
      "zh-CN": "简体中文",
      "…": "…"
    },
    "…": {}
  }
}
/external/videoTranslate10 points d'entrée

Traduction de vidéos

La traduction vidéo de bout en bout : estimer le coût, soumettre, suivre l'avancement, puis corriger les sous-titres et régénérer.

  • status : 0 non démarré · 1 en cours · 2 terminé · 3 échec · 4 annulé
  • step : 1 reconnaissance vocale · 2 traduction des sous-titres · 3 génération vocale
  • stepStatus : 0 non démarré · 1 en cours · 2 terminé · 3 échec
  • subtitleType : 0 sans sous-titres · 1 traduits · 2 originaux · 3 les deux
01

Obtenir des URL d'envoi

POST

/external/videoTranslate/batchPresignedUploadUrl

Obtenir des URL d'envoi présignées pour des fichiers vidéo.

Paramètres

ChampTypeOblig.Description
fileNameListarray[string]obligatoireNoms des fichiers à envoyer

Réponse · data

ChampTypeDescription
persignedUploadUrlstringURL PUT présignée, valable 10 minutes
objectKeystringClé de stockage à renvoyer à la soumission
fileNamestringNom du fichier d'origine
02

Soumettre une vidéo

POST

/external/videoTranslate/submitVideoTranslate

Soumettre une traduction vidéo ; videoTaskParam porte les réglages de voix, de sous-titres et de police.

Paramètres

ChampTypeOblig.Description
sourceLanguagestringobligatoireLangue source ; AnyLanguage pour la détection
targetLanguagestringobligatoireLangue cible
sourceFileObjectKeystringobligatoireobjectKey de la vidéo envoyée
videoFileNamestringobligatoireNom du fichier vidéo d'origine
videoTaskParamobjectobligatoireRéglages de voix, sous-titres et police
voiceRolestringVoix de doublage ; clone reprend la voix d'origine
subtitleTypenumberSous-titres à incruster — voir la légende
Autres champs de videoTaskParam (25, tous facultatifs)
ChampTypeDescription
recognTypenumberMoteur de reconnaissance vocale, 12 par défaut — à ne pas modifier
modelNamestringModèle de reconnaissance, tiny par défaut
splitTypestringMode de découpage, all par défaut
isCudabooleanAccélération GPU, false par défaut
translateTypenumberMoteur de traduction des sous-titres, 14 par défaut — à ne pas modifier
ttsTypenumberMoteur de synthèse vocale, 15 par défaut — à ne pas modifier
voiceRatestringDébit du doublage, p. ex. +10%, +0% par défaut
volumestringVolume du doublage, p. ex. +10%, +0% par défaut
pitchstringHauteur du doublage, p. ex. +5Hz, +0Hz par défaut
voiceAutoratebooleanCaler la durée du doublage sur l'original, true par défaut
videoAutoratebooleanCaler la durée de l'image sur le doublage, true par défaut
appendVideobooleanBoucler l'image si elle est trop courte, true par défaut
isSeparatebooleanExporter la voix et le fond sonore séparément, false par défaut
onlyVideobooleanProduire uniquement la vidéo, sans fichiers de sous-titres, false par défaut
fontsizenumberTaille de police des sous-titres, 14 par défaut
fontnamestringNom de la police ; par défaut celle du serveur
fontcolorstringCouleur du texte, #RRGGBB ou couleur ASS
fontboldbooleanSous-titres en gras
subtitlePosYnumberDistance au bord inférieur, 0-90 % ; par défaut en bas
subtitlePosXnumberCentre horizontal depuis le bord gauche, 5-95 % ; 50 = centré
fontbordercolorstringCouleur du contour, #RRGGBB / #RRGGBBAA / couleur ASS
backgroundcolorstringCouleur du cadre de fond, #RRGGBB / #RRGGBBAA / couleur ASS
outlinenumberÉpaisseur du contour 0-10 ; 0 désactive le contour
shadownumberTaille de l'ombre 0-10 ; 0 désactive l'ombre
borderStylenumberStyle de bordure : 1 contour/ombre, 3 cadre par ligne

Réponse · objet tâche

ChampTypeDescription
videoTranslateOrderNostringNuméro de commande de la tâche vidéo
videoFileNamestringNom du fichier vidéo d'origine
videoDurationnumberDurée de la vidéo en secondes
statusnumberÉtat de la tâche — voir la légende
stepnumberÉtape en cours — voir la légende
stepStatusnumberÉtat de l'étape en cours — voir la légende
targetFileUrlstringURL du fichier traduit
sourceSubtitlesUrlstringURL des sous-titres source
targetSubtitlesUrlstringURL des sous-titres traduits
freeTranslateQuotanumberPages prises sur le quota gratuit
walletTranslateQuotanumberPages prises sur le quota payant
errorMessagestringMotif de l'échec
Exemple
requête
{
  "sourceLanguage": "ja",
  "targetLanguage": "zh-CN",
  "sourceFileObjectKey": "video/10086/2026/lecture.mp4",
  "videoFileName": "lecture.mp4",
  "videoTaskParam": { "voiceRole": "clone", "subtitleType": 1 }
}
03

Estimer le coût vidéo

POST

/external/videoTranslate/videoTranslateQuotaCalculate

Estimer le coût en quota à partir de la durée, de la voix et du type de sous-titres avant de soumettre.

Paramètres

ChampTypeOblig.Description
videoDurationnumberobligatoireDurée de la vidéo en secondes
voiceRolestringobligatoireVoix de doublage ; clone reprend la voix d'origine
subtitleTypenumberobligatoireSous-titres à incruster — voir la légende

Réponse · data

ChampTypeDescription
translateQuotanumberQuota total consommé
videoDurationTranslateQuotanumberQuota calculé sur la durée
thirtySecondQuotanumberQuota par tranche de 30 s
quotaCoefficientnumberCoefficient appliqué
04

Parcourir l'historique vidéo

POST

/external/videoTranslate/searchVideoTranslatePage

Parcourir l'historique de traduction vidéo du compte, page par page.

Paramètres

ChampTypeOblig.Description
pageNumnumberobligatoireNuméro de page, à partir de 1
pageSizenumberobligatoireLignes par page
statusnumberÉtat de la tâche — voir la légende

Réponse · data

ChampTypeDescription
recordsarrayLignes de cette page
totalnumberNombre total
currentnumberPage courante
pagesnumberNombre de pages
05

Détail d'une tâche

POST

/external/videoTranslate/getVideoTranslateDetail

Lire une tâche vidéo, avec son avancement et les URL des fichiers produits.

Paramètres

ChampTypeOblig.Description
videoTranslateOrderNostringobligatoireNuméro de commande de la tâche vidéo

Réponse · objet tâche

ChampTypeDescription
videoTranslateOrderNostringNuméro de commande de la tâche vidéo
videoFileNamestringNom du fichier vidéo d'origine
videoDurationnumberDurée de la vidéo en secondes
statusnumberÉtat de la tâche — voir la légende
stepnumberÉtape en cours — voir la légende
stepStatusnumberÉtat de l'étape en cours — voir la légende
targetFileUrlstringURL du fichier traduit
sourceSubtitlesUrlstringURL des sous-titres source
targetSubtitlesUrlstringURL des sous-titres traduits
freeTranslateQuotanumberPages prises sur le quota gratuit
walletTranslateQuotanumberPages prises sur le quota payant
errorMessagestringMotif de l'échec
06

Annuler une tâche vidéo

POST

/external/videoTranslate/cancelVideoTranslateHistory

Annuler une tâche vidéo qui n'est pas encore terminée.

Paramètres

ChampTypeOblig.Description
videoTranslateOrderNostringobligatoireNuméro de commande de la tâche vidéo
07

Récupérer les sous-titres

POST

/external/videoTranslate/getVideoTranslateSubtitles

Récupérer les sous-titres source et traduits pour les éditer.

Paramètres

ChampTypeOblig.Description
videoTranslateOrderNostringobligatoireNuméro de commande de la tâche vidéo

Réponse · data

ChampTypeDescription
sourceSubtitlesUrlstringURL des sous-titres source
targetSubtitlesUrlstringURL des sous-titres traduits
08

Envoyer les sous-titres modifiés

POST

/external/videoTranslate/submitVideoRewrite

Renvoyer les sous-titres modifiés et régénérer la vidéo.

Paramètres

ChampTypeOblig.Description
videoTranslateOrderNostringobligatoireNuméro de commande de la tâche vidéo
sourceSubtitlesTxtstringobligatoireSous-titres source modifiés
targetSubtitlesTxtstringobligatoireSous-titres traduits modifiés
videoTaskParamobjectRéglages de voix, sous-titres et police
Autres champs de videoTaskParam (25, tous facultatifs)
ChampTypeDescription
recognTypenumberMoteur de reconnaissance vocale, 12 par défaut — à ne pas modifier
modelNamestringModèle de reconnaissance, tiny par défaut
splitTypestringMode de découpage, all par défaut
isCudabooleanAccélération GPU, false par défaut
translateTypenumberMoteur de traduction des sous-titres, 14 par défaut — à ne pas modifier
ttsTypenumberMoteur de synthèse vocale, 15 par défaut — à ne pas modifier
voiceRatestringDébit du doublage, p. ex. +10%, +0% par défaut
volumestringVolume du doublage, p. ex. +10%, +0% par défaut
pitchstringHauteur du doublage, p. ex. +5Hz, +0Hz par défaut
voiceAutoratebooleanCaler la durée du doublage sur l'original, true par défaut
videoAutoratebooleanCaler la durée de l'image sur le doublage, true par défaut
appendVideobooleanBoucler l'image si elle est trop courte, true par défaut
isSeparatebooleanExporter la voix et le fond sonore séparément, false par défaut
onlyVideobooleanProduire uniquement la vidéo, sans fichiers de sous-titres, false par défaut
fontsizenumberTaille de police des sous-titres, 14 par défaut
fontnamestringNom de la police ; par défaut celle du serveur
fontcolorstringCouleur du texte, #RRGGBB ou couleur ASS
fontboldbooleanSous-titres en gras
subtitlePosYnumberDistance au bord inférieur, 0-90 % ; par défaut en bas
subtitlePosXnumberCentre horizontal depuis le bord gauche, 5-95 % ; 50 = centré
fontbordercolorstringCouleur du contour, #RRGGBB / #RRGGBBAA / couleur ASS
backgroundcolorstringCouleur du cadre de fond, #RRGGBB / #RRGGBBAA / couleur ASS
outlinenumberÉpaisseur du contour 0-10 ; 0 désactive le contour
shadownumberTaille de l'ombre 0-10 ; 0 désactive l'ombre
borderStylenumberStyle de bordure : 1 contour/ombre, 3 cadre par ligne

Réponse · data

ChampTypeDescription
videoTranslateRewriteOrderNostringNuméro de la régénération
statusnumberÉtat de la tâche — voir la légende
targetFileUrlstringURL du fichier traduit
09

Suivre la régénération

POST

/external/videoTranslate/getVideoTranslateRewriteDetail

Lire l'état d'une régénération de vidéo après édition des sous-titres.

Paramètres

ChampTypeOblig.Description
videoTranslateRewriteOrderNostringobligatoireNuméro de la régénération

Réponse · data

ChampTypeDescription
statusnumberÉtat de la tâche — voir la légende
targetFileUrlstringURL du fichier traduit
targetSubtitlesUrlstringURL des sous-titres traduits
errorMessagestringMotif de l'échec
10

Estimer le coût de régénération

POST

/external/videoTranslate/videoTranslateRewriteQuotaCalculate

Estimer le coût en quota d'une régénération après édition des sous-titres.

Paramètres

ChampTypeOblig.Description
videoTranslateRewriteOrderNostringobligatoireNuméro de la régénération

Réponse · data

ChampTypeDescription
translateQuotanumberQuota total consommé
quotaCoefficientnumberCoefficient appliqué
/external/user2 points d'entrée

Compte

Le quota et l'offre derrière la clé. Votre intégration vérifie le solde avant d'envoyer, au lieu de l'apprendre par une erreur.

  • subscriptionStatus : 1 en attente · 2 actif · 3 résilié · 4 annulé
  • interval : 1 jour · 2 semaine · 3 mois · 4 an
01

Consulter le quota

POST

/external/user/getMyWalletInfo

Le portefeuille derrière cette clé : quota de pages, quota OCR, retraits de filigrane et solde de parrainage.

Paramètres

Aucun paramètre — envoyez un corps JSON vide.

Réponse · data

ChampTypeDescription
userIdnumberCompte auquel la clé appartient
translateQuotanumberQuota de pages restant
advancedTranslateQuotanumberQuota restant pour les modèles avancés
ocrTranslateQuotanumberQuota OCR restant
accelerationCardNumbernumberCartes d'accélération restantes
totalFreeTranslateQuotanumberPages gratuites accordées sur la période
useFreeTranslateQuotanumberPages gratuites déjà utilisées sur la période
totalFreeOcrTranslateQuotanumberPages OCR gratuites accordées sur la période
useFreeOcrTranslateQuotanumberPages OCR gratuites déjà utilisées
freeWatermarkQuotanumberRetraits de filigrane restants
daysFreeWatermarkQuotanumberRetraits de filigrane accordés par jour
usedDaysFreeWatermarkQuotanumberRetraits de filigrane déjà utilisés aujourd'hui
rewardBalancenumberSolde de parrainage
rewardTotalnumberTotal gagné en parrainage
Exemple
requête
{}
réponse
{
  "code": "200",
  "data": {
    "userId": 10086,
    "translateQuota": 12000,
    "advancedTranslateQuota": 0,
    "ocrTranslateQuota": 800,
    "totalFreeTranslateQuota": 500,
    "useFreeTranslateQuota": 132
  }
}
02

Consulter l'offre

POST

/external/user/getMySubscriptionInfo

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

ChampTypeDescription
vipNamestringNom de l'offre
vipTypenumberPalier de l'offre
subscriptionStatusnumberÉtat de l'abonnement — voir la légende ci-dessus
intervalnumberPériodicité — voir la légende ci-dessus
startTimenumberDébut de période, epoch en millisecondes
endTimenumberFin de période, epoch en millisecondes
translateQuotanumberPages accordées par période
advancedTranslateQuotanumberPages de modèles avancés accordées par période
freeTranslateQuotanumberPages gratuites accordées par cycle
freeTranslateQuotaIntervalnumberCycle de remise à zéro des pages gratuites : 1 jour · 2 semaine · 3 mois
concurrenceTasknumberTâches documentaires simultanées autorisées
uploadFileSizenumberTaille maximale d'un fichier, en Mo
videoDurationLimitnumberDurée maximale d'une vidéo, en minutes
videoTranslateConcurrencynumberTâches vidéo simultanées autorisées
videoFileSizenumberTaille 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.

CodeSignificationQue faire
30306Clé API invalideVérifiez que la clé a été copiée en entier, préfixe ft_ compris. Une clé supprimée renvoie aussi ce code.
30307Clé désactivéeRéactivez-la depuis l'espace développeur ou basculez sur une autre clé.
30308Clé expiréeRepoussez la date d'expiration ou créez une nouvelle clé.
30309IP appelante hors liste blancheAjoutez l'IP sortante du serveur à la liste blanche de la clé, ou videz cette liste.
30312Clé bloquée par un administrateurContactez 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.