Zum Hauptinhalt springen
Viele Medienendpunkte sind asynchron. Eine Erstellungsanfrage startet die Arbeit und gibt eine öffentliche TokenLab-Aufgabenidentität zurück; Ihre Anwendung fragt ab, bis diese Aufgabe einen terminalen Status erreicht. Bauen Sie keine Kunden-Workflows um upstream-Aufgaben-URLs, Routing-IDs oder das Callback-Verhalten des Anbieters.

Öffentlicher Aufgabenvertrag

Erstellungsantworten können Folgendes enthalten:
FeldBedeutungWas zu tun ist
idÖffentliche TokenLab-Aufgaben-IDSpeichern Sie es mit Ihrem eigenen Jobdatensatz
task_idKompatibilitätsalias für dieselbe öffentliche AufgabenidentitätBehandeln Sie es als gleichwertig zu id
statusAktueller öffentlicher AufgabenstatusBeginnen Sie mit der Abfrage, wenn er nicht terminal ist
poll_urlBevorzugte Status-URLVerwenden Sie dies zuerst, wenn vorhanden
modelModell, das vom Endpunkt angefordert oder gelöst wurdeSpeichern Sie es für Support- und Abrechnungsversöhnung
/v1/tasks/{id} ist der kanonische feste Statusendpunkt für öffentliche asynchrone Medienjobs. Medien-spezifische Statusrouten können zur Kompatibilität existieren, aber neue Integrationen sollten poll_url oder /v1/tasks/{id} bevorzugen.

Empfohlener Ablauf

  1. Validieren Sie die Benutzeranfrage und senden Sie den Erstellungsaufruf mit einem expliziten model.
  2. Speichern Sie id / task_id, poll_url, Endpunkt, Modell, Benutzer-ID und Ihre eigene Job-ID, bevor Sie die Kontrolle an die UI zurückgeben.
  3. Fragen Sie alle 5-10s für lang laufende Medienaufgaben ab.
  4. Stoppen Sie nur, wenn die Aufgabe completed oder failed ist.
  5. Bei completed lesen Sie die medien-spezifischen Ergebnisfelder und speichern Sie endgültige URLs oder Metadaten.
  6. Bei failed speichern Sie den öffentlichen Fehler und bieten Sie einen erneuten Versuch nur als neuen benutzer-sichtbaren Job an.
{
  "id": "ldtask_aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
  "task_id": "ldtask_aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
  "status": "pending",
  "poll_url": "/v1/tasks/ldtask_aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
  "model": "veo3.1"
}

Abfragebeispiel

curl "https://api.tokenlab.sh/v1/tasks/ldtask_aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
  -H "Authorization: Bearer sk-your-api-key"
Erwartete öffentliche Status sind pending, processing, completed und failed. Abgebrochene Aufgaben werden als failed mit cancelled: true und cancellation_status: "cancelled" dargestellt, damit die ältere Statusverarbeitung weiterhin funktioniert.

Client-Wiederholungsregeln

Netzwerkzeitüberschreitungen sind die häufigste Quelle für doppelte Jobs. Verwenden Sie diese Regel:
Wo die Zeitüberschreitung auftrittSichereres Verhalten
Bevor Ihr Server eine Erstellungsantwort erhältÜberprüfen Sie die Serverprotokolle auf request_id; wiederholen Sie nur, wenn keine Aufgabe erstellt wurde
Nachdem eine Erstellungsantwort gespeichert wurdeSetzen Sie die Abfrage der gespeicherten task_id fort
Während der AbfrageWiederholen Sie die Statusanfrage mit Backoff
Nach terminalem StatusFragen Sie nicht erneut ab, es sei denn, der Benutzer aktualisiert ausdrücklich den Datensatz
Senden Sie keine zweite Erstellungsanfrage nur, weil der Browser aktualisiert wurde oder eine Statusabfrage fehlgeschlagen ist.

Abrechnung und Abwicklung

Asynchrone Jobs können einen geschätzten Betrag reservieren, wenn die Erstellungsanfrage akzeptiert wird. Die endgültige Abwicklung erfolgt nach terminalem Status. Wenn verfügbar, können die Antworten zum Aufgabenstatus billing_transaction_id und den Header X-Billing-Transaction-ID offenbaren. Für die Versöhnung verbinden Sie diese Identifikatoren in Ihren Protokollen:
  • request_id aus der Erstellungsanfrage.
  • task_id / id aus der Aufgabe.
  • billing_transaction_id, wenn vorhanden.
  • Ihre eigene Benutzer-ID, Projekt-ID oder Job-ID.

Stornierung

DELETE /v1/tasks/{id} ist absichtlich eng gefasst. Es unterstützt derzeit wartende Volcengine Seedance-Videoaufgaben wie seedance-1.5-pro, seedance-2.0 und seedance-2.0-fast. Nicht unterstützte Aufgaben geben 400 unsupported_task_cancel zurück. Aufgaben, die bereits laufen oder terminal sind, geben 409 task_not_cancellable zurück. Erstellen Sie die Stornierungs-UI als “Stornierung anfordern” anstatt als garantierten Stopp-Button.

Fehlersuche

SymptomWahrscheinliche UrsacheWas zu überprüfen ist
async_task_not_foundAufgabe ist unbekannt, abgelaufen, für diesen API-Schlüssel nicht zugänglich oder keine öffentliche asynchrone AufgabeBestätigen Sie den Besitz des API-Schlüssels und die gespeicherte öffentliche task_id
Aufgabe scheint nie zu endenClient fragt die falsche URL ab oder hat vor dem terminalen Status gestopptVerwenden Sie poll_url oder /v1/tasks/{id} und überprüfen Sie den neuesten Status
Endgültige Medien-URL fehltAufgabe ist nicht abgeschlossen oder der upstream-Job wurde ohne verwendbare Ausgabe abgeschlossenFragen Sie weiter ab, bis terminal, und behandeln Sie fehlende Ausgaben als fehlgeschlagen
Benutzer sieht DuplikateDer Wiederholungsweg hat nach Zeitüberschreitung oder Aktualisierung eine neue Aufgabe erstelltDedupizieren Sie nach Ihrer eigenen Job-ID und gespeicherter task_id
AbrechnungsabweichungAbwicklung ist asynchron oder der Client vergleicht Anbieter-IDsVergleichen Sie request_id, task_id und billing_transaction_id

Support-Paket

Wenn Sie den Support kontaktieren, fügen Sie request_id, task_id, billing_transaction_id (wenn vorhanden), Endpunkt, Modell, Zeitstempel und eine bereinigte Anfrageform hinzu. Fügen Sie keine API-Schlüssel, privaten Medien, signierten URLs oder vollständigen Eingabeaufforderungen hinzu, es sei denn, der Support fordert ein redigiertes Beispiel an.

API-Referenz

ThemaReferenz
Aufgabenstatus abrufenGet Task Status
Aufgabe stornierenCancel Task
BildgenerierungImage Generation
VideoerzeugungVideo Generation
MusikgenerierungMusic Generation
3D-Generierung3D Generation
Abrechnung & PreisgestaltungBilling & Pricing