Video API
Une API unifiée de génération vidéo compatible avec le standard OpenRouter Video Generation. Un seul schéma couvre le texte-vers-vidéo, l’image-vers-vidéo, la première/dernière image et la génération guidée par référence. Soumettez une tâche de façon asynchrone, puis interrogez son statut ou recevez un webhook lorsqu’elle est terminée.
| Fonctionnalité | Détail |
|---|---|
| Base URL | https://api.ofox.ai |
| Style de protocole | Compatible OpenRouter (soumission async → polling / webhook) |
| Mode de génération | Déduit implicitement : aucune image = texte-vers-vidéo · frame_images = image / première-dernière image · input_references = guidé par référence |
| Livraison du résultat | Poll GET (protégé par limite de débit) ou webhook callback_url (signé HMAC, relancé) |
| Stockage vidéo | URL originale en amont (temporaire) + miroir CDN optionnel (URL signée persistante) |
Authentification
Chaque requête transporte votre clé API ofox (format sk-xxx…) dans le Header HTTP :
Authorization: Bearer $OFOX_API_KEYcallback_url doit être en HTTPS. Les cibles de webhook sont validées contre les SSRF : les adresses privées, loopback et de métadonnées cloud sont rejetées. Une adresse non HTTPS ou interne échoue à la création avec 400 invalid_callback_url.
Démarrage rapide
1. Soumettre une tâche
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
}'L’appel renvoie immédiatement 202 avec une URL de polling :
{
"id": "9bcf3c60-7db2-4e1a-a1b2-c3d4e5f60718",
"status": "pending",
"polling_url": "https://api.ofox.ai/v1/videos/9bcf3c60-7db2-4e1a-a1b2-c3d4e5f60718"
}2. Interroger jusqu’à la fin
curl https://api.ofox.ai/v1/videos/9bcf3c60-7db2-4e1a-a1b2-c3d4e5f60718 \
-H "Authorization: Bearer $OFOX_API_KEY"Continuez les requêtes jusqu’à ce que status atteigne un état terminal — completed, failed, cancelled ou expired. N’interrogez pas plus d’une fois par seconde, ou passez un callback_url à la création de la tâche pour recevoir un webhook au lieu du polling. Consultez Obtenir le statut vidéo et Webhooks.
Endpoints
| Méthode | Endpoint | Description |
|---|---|---|
POST | /v1/videos | Créer une tâche vidéo |
GET | /v1/videos/{id} | Obtenir le statut et le résultat de la tâche |
DELETE | /v1/videos/{id} | Annuler une tâche |
Tarification à la seconde
Les modèles vidéo sont facturés au temps, pas au nombre de tokens. L’entrée correspondante de pricing.video_pricing.tiers fixe le tarif en USD par seconde selon la résolution, le type d’entrée et les options audio. pricing.output_video_per_second n’est que le prix de départ le plus bas du modèle. L’estimation est tarif du niveau × durée demandée ; une fois la tâche terminée, utilisez usage.video_seconds et usage.video_cost comme durée facturée et coût réel. Pour les tâches vidéo-vers-vidéo, les secondes facturées peuvent inclure la durée de la vidéo d’entrée.