Entwickler-API · v1

Untertitel übersetzen
in Ihrem Workflow.

Nutzen Sie in Premiere-Pro-Plugins und eigenen Tools denselben Basic- und Plus-Übersetzungsdienst wie auf der Website.

Schnellstart

Erstellen Sie einen Schlüssel und laden Sie das Node.js-Beispiel herunter. Es schätzt die Kosten, erstellt einen Auftrag, fragt den Status ab und speichert die übersetzte SRT-Datei. Erforderlich ist Node.js 20 oder neuer; zusätzliche Pakete werden nicht benötigt.

export AST_BASE_URL='https://your-website-origin'
export AST_API_KEY='ast_YOUR_API_KEY'
node translate-subtitle.mjs input.srt zh plus translated.srt my-job-001
# Für zweisprachige Untertitel true als letztes Argument hinzufügen:
node translate-subtitle.mjs input.srt zh plus bilingual.srt my-job-001 true

Ersetzen Sie die Basis-URL durch den Origin dieser Website und legen Sie das heruntergeladene Skript neben Ihre SRT-Datei. Wählen Sie ausdrücklich basic oder plus. Verwenden Sie nach einem Netzwerkfehler denselben Auftragsschlüssel, dieselbe Eingabe und dieselben Optionen. Ein erneuter Download mit demselben Auftragsschlüssel verwendet die vorhandene Übersetzung; wählen Sie einen noch nicht vorhandenen Ausgabedateinamen.

Authentifizierung

Öffnen Sie Dashboard → Sicherheit → API-Schlüssel. Geben Sie dem Schlüssel einen Namen, um ihn zu erstellen. Sie können den vollständigen Schlüssel jederzeit erneut anzeigen und kopieren oder ihn auf derselben Seite widerrufen.

Authorization: Bearer ast_YOUR_API_KEY

Verwenden Sie den Origin dieser Website als Basis-URL. Alle 6 Endpunkte benötigen einen gültigen Schlüssel. Pro Konto sind 5 aktive Schlüssel möglich. API-Schlüssel erlauben den Zugriff auf per API erstellte Übersetzungen und das Guthaben Ihres Kontos.

Verwenden Sie Ihren eigenen Kontoschlüssel. Halten Sie ihn geheim und liefern Sie niemals einen gemeinsam genutzten Schlüssel mit einem veröffentlichten Plugin aus. Cookies und Schlüssel in URL-Abfrageparametern werden nicht akzeptiert.

Sechs Endpunkte

MethodePfadZweck
GET/api/v1/capabilitiesSprachen, Modellstufen, Limits
GET/api/v1/creditsGuthaben
POST/api/v1/translations/estimateKosten schätzen
POST/api/v1/translationsAuftrag erstellen
GET/api/v1/translations/{taskId}Status und Fortschritt
GET/api/v1/translations/{taskId}/resultSRT herunterladen

Erfolgreiche JSON-Antworten enthalten das Ergebnis unter { "data": ... }. Erfolgreiche Ergebnisdownloads liefern immer SRT.

Schätzen und einreichen

Beide POST-Endpunkte akzeptieren denselben JSON-Anfragetext. Senden Sie Content-Type: application/json.

{
  "fileName": "interview.srt",
  "subtitle": "1\n00:00:01,000 --> 00:00:03,000\nHello!\n",
  "targetLanguage": "zh",
  "modelTier": "plus"
}

subtitle, targetLanguage und modelTier sind Pflichtfelder. Wählen Sie ausdrücklich basic oder plus; ohne modelTier wird 400 INVALID_REQUEST zurückgegeben. Die Ausgangssprache wird automatisch erkannt. Zielsprachcodes erhalten Sie über /api/v1/capabilities.

Optionale glossary-Einträge enthalten source und target. Optionale characters-Einträge verwenden zusätzlich gender (male oder female) und aliases (eine Liste von Namen). Die genauen Strukturen stehen im OpenAPI-Schema. Unbekannte Felder werden abgelehnt.

Senden Sie zunächst eine POST-Anfrage an /api/v1/translations/estimate. Die Antwort enthält creditCost, availableCredits, sufficientCredits und die Anzahl der Untertiteleinträge. Die Schätzung erstellt keinen Auftrag und reserviert kein Guthaben.

Auftrag erstellen

curl "$AST_BASE_URL/api/v1/translations" \
  -H "Authorization: Bearer $AST_API_KEY" \
  -H 'Content-Type: application/json' \
  -H 'Idempotency-Key: premiere-sequence-123-zh-v1' \
  --data-binary @request.json

Speichern Sie den JSON-Anfragetext als request.json. Setzen Sie die beiden Umgebungsvariablen auf den Origin der Website und Ihren API-Schlüssel.

Ein neuer Auftrag liefert 202 Accepted mit data.id, data.creditCost, data.statusUrl und data.resultUrl. Der Header Location verweist auf den Statusendpunkt.

{
  "data": {
    "id": "6f476119-c02f-49a9-b61f-2b3327bd318c",
    "status": "pending",
    "fileName": "interview.srt",
    "modelTier": "plus",
    "targetLanguage": "zh",
    "creditCost": "1.00",
    "statusUrl": "/api/v1/translations/6f476119-c02f-49a9-b61f-2b3327bd318c",
    "resultUrl": "/api/v1/translations/6f476119-c02f-49a9-b61f-2b3327bd318c/result"
  }
}

Erzeugen Sie für jede beabsichtigte Übersetzung einen Idempotency-Key und behalten Sie ihn bei Wiederholungen bei. Identische Anfragen liefern denselben Auftrag mit HTTP 200. Ein anderer Anfragetext mit demselben Schlüssel führt zu 409. Die Schlüssel gelten für das Konto und bleiben beim Wechsel des API-Schlüssels gültig.

Der Header erlaubt 1–128 Buchstaben, Ziffern, Punkte, Unterstriche, Doppelpunkte oder Bindestriche. Ist der Auftrag einer wiederholten Anfrage abgelaufen oder gelöscht, wird 410 zurückgegeben. Verwenden Sie einen neuen Schlüssel nur, wenn Sie einen weiteren kostenpflichtigen Auftrag erstellen möchten.

Fortschritt und Ergebnisse

Fragen Sie die Status-URL alle 5 Sekunden ab. Der Status lautet pending, processing, completed oder failed. progress ist ein Prozentwert oder null, wenn nicht verfügbar; errorCode beschreibt einen fehlgeschlagenen Auftrag.

curl --fail "$AST_BASE_URL/api/v1/translations/$TASK_ID" \
  -H "Authorization: Bearer $AST_API_KEY"

Setzen Sie TASK_ID auf data.id aus der Einreichungsantwort. Fortschrittsantworten enthalten die obigen Auftragsfelder sowie progress und errorCode; beide können null sein. Beenden Sie die Abfrage bei failed und zeigen Sie den Fehler an. Verwenden Sie einen neuen Auftragsschlüssel nur für einen bewusst gestarteten neuen Übersetzungsversuch.

Rufen Sie nach Abschluss die Ergebnis-URL mit GET ab und speichern Sie den Antworttext als SRT-Datei. Der Antworttyp ist application/x-subrip; charset=utf-8. Ohne includeOriginal oder mit dem Wert false erhalten Sie nur die Übersetzung. Mit ?includeOriginal=true erhalten Sie zweisprachige Untertitel: zuerst den Originaltext, dann die Übersetzung.

curl --fail "$AST_BASE_URL/api/v1/translations/$TASK_ID/result?includeOriginal=true" \
  -H "Authorization: Bearer $AST_API_KEY" \
  --output translated-bilingual.srt

Der Parameter format wird nicht unterstützt und führt zu 400 INVALID_REQUEST. Fehler werden als JSON zurückgegeben. Ein zu früh angefordertes Ergebnis liefert 409 TRANSLATION_NOT_READY mit Retry-After: 5. Fehlgeschlagene Übersetzungen liefern 409 TRANSLATION_FAILED.

Laden Sie fertige Ergebnisse zeitnah herunter. Die Lösch- und Aufbewahrungsregeln der Website gelten auch für API-Aufträge. Fehlende oder nicht zugängliche Aufträge liefern 404. API-Aufträge erscheinen in Ihrem Untertitelverlauf.

Guthaben und Limits

API-Übersetzungen nutzen Ihr vorhandenes Guthaben sowie die Preise der Modellstufen und die Mindestgebühr der Website. Es gibt keinen zusätzlichen API-Aufschlag. Schätzen Sie die Kosten für jede Datei; die Schätzung garantiert keinen Preis. creditCost des angenommenen Auftrags ist der reservierte Betrag.

Während ein Auftrag wartet oder verarbeitet wird, wird Guthaben reserviert. Bei erfolgreichem Abschluss wird es einmalig berechnet. Reserviertes Guthaben bleibt für diesen Auftrag gültig, auch wenn seine ursprüngliche Gültigkeit während der Wartezeit endet. Bei Fehler oder Löschung wird die Reservierung aufgelöst: Noch gültiges Guthaben wird wieder verfügbar; abgelaufenes Guthaben bleibt abgelaufen. Fehlgeschlagene Aufträge verursachen keine Übersetzungsgebühr. Der Guthabenendpunkt liefert Dezimalzeichenfolgen: availableCredits, reservedCredits und totalCredits (verfügbares plus reserviertes Guthaben).

{ "data": { "availableCredits": "9.00", "reservedCredits": "1.00", "totalCredits": "10.00" } }
  • 60 Anfragen pro 60-Sekunden-Fenster und Konto, gemeinsam für alle Schlüssel.
  • 10 POST-Anfragen pro Fenster, gemeinsam für Schätzungen und Einreichungen.
  • Höchstens 3 API-Aufträge gleichzeitig im Warte- oder Verarbeitungsstatus.
  • Eine Datei und eine Zielsprache pro Auftrag.
  • 1 MiB UTF-8-Untertiteltext; insgesamt 2 MiB JSON; 5000 Untertiteleinträge.
  • Die Textlänge pro Untertiteleintrag folgt der Website-Einstellung (standardmäßig 500 Zeichen).
  • 200 Glossareinträge; 100 Figuren mit jeweils bis zu 20 Aliasnamen. Begriffe und Namen sind auf 200 Zeichen begrenzt.

Aktuelle Limits erhalten Sie über /api/v1/capabilities. Antworten enthalten X-RateLimit-Limit, X-RateLimit-Remaining und X-RateLimit-Reset (Unix-Zeit in Sekunden). Beachten Sie Retry-After bei 429-Antworten. Die Dauer einer Übersetzung hängt von der Warteschlange und der Eingabe ab.

Fehler und Wiederholungen

{
  "error": {
    "code": "INSUFFICIENT_CREDITS",
    "message": "Your account does not have enough available credits."
  },
  "requestId": "..."
}

400: ungültige Eingabe. 401: ungültiger oder widerrufener Schlüssel. 402: unzureichendes Guthaben. 404: Auftrag fehlt oder ist nicht zugänglich. 409: Schlüsselkonflikt, unvollendete oder fehlgeschlagene Übersetzung. 410: Auftrag einer wiederholten Anfrage ist abgelaufen. 413: Eingabe zu groß. 415: JSON erwartet. 422: Untertitel abgelehnt. 429: Anfrage- oder Auftragslimit erreicht. 502: unvollständiges Ergebnis. 503: Dienst, Modell oder Warteschlange nicht verfügbar.

Wiederholen Sie Anfragen nach Netzwerkfehlern oder vorübergehenden Serverfehlern mit demselben Idempotency-Key und Anfragetext. Warten Sie die in Retry-After angegebene Zeit ab, falls vorhanden. Nach einem endgültig fehlgeschlagenen Übersetzungsauftrag benötigt ein bewusster neuer Versuch einen neuen Schlüssel. Geben Sie beim Kontakt mit dem Support X-Request-Id und die Auftrags-ID an.

Premiere-Pro-Workflow

  1. SRT-Datei auswählen oder exportieren.
  2. Kosten schätzen und den Auftrag mit der gewünschten Zielsprache einreichen.
  3. Fortschritt anzeigen und anschließend die übersetzte SRT-Datei speichern.
  4. Die Datei in Premiere importieren und auf einer Untertitelspur platzieren.

Tragen Sie diesen Origin in den Netzwerkberechtigungen des UXP-Manifests ein und fordern Sie Dateizugriff für SRT-Ein- und -Ausgabe an. Die öffentlichen Endpunkte unterstützen CORS mit Bearer-Authentifizierung ohne Cookies.

Verwenden Sie nummerierte SRT-Einträge mit Zeitstempeln im Format HH:MM:SS,mmm, nicht leerem Text und Leerzeilen zwischen den Einträgen. Die bestehende Untertitelbereinigung gilt weiterhin: Formatierungstags werden entfernt, Einträge neu nummeriert und überlappender sekundärer Einblendungstext gegebenenfalls herausgefiltert. Zeitstempel beibehaltener Einträge bleiben unverändert. SRT überträgt keine Premiere-Formatierung.

Der automatische Zugriff auf eine vorhandene Untertitelspur muss für Ihre Premiere-Version gesondert geprüft werden. Die API akzeptiert Untertiteltext; transkribieren Sie Audio vor dem Einreichen in Untertitel.