Videostatus abrufen
GET https://api.ofox.ai/v1/videos/{id}Fragen Sie Status und Ergebnis einer Aufgabe ab. Nachdem Sie eine Aufgabe erstellt haben, fragen Sie diesen Endpunkt ab, bis status einen terminalen Zustand erreicht — completed, failed, cancelled oder expired.
curl https://api.ofox.ai/v1/videos/9bcf3c60-7db2-4e1a-a1b2-c3d4e5f60718 \
-H "Authorization: Bearer $OFOX_API_KEY"Ratenbegrenzung
Dieser Endpunkt ist pro API Key ratenbegrenzt (standardmäßig 5 req/s mit einem Burst von 20). Anfragen über dem Limit geben 429 rate_limited mit einem Retry-After: 1-Header zurück. Erstellen (POST) und Abbrechen (DELETE) unterliegen diesem Limit nicht.
Fragen Sie höchstens einmal pro Sekunde ab, oder geben Sie beim Erstellen der Aufgabe eine callback_url an, um statt Polling einen Webhook zu erhalten.
Antwort
Abgeschlossen
{
"id": "9bcf3c60-7db2-4e1a-a1b2-c3d4e5f60718",
"status": "completed",
"model": "google/veo-3.1",
"prompt": "A golden retriever running on the beach at sunset",
"unsigned_urls": ["https://upstream.example/out.mp4"],
"mirror_urls": ["https://cdn.ofox.ai/videos/vgen_xxx.mp4?sig=..."],
"usage": {
"video_seconds": 5,
"video_cost": "0.4000000000"
},
"created_at": 1776211362,
"updated_at": 1776211400
}Ein Timeout wird als status: "failed" gemeldet, wobei error.code auf expired gesetzt ist. Die vollständige Liste der Fehlercodes finden Sie unter Fehlercodes.
Das Video-Objekt
| Feld | Typ | Beschreibung |
|---|---|---|
id | string | Eindeutige Aufgabenkennung (UUID) |
status | enum | Siehe State machine |
model | string | Modell-Slug |
prompt | string | Ursprünglicher Prompt |
unsigned_urls | string[] | Vorhanden bei completed. Ursprüngliche Upstream-Video-URL (temporär, kann in 24h ablaufen) |
mirror_urls | string[] | Vorhanden bei completed, wenn der Anbieter des Modells CDN-Spiegelung aktiviert hat. Persistente signierte URL — siehe Video URLs |
error | object | Vorhanden bei failed: {code, message} |
usage | object | Vorhanden bei completed: {video_seconds, video_cost}. video_seconds sind die abgerechneten Sekunden (einschließlich v2v-Eingabesekunden); video_cost ist die tatsächliche Belastung zum Plattform-Tier-Preis als Festkomma-String mit 10 Dezimalstellen (vermeidet Präzisionsverlust) |
created_at / updated_at | integer | Unix-Sekunden |
State machine
Sieben Zustände, basierend auf der OpenRouter-Benennung und erweitert um cancelled / expired.
| Status | Terminal | Beschreibung |
|---|---|---|
pending | — | Angenommen, noch nicht upstream eingereicht |
queued | — | Upstream eingereicht, wartet in der Queue |
in_progress | — | Wird upstream generiert |
completed | ✓ | Erfolg, Video-URLs verfügbar |
failed | ✓ | Fehlgeschlagen (einschließlich Timeout, error.code=expired) |
cancelled | ✓ | Abgebrochen |
expired | ✓ | Abgelaufen |
Übergänge: pending → queued → in_progress → completed ist der Erfolgspfad. Jeder nicht-terminale Zustand kann zu failed, cancelled oder expired wechseln.
Video URLs
Eine erfolgreiche Aufgabe kann zwei URL-Sätze zurückgeben, je nachdem, ob der Anbieter des Modells CDN-Spiegelung aktiviert hat.
| Feld | Quelle | Eigenschaften |
|---|---|---|
unsigned_urls | Ursprüngliche Adresse des Upstream-Anbieters | Temporär — immer vorhanden · kann in 24h ablaufen · unsigniert |
mirror_urls | ofox CDN-Spiegel | Persistent — nur für CDN-aktivierte Anbieter · bei jeder Anfrage signiert · hat eine TTL |
Bevorzugen Sie mirror_urls (persistent und stabil). Wenn ein Modell nur unsigned_urls zurückgibt, laden Sie die Datei zeitnah herunter oder hosten Sie sie neu, bevor die temporäre Upstream-Adresse abläuft.