Video API
Eine einheitliche API zur Videogenerierung, kompatibel mit dem Standard OpenRouter Video Generation. Ein Schema deckt Text-zu-Video, Bild-zu-Video, ersten/letzten Frame und referenzgestützte Generierung ab. Senden Sie eine Aufgabe asynchron ab und fragen Sie sie anschließend per Polling ab oder erhalten Sie einen Webhook, sobald sie abgeschlossen ist.
| Funktion | Detail |
|---|---|
| Base URL | https://api.ofox.ai |
| Protokollstil | OpenRouter-kompatibel (asynchron absenden → Polling / Webhook) |
| Generierungsmodus | Implizit abgeleitet: keine Bilder = Text-zu-Video · frame_images = Bild / erster-letzter Frame · input_references = referenzgestützt |
| Ergebniszustellung | Polling per GET (ratenbegrenzt) oder callback_url-Webhook (HMAC-signiert, mit Wiederholungen) |
| Videospeicherung | Ursprüngliche Upstream-URL (temporär) + optionaler CDN-Spiegel (persistente signierte URL) |
Authentifizierung
Jede Anfrage überträgt Ihren ofox API Key (Format sk-xxx…) im HTTP-Header:
Authorization: Bearer $OFOX_API_KEYcallback_url muss HTTPS verwenden. Webhook-Ziele werden gegen SSRF geprüft — private, Loopback- und Cloud-Metadata-Adressen werden abgelehnt. Eine Nicht-HTTPS- oder interne Adresse schlägt beim Erstellen mit 400 invalid_callback_url fehl.
Schnellstart
1. Aufgabe absenden
curl -X POST https://api.ofox.ai/v1/videos \
-H "Authorization: Bearer $OFOX_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "google/veo-3.1",
"prompt": "A golden retriever running on the beach at sunset",
"duration": 5,
"resolution": "1080p",
"aspect_ratio": "16:9",
"generate_audio": true
}'Der Aufruf gibt sofort 202 mit einer Polling-URL zurück:
{
"id": "9bcf3c60-7db2-4e1a-a1b2-c3d4e5f60718",
"status": "pending",
"polling_url": "https://api.ofox.ai/v1/videos/9bcf3c60-7db2-4e1a-a1b2-c3d4e5f60718"
}2. Bis zum Abschluss abfragen
curl https://api.ofox.ai/v1/videos/9bcf3c60-7db2-4e1a-a1b2-c3d4e5f60718 \
-H "Authorization: Bearer $OFOX_API_KEY"Fragen Sie weiter ab, bis status einen terminalen Zustand erreicht — completed, failed, cancelled oder expired. Fragen Sie höchstens einmal pro Sekunde ab, oder übergeben Sie beim Erstellen der Aufgabe eine callback_url, um statt Polling einen Webhook zu erhalten. Siehe Videostatus abrufen und Webhooks.
Endpunkte
| Methode | Endpunkt | Beschreibung |
|---|---|---|
POST | /v1/videos | Videoaufgabe erstellen |
GET | /v1/videos/{id} | Aufgabenstatus und Ergebnis abrufen |
DELETE | /v1/videos/{id} | Aufgabe abbrechen |
Sekundengenaue Abrechnung
Videomodelle werden nach Zeit und nicht nach Tokens abgerechnet. Der passende Eintrag in pricing.video_pricing.tiers legt den USD-Preis pro Sekunde anhand von Auflösung, Eingabetyp und Audiooptionen fest. pricing.output_video_per_second ist lediglich der niedrigste Startpreis des Modells. Die Schätzung lautet Tier-Preis × angeforderte Dauer; nach Abschluss gelten usage.video_seconds und usage.video_cost aus der Antwort als endgültige Abrechnungsdauer und tatsächliche Kosten. Bei Video-zu-Video-Aufgaben können die Eingabevideosekunden mitberechnet werden.