Belin Doc IconBelin Doc

Belin Doc · Offene Plattform

Übersetzung API

Jeder Endpunkt unten ist die offene Variante einer Funktion, die Sie im Web bereits nutzen: gleiche Modelle, gleiches Kontingent, gleiche Ergebnisdateien. Der einzige Unterschied ist, dass ein API-Key die Anmeldesitzung ersetzt.

SchnellstartÜber MCP anbinden
Basis-URL
https://belindoc.com/api
Auth-Header
X-Api-Key
Methode
POST · application/json
Endpunkte
21
Aktualisiert
2026-09-04
Inhalt
Erste Schritte

Schnellstart

Vier Schritte vom rohen PDF zur Übersetzung. Die Video-Endpunkte folgen demselben Muster.

  1. 01

    API-Key anlegen

    Auf belindoc.com anmelden, oben rechts das Avatar-Menü öffnen, Entwicklerbereich wählen und einen Key anlegen. Keys beginnen mit ft_; der vollständige Wert wird nur ein einziges Mal direkt nach dem Anlegen angezeigt.

  2. 02

    Datei hochladen

    Erst eine vorsignierte URL anfordern, dann die Datei per PUT direkt dorthin schicken. Die URL gilt 10 Minuten; den zurückgegebenen objectKey brauchen Sie im nächsten Schritt.

    bash
    # 1. Vorsignierte Upload-URL anfordern (10 Minuten gültig)
    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. Datei per PUT direkt an diese URL hochladen
    curl -X PUT "<persignedUploadUrl>" --upload-file contract.pdf
  3. 03

    Übersetzung einreichen

    fileList, sourceLanguage, targetLanguage und model sind Pflicht. AnyLanguage erkennt die Ausgangssprache automatisch; Modellnamen nicht fest verdrahten, sondern aus getModelList lesen.

    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

    Status abfragen, dann herunterladen

    Über batchNo abfragen, bis status den Wert 3 hat, anschließend die Download-URL anfordern. Dieser Endpunkt antwortet als SSE-Stream — der Link steckt im Ereignis [DONE].

    bash
    # Aufgabe abfragen: status = 3 bedeutet, die Übersetzung ist fertig
    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>"}'
    
    # Download-URL abrufen: SSE-Antwort, der Link kommt im [DONE]-Event
    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://..."}
Erste Schritte

Authentifizierung

Die offenen Endpunkte liegen unter /external/ und erkennen den Aufrufer allein am Key. Alles andere — Request-Body, Standardwerte, Antwortstruktur — entspricht dem Web-Frontend.

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": { }
}
Header X-Api-Key
Den Key bei jeder Anfrage mitschicken. Fehlt der Key oder ist er deaktiviert, abgelaufen oder die aufrufende IP nicht freigegeben, wird die Anfrage vor jeder Fachlogik abgewiesen.
Header language
Optional. Bestimmt die Sprache des Feldes msg in der Antwort; Standard ist en. Erlaubt sind die 9 Sprachen der Website: en, zh, zh-Hant, ja, ko, fr, ru, de, ar.
Schlüssel wirken auf das persönliche Konto
Ein Schlüssel steht immer für das persönliche Konto, das ihn erstellt hat. Dateien liegen im Plattformspeicher, und Aufgaben zehren vom Kontingent dieses Kontos — der private Arbeitsbereich einer Organisation wird über die API nicht angesprochen.
Einheitliche Antwortstruktur
Alle Endpunkte antworten mit demselben Umschlag. code gleich 200 bedeutet Erfolg; jeder andere Wert ist ein fachlicher Fehler, und msg enthält den übersetzten Text.
Kein JWT, keine Signatur
Die Token- und Signaturfilter, die die Web-Endpunkte schützen, lassen /external/ durch. Der Key ist der einzige Nachweis — behandeln Sie ihn wie ein Passwort und halten Sie ihn serverseitig.
/external/translate9 Endpunkte

Dokumentübersetzung

Die komplette Dokumentstrecke: hochladen, einreichen, abfragen, herunterladen — dazu die Modell- und Sprachlisten, die Sie hier lesen statt fest zu verdrahten.

  • status: 0 wartend · 1 Analyse · 2 in Übersetzung · 3 fertig · 4 fehlgeschlagen · 5 abgebrochen
  • urlType: 1 Originaldatei · 2 Übersetzung · 3 nebeneinander · 4 untereinander · -1 EPUB-Vorschau
01

Upload-URLs holen

POST

/external/translate/batchPresignedUploadUrl

Vorsignierte Upload-URLs für eine oder mehrere Dateien holen.

Parameter

FeldTypPflichtBeschreibung
fileNameListarray[string]PflichtDateinamen für die Upload-URLs

Antwort · data

FeldTypBeschreibung
persignedUploadUrlstringVorsignierte PUT-URL, 10 Minuten gültig
objectKeystringSpeicherschlüssel für das Einreichen
fileNamestringUrsprünglicher Dateiname
storageTypenumberSpeicherart der Datei
Beispiel
Anfrage
{
  "fileNameList": ["contract.pdf"]
}
Antwort
{
  "code": "200",
  "data": [
    {
      "persignedUploadUrl": "https://s3.../contract.pdf?X-Amz-Signature=…",
      "objectKey": "translate/10086/2026/contract.pdf",
      "fileName": "contract.pdf",
      "storageType": 1
    }
  ]
}
02

Scan erkennen

POST

/external/translate/isOcr

Vor dem Einreichen prüfen, ob eine hochgeladene Datei ein Scan ist — damit OCR nur dort läuft, wo es sich lohnt.

Parameter

FeldTypPflichtBeschreibung
fileObjectKeystringPflichtobjectKey aus dem Presign-Aufruf
storageTypenumberPflichtSpeicherart der Datei

Antwort · data

FeldTypBeschreibung
isOcrnumber1 bedeutet: Die Datei ist ein Scan
isDoubleDecknumber1 bedeutet: Der Scan hat bereits eine Textebene
Beispiel
Anfrage
{
  "fileObjectKey": "translate/10086/2026/contract.pdf",
  "storageType": 1
}
Antwort
{
  "code": "200",
  "data": { "isOcr": 1, "isDoubleDeck": 0 }
}
03

Übersetzung einreichen

POST

/external/translate/batchSubmitTranslateTask

Stapelübersetzung einreichen; liefert batchNo und je Datei eine Auftragsnummer.

Parameter

FeldTypPflichtBeschreibung
fileListarrayPflichtZu übersetzende Dateien
fileNamestringPflichtUrsprünglicher Dateiname
fileObjectKeystringPflichtobjectKey aus dem Presign-Aufruf
isOcrFilenumber1 behandelt die Datei als Scan; Wert aus isOcr übernehmen
sourceLanguagestringPflichtAusgangssprache; AnyLanguage erkennt automatisch
targetLanguagestringPflichtZielsprache
modelstringPflichtModellversion aus getModelList
isOcrnumber1 startet OCR; Standard 0
isMathnumber1 erhält das Formellayout; Standard 0
translateStylenumberVoreingestellter Übersetzungsstil
terminologyCollectionIdstringID des anzuwendenden Glossars; Glossare lassen sich derzeit nur in der Web-App anlegen und verwalten

Antwort · data

FeldTypBeschreibung
batchNostringBeim Einreichen zurückgegebene Stapelnummer
fileListarrayZu übersetzende Dateien
balanceHintnumber1 warnt vor knappem Restkontingent
Beispiel
Anfrage
{
  "fileList": [
    { "fileName": "contract.pdf", "fileObjectKey": "translate/10086/2026/contract.pdf" }
  ],
  "sourceLanguage": "AnyLanguage",
  "targetLanguage": "zh-CN",
  "model": "Gemini-2.5-Flash",
  "isOcr": 0,
  "terminologyCollectionId": "66f1c2a4b8d3e5f7a9c1b2d3"
}
Antwort
{
  "code": "200",
  "data": {
    "batchNo": "B20260828173001",
    "fileList": [
      { "fileName": "contract.pdf", "fileObjectKey": "translate/10086/2026/contract.pdf" }
    ],
    "balanceHint": 0
  }
}
04

Aufgaben eines Stapels

POST

/external/translate/searchTranslateFileByBatchNo

Alle Aufgaben eines Stapels auflisten — dieser Endpunkt ist für das Polling gedacht.

Parameter

FeldTypPflichtBeschreibung
batchNostringPflichtBeim Einreichen zurückgegebene Stapelnummer

Antwort · Aufgabenobjekt

FeldTypBeschreibung
translateOrderNostringAuftragsnummer der Aufgabe
batchNostringBeim Einreichen zurückgegebene Stapelnummer
sourceFileNamestringUrsprünglicher Dateiname
statusnumberAufgabenstatus — siehe Legende
textNumbernumberFür diese Aufgabe gezählte Zeichen
targetFileUrlstringURL der Übersetzung
targetFileUrl2stringAusweich-URL für Festlandchina
xComparisonS3UrlstringVergleichsdatei nebeneinander
yComparisonS3UrlstringVergleichsdatei untereinander
freeTranslateQuotanumberSeiten aus dem kostenlosen Kontingent
walletTranslateQuotanumberSeiten aus dem bezahlten Kontingent
createTimenumberErstellt, Epoch in Millisekunden
startTimenumberGestartet, Epoch in Millisekunden
endTimenumberBeendet, Epoch in Millisekunden
errorCodestringFehlercode, wenn status 4 ist
Beispiel
Anfrage
{
  "batchNo": "B20260828173001"
}
Antwort
{
  "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

Verlauf durchblättern

POST

/external/translate/searchTranslateFilePage

Den Übersetzungsverlauf dieses Kontos seitenweise durchgehen.

Parameter

FeldTypPflichtBeschreibung
pageNumnumberPflichtSeitenzahl, beginnt bei 1
pageSizenumberPflichtZeilen pro Seite
statusnumberAufgabenstatus — siehe Legende
fileTypestringNach Dateityp filtern, z. B. PDF
sourceFileNamestringNach Dateinamen filtern

Antwort · data

FeldTypBeschreibung
recordsarrayZeilen dieser Seite
totalnumberGesamtzahl
currentnumberAktuelle Seite
pagesnumberSeiten insgesamt
06

Aufgabendetail lesen

POST

/external/translate/getTranslateFileDetail

Eine einzelne Aufgabe über ihre Auftragsnummer lesen.

Parameter

FeldTypPflichtBeschreibung
translateOrderNostringPflichtAuftragsnummer der Aufgabe

Antwort · Aufgabenobjekt

FeldTypBeschreibung
translateOrderNostringAuftragsnummer der Aufgabe
batchNostringBeim Einreichen zurückgegebene Stapelnummer
sourceFileNamestringUrsprünglicher Dateiname
statusnumberAufgabenstatus — siehe Legende
textNumbernumberFür diese Aufgabe gezählte Zeichen
targetFileUrlstringURL der Übersetzung
targetFileUrl2stringAusweich-URL für Festlandchina
xComparisonS3UrlstringVergleichsdatei nebeneinander
yComparisonS3UrlstringVergleichsdatei untereinander
freeTranslateQuotanumberSeiten aus dem kostenlosen Kontingent
walletTranslateQuotanumberSeiten aus dem bezahlten Kontingent
createTimenumberErstellt, Epoch in Millisekunden
startTimenumberGestartet, Epoch in Millisekunden
endTimenumberBeendet, Epoch in Millisekunden
errorCodestringFehlercode, wenn status 4 ist
07

Download-URL holen

POST

/external/translate/getTranslateS3DownloadUrl

Download-URL für Originaldatei, Übersetzung oder Vergleichsdatei holen (SSE-Antwort).

Parameter

FeldTypPflichtBeschreibung
translateOrderNostringPflichtAuftragsnummer der Aufgabe
urlTypenumberPflichtWelche Datei geholt wird — siehe Legende
isWatermarknumber0 entfernt das Wasserzeichen, sofern der Tarif es zulässt

Antwort · SSE-Ereignisse

FeldTypBeschreibung
urlstringDownload-Link, im Ereignis [DONE]
url2stringAusweich-Link für Festlandchina, falls vorhanden
Beispiel
Anfrage
{
  "translateOrderNo": "T20260828173002",
  "urlType": 2,
  "isWatermark": 0
}
Antwort
event:[PROCESS]
data:

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

Modelle auflisten

POST

/external/translate/getModelList

Die für model zulässigen Werte samt Kontingentfaktor auflisten.

Parameter

Keine Parameter — leeren JSON-Body senden.

Antwort · data

FeldTypBeschreibung
versionstringWert für model
modelTypenumberInterne Modellfamilie
vipTypenumberErforderlicher Tarif
coefficientnumberKontingentfaktor des Modells
groupTypenumberGruppe in der Liste
09

Sprachen auflisten

POST

/external/translate/getLanguageEnum

Die 79 unterstützten Sprachcodes mit übersetzten Namen auflisten.

Parameter

Keine Parameter — leeren JSON-Body senden.

Antwort · data

FeldTypBeschreibung
{locale}objectLocale → Sprachcode → übersetzter Name
Beispiel
Antwort
{
  "code": "200",
  "data": {
    "en": {
      "AnyLanguage": "Any language",
      "zh-CN": "Simplified Chinese",
      "…": "…"
    },
    "zh": {
      "AnyLanguage": "任意语言",
      "zh-CN": "简体中文",
      "…": "…"
    },
    "…": {}
  }
}
/external/videoTranslate10 Endpunkte

Videoübersetzung

Videoübersetzung von Anfang bis Ende: Kosten schätzen, einreichen, Fortschritt verfolgen, Untertitel bearbeiten und neu erzeugen.

  • status: 0 nicht gestartet · 1 läuft · 2 fertig · 3 fehlgeschlagen · 4 abgebrochen
  • step: 1 Spracherkennung · 2 Untertitelübersetzung · 3 Sprachsynthese
  • stepStatus: 0 nicht gestartet · 1 läuft · 2 fertig · 3 fehlgeschlagen
  • subtitleType: 0 ohne Untertitel · 1 übersetzt · 2 Original · 3 beides
01

Upload-URLs holen

POST

/external/videoTranslate/batchPresignedUploadUrl

Vorsignierte Upload-URLs für Videodateien holen.

Parameter

FeldTypPflichtBeschreibung
fileNameListarray[string]PflichtDateinamen für die Upload-URLs

Antwort · data

FeldTypBeschreibung
persignedUploadUrlstringVorsignierte PUT-URL, 10 Minuten gültig
objectKeystringSpeicherschlüssel für das Einreichen
fileNamestringUrsprünglicher Dateiname
02

Video einreichen

POST

/external/videoTranslate/submitVideoTranslate

Videoübersetzung einreichen; videoTaskParam trägt Stimm-, Untertitel- und Schrifteinstellungen.

Parameter

FeldTypPflichtBeschreibung
sourceLanguagestringPflichtAusgangssprache; AnyLanguage erkennt automatisch
targetLanguagestringPflichtZielsprache
sourceFileObjectKeystringPflichtobjectKey des hochgeladenen Videos
videoFileNamestringPflichtUrsprünglicher Videodateiname
videoTaskParamobjectPflichtStimm-, Untertitel- und Schrifteinstellungen
voiceRolestringSynchronstimme; clone übernimmt die Originalstimme
subtitleTypenumberEinzubrennende Untertitel — siehe Legende
Weitere videoTaskParam-Felder (25, alle optional)
FeldTypBeschreibung
recognTypenumberSpracherkennungs-Engine, Standard 12 — nicht ändern
modelNamestringErkennungsmodell, Standard tiny
splitTypestringSegmentierungsmodus, Standard all
isCudabooleanGPU-Beschleunigung, Standard false
translateTypenumberUntertitel-Übersetzungs-Engine, Standard 14 — nicht ändern
ttsTypenumberSprachsynthese-Engine, Standard 15 — nicht ändern
voiceRatestringSprechtempo der Vertonung, z. B. +10%, Standard +0%
volumestringLautstärke der Vertonung, z. B. +10%, Standard +0%
pitchstringTonhöhe der Vertonung, z. B. +5Hz, Standard +0Hz
voiceAutoratebooleanVertonung an das Original-Timing anpassen, Standard true
videoAutoratebooleanBild an das Timing der Vertonung anpassen, Standard true
appendVideobooleanBild schleifen, wenn es zu kurz ist, Standard true
isSeparatebooleanStimme und Hintergrund getrennt ausgeben, Standard false
onlyVideobooleanNur das Video ausgeben, keine Untertiteldateien, Standard false
fontsizenumberSchriftgröße der Untertitel, Standard 14
fontnamestringSchriftname; ohne Angabe die Server-Voreinstellung
fontcolorstringTextfarbe, #RRGGBB oder ASS-Farbwert
fontboldbooleanUntertitel fett
subtitlePosYnumberAbstand zur Unterkante, 0-90 Prozent; ohne Angabe unten
subtitlePosXnumberHorizontale Mitte ab linkem Rand, 5-95 Prozent; 50 = zentriert
fontbordercolorstringFarbe der Kontur, #RRGGBB / #RRGGBBAA / ASS-Farbwert
backgroundcolorstringFarbe des Hintergrundkastens, #RRGGBB / #RRGGBBAA / ASS-Farbwert
outlinenumberKonturbreite 0-10; 0 schaltet die Kontur ab
shadownumberSchattengröße 0-10; 0 schaltet den Schatten ab
borderStylenumberRahmenstil: 1 Kontur/Schatten, 3 Kasten je Zeile

Antwort · Aufgabenobjekt

FeldTypBeschreibung
videoTranslateOrderNostringAuftragsnummer der Videoaufgabe
videoFileNamestringUrsprünglicher Videodateiname
videoDurationnumberVideolänge in Sekunden
statusnumberAufgabenstatus — siehe Legende
stepnumberAktueller Schritt — siehe Legende
stepStatusnumberStatus des aktuellen Schritts — siehe Legende
targetFileUrlstringURL der Übersetzung
sourceSubtitlesUrlstringURL der Originaluntertitel
targetSubtitlesUrlstringURL der übersetzten Untertitel
freeTranslateQuotanumberSeiten aus dem kostenlosen Kontingent
walletTranslateQuotanumberSeiten aus dem bezahlten Kontingent
errorMessagestringFehlergrund bei Abbruch
Beispiel
Anfrage
{
  "sourceLanguage": "ja",
  "targetLanguage": "zh-CN",
  "sourceFileObjectKey": "video/10086/2026/lecture.mp4",
  "videoFileName": "lecture.mp4",
  "videoTaskParam": { "voiceRole": "clone", "subtitleType": 1 }
}
03

Videokosten schätzen

POST

/external/videoTranslate/videoTranslateQuotaCalculate

Vor dem Einreichen den Kontingentverbrauch aus Länge, Stimme und Untertiteltyp schätzen.

Parameter

FeldTypPflichtBeschreibung
videoDurationnumberPflichtVideolänge in Sekunden
voiceRolestringPflichtSynchronstimme; clone übernimmt die Originalstimme
subtitleTypenumberPflichtEinzubrennende Untertitel — siehe Legende

Antwort · data

FeldTypBeschreibung
translateQuotanumberInsgesamt verbrauchtes Kontingent
videoDurationTranslateQuotanumberAus der Länge berechnetes Kontingent
thirtySecondQuotanumberKontingent je 30 Sekunden
quotaCoefficientnumberAngewendeter Faktor
04

Videoverlauf durchblättern

POST

/external/videoTranslate/searchVideoTranslatePage

Den Videoübersetzungsverlauf dieses Kontos seitenweise durchgehen.

Parameter

FeldTypPflichtBeschreibung
pageNumnumberPflichtSeitenzahl, beginnt bei 1
pageSizenumberPflichtZeilen pro Seite
statusnumberAufgabenstatus — siehe Legende

Antwort · data

FeldTypBeschreibung
recordsarrayZeilen dieser Seite
totalnumberGesamtzahl
currentnumberAktuelle Seite
pagesnumberSeiten insgesamt
05

Aufgabendetail lesen

POST

/external/videoTranslate/getVideoTranslateDetail

Eine einzelne Videoaufgabe lesen, inklusive Fortschritt und Ergebnis-URLs.

Parameter

FeldTypPflichtBeschreibung
videoTranslateOrderNostringPflichtAuftragsnummer der Videoaufgabe

Antwort · Aufgabenobjekt

FeldTypBeschreibung
videoTranslateOrderNostringAuftragsnummer der Videoaufgabe
videoFileNamestringUrsprünglicher Videodateiname
videoDurationnumberVideolänge in Sekunden
statusnumberAufgabenstatus — siehe Legende
stepnumberAktueller Schritt — siehe Legende
stepStatusnumberStatus des aktuellen Schritts — siehe Legende
targetFileUrlstringURL der Übersetzung
sourceSubtitlesUrlstringURL der Originaluntertitel
targetSubtitlesUrlstringURL der übersetzten Untertitel
freeTranslateQuotanumberSeiten aus dem kostenlosen Kontingent
walletTranslateQuotanumberSeiten aus dem bezahlten Kontingent
errorMessagestringFehlergrund bei Abbruch
06

Videoaufgabe abbrechen

POST

/external/videoTranslate/cancelVideoTranslateHistory

Eine noch nicht abgeschlossene Videoaufgabe abbrechen.

Parameter

FeldTypPflichtBeschreibung
videoTranslateOrderNostringPflichtAuftragsnummer der Videoaufgabe
07

Untertitel holen

POST

/external/videoTranslate/getVideoTranslateSubtitles

Original- und übersetzte Untertitel zur Bearbeitung abrufen.

Parameter

FeldTypPflichtBeschreibung
videoTranslateOrderNostringPflichtAuftragsnummer der Videoaufgabe

Antwort · data

FeldTypBeschreibung
sourceSubtitlesUrlstringURL der Originaluntertitel
targetSubtitlesUrlstringURL der übersetzten Untertitel
08

Bearbeitete Untertitel senden

POST

/external/videoTranslate/submitVideoRewrite

Bearbeitete Untertitel einreichen und das Video neu erzeugen.

Parameter

FeldTypPflichtBeschreibung
videoTranslateOrderNostringPflichtAuftragsnummer der Videoaufgabe
sourceSubtitlesTxtstringPflichtBearbeitete Originaluntertitel
targetSubtitlesTxtstringPflichtBearbeitete übersetzte Untertitel
videoTaskParamobjectStimm-, Untertitel- und Schrifteinstellungen
Weitere videoTaskParam-Felder (25, alle optional)
FeldTypBeschreibung
recognTypenumberSpracherkennungs-Engine, Standard 12 — nicht ändern
modelNamestringErkennungsmodell, Standard tiny
splitTypestringSegmentierungsmodus, Standard all
isCudabooleanGPU-Beschleunigung, Standard false
translateTypenumberUntertitel-Übersetzungs-Engine, Standard 14 — nicht ändern
ttsTypenumberSprachsynthese-Engine, Standard 15 — nicht ändern
voiceRatestringSprechtempo der Vertonung, z. B. +10%, Standard +0%
volumestringLautstärke der Vertonung, z. B. +10%, Standard +0%
pitchstringTonhöhe der Vertonung, z. B. +5Hz, Standard +0Hz
voiceAutoratebooleanVertonung an das Original-Timing anpassen, Standard true
videoAutoratebooleanBild an das Timing der Vertonung anpassen, Standard true
appendVideobooleanBild schleifen, wenn es zu kurz ist, Standard true
isSeparatebooleanStimme und Hintergrund getrennt ausgeben, Standard false
onlyVideobooleanNur das Video ausgeben, keine Untertiteldateien, Standard false
fontsizenumberSchriftgröße der Untertitel, Standard 14
fontnamestringSchriftname; ohne Angabe die Server-Voreinstellung
fontcolorstringTextfarbe, #RRGGBB oder ASS-Farbwert
fontboldbooleanUntertitel fett
subtitlePosYnumberAbstand zur Unterkante, 0-90 Prozent; ohne Angabe unten
subtitlePosXnumberHorizontale Mitte ab linkem Rand, 5-95 Prozent; 50 = zentriert
fontbordercolorstringFarbe der Kontur, #RRGGBB / #RRGGBBAA / ASS-Farbwert
backgroundcolorstringFarbe des Hintergrundkastens, #RRGGBB / #RRGGBBAA / ASS-Farbwert
outlinenumberKonturbreite 0-10; 0 schaltet die Kontur ab
shadownumberSchattengröße 0-10; 0 schaltet den Schatten ab
borderStylenumberRahmenstil: 1 Kontur/Schatten, 3 Kasten je Zeile

Antwort · data

FeldTypBeschreibung
videoTranslateRewriteOrderNostringAuftragsnummer der Neuerzeugung
statusnumberAufgabenstatus — siehe Legende
targetFileUrlstringURL der Übersetzung
09

Neuerzeugung verfolgen

POST

/external/videoTranslate/getVideoTranslateRewriteDetail

Den Status einer Neuerzeugung nach Untertitelbearbeitung lesen.

Parameter

FeldTypPflichtBeschreibung
videoTranslateRewriteOrderNostringPflichtAuftragsnummer der Neuerzeugung

Antwort · data

FeldTypBeschreibung
statusnumberAufgabenstatus — siehe Legende
targetFileUrlstringURL der Übersetzung
targetSubtitlesUrlstringURL der übersetzten Untertitel
errorMessagestringFehlergrund bei Abbruch
10

Kosten der Neuerzeugung

POST

/external/videoTranslate/videoTranslateRewriteQuotaCalculate

Den Kontingentverbrauch einer Neuerzeugung nach Untertitelbearbeitung schätzen.

Parameter

FeldTypPflichtBeschreibung
videoTranslateRewriteOrderNostringPflichtAuftragsnummer der Neuerzeugung

Antwort · data

FeldTypBeschreibung
translateQuotanumberInsgesamt verbrauchtes Kontingent
quotaCoefficientnumberAngewendeter Faktor
/external/user2 Endpunkte

Konto

Kontingent und Tarif hinter dem Schlüssel. So prüft Ihre Integration den Stand vor dem Absenden, statt ihn aus einer Fehlermeldung zu erfahren.

  • subscriptionStatus: 1 offen · 2 aktiv · 3 gekündigt · 4 storniert
  • interval: 1 Tag · 2 Woche · 3 Monat · 4 Jahr
01

Kontingent abfragen

POST

/external/user/getMyWalletInfo

Das Guthaben hinter diesem Schlüssel: Seitenkontingent, OCR-Kontingent, Wasserzeichen-Entfernungen und Empfehlungsguthaben.

Parameter

Keine Parameter — leeren JSON-Body senden.

Antwort · data

FeldTypBeschreibung
userIdnumberKonto, zu dem der Schlüssel gehört
translateQuotanumberVerbleibendes Seitenkontingent
advancedTranslateQuotanumberVerbleibendes Kontingent für Premium-Modelle
ocrTranslateQuotanumberVerbleibendes OCR-Kontingent
accelerationCardNumbernumberVerbleibende Beschleunigungskarten
totalFreeTranslateQuotanumberFreie Seiten in dieser Periode
useFreeTranslateQuotanumberDavon in dieser Periode verbraucht
totalFreeOcrTranslateQuotanumberFreie OCR-Seiten in dieser Periode
useFreeOcrTranslateQuotanumberDavon in dieser Periode verbraucht
freeWatermarkQuotanumberVerbleibende Wasserzeichen-Entfernungen
daysFreeWatermarkQuotanumberTägliche Wasserzeichen-Entfernungen
usedDaysFreeWatermarkQuotanumberHeute davon verbraucht
rewardBalancenumberGuthaben aus Empfehlungen
rewardTotalnumberInsgesamt verdiente Empfehlungsprämien
Beispiel
Anfrage
{}
Antwort
{
  "code": "200",
  "data": {
    "userId": 10086,
    "translateQuota": 12000,
    "advancedTranslateQuota": 0,
    "ocrTranslateQuota": 800,
    "totalFreeTranslateQuota": 500,
    "useFreeTranslateQuota": 132
  }
}
02

Tarif abfragen

POST

/external/user/getMySubscriptionInfo

Der Tarif hinter diesem Schlüssel: Stufe, laufende Periode und die Grenzen daraus — Parallelität, Dateigröße, Videolänge.

Parameter

Keine Parameter — leeren JSON-Body senden.

Antwort · data

FeldTypBeschreibung
vipNamestringTarifname
vipTypenumberTarifstufe
subscriptionStatusnumberStatus des Abos — siehe Legende oben
intervalnumberAbrechnungszeitraum — siehe Legende oben
startTimenumberBeginn der Periode, Epoch in Millisekunden
endTimenumberEnde der Periode, Epoch in Millisekunden
translateQuotanumberSeiten je Periode
advancedTranslateQuotanumberPremium-Modell-Seiten je Periode
freeTranslateQuotanumberFreie Seiten je Zyklus
freeTranslateQuotaIntervalnumberZyklus der freien Seiten: 1 Tag · 2 Woche · 3 Monat
concurrenceTasknumberGleichzeitig laufende Dokumentaufgaben
uploadFileSizenumberMaximale Dateigröße in MB
videoDurationLimitnumberMaximale Videolänge in Minuten
videoTranslateConcurrencynumberGleichzeitig laufende Videoaufgaben
videoFileSizenumberMaximale Videogröße in MB
Anhang

Fehlercodes

Fehler auf Key-Ebene kommen ebenfalls mit HTTP 200 zurück; der fachliche Code steht im Umschlag. Diese hier muss Ihre Integration behandeln.

CodeBedeutungVorgehen
30306Ungültiger API-KeyPrüfen, ob der Key vollständig kopiert wurde, inklusive Präfix ft_. Gelöschte Keys liefern denselben Code.
30307Key deaktiviertIm Entwicklerbereich wieder aktivieren oder einen anderen Key verwenden.
30308Key abgelaufenDas Ablaufdatum nach hinten setzen oder einen neuen Key anlegen.
30309Aufrufende IP nicht freigegebenDie ausgehende IP des Servers in die Freigabeliste des Keys aufnehmen oder die Liste leeren.
30312Key durch Administrator gesperrtSupport kontaktieren — diese Sperre lässt sich nicht im Entwicklerbereich aufheben.

Fehler der Übersetzung selbst — zu wenig Kontingent, nicht unterstützte Datei, doppelte Einreichung — haben eigene Codes und liefern immer ein übersetztes msg. Verzweigen Sie über code, nie über msg.

Anhang

Kontingent und Grenzen

Die API ist ein weiterer Zugang, kein zweites Produkt. Diese Regeln übernimmt sie vom Web-Frontend.

Gleiches Kontingent, keine getrennte Abrechnung
API-Aufrufe verbrauchen dasselbe Seiten- und Videokontingent wie das Web-Frontend, mit denselben Modellfaktoren. Einen eigenen API-Preis gibt es nicht.
Gleiche Wasserzeichen-Regeln
Im kostenlosen Kontingent tragen übersetzte PDFs ein Wasserzeichen, genau wie im Browser. Über die API verschwindet es nicht.
Nur Einreichungen zählen als Aufrufe
Der Aufrufzähler eines Keys steigt nur bei batchSubmitTranslateTask, submitVideoTranslate und submitVideoRewrite. Status- und Detailabfragen dürfen frei gepollt werden.
Eine Einreichung zur Zeit
Einreichungen werden pro Konto serialisiert. Wird eingereicht, während die vorherige noch angenommen wird, kommt ein Fehlercode für doppelte Aufgaben zurück — kurz warten und erneut senden statt parallel feuern.
OCR ist standardmäßig aus
isOcr nur für Scans setzen. OCR zieht zusätzlich zum Seitenkontingent ein eigenes OCR-Unterkontingent ab; bei Text-PDFs verbraucht es damit doppelt. Im Zweifel vorher den Endpunkt isOcr aufrufen.

Lieber ohne HTTP-Klempnerei?

Dieselben Fähigkeiten stehen auch als MCP-Tools bereit: Ein KI-Agent übersetzt ein Dokument, ohne dass Sie einen einzigen HTTP-Aufruf schreiben.