Référence API
Référence de l'API publique CyberBara v1
Vue d'ensemble
L'API publique CyberBara est exposée sous /api/v1 et permet de :
- Créer des tâches de génération d'image
- Créer des tâches de génération vidéo
- Importer des images de référence et obtenir des URL réutilisables
- Consulter le statut des tâches et leurs sorties
- Vérifier le solde de crédits
- Vérifier la consommation de crédits
- Estimer les crédits avant de créer une tâche
- Lister les modèles publics
Les détails du fournisseur sont volontairement masqués côté client.
URL de base
Utilisez votre propre domaine déployé.
https://<your-domain>Exemple :
https://cyberbara-preview.iamzerolu.workers.devAuthentification
Passez votre clé API dans l'un de ces en-têtes :
Authorization: Bearer <API_KEY>ou
x-api-key: <API_KEY>Si elle est absente ou invalide, l'API renvoie 401.
Format de réponse
Succès :
{
"data": {}
}Erreur :
{
"error": {
"code": "error_code",
"message": "human readable message",
"details": {}
}
}Modèles
GET /api/v1/models
Paramètre de requête optionnel :
media_type=image|video
Exemple :
curl -X GET 'https://<your-domain>/api/v1/models?media_type=video' \
-H 'Authorization: Bearer <API_KEY>'Exemple de réponse :
{
"data": {
"models": [
{
"model": "sora-2",
"media_type": "video",
"supported_scenes": ["text-to-video", "image-to-video"]
},
{
"model": "kling-2.6",
"media_type": "video",
"supported_scenes": ["text-to-video", "image-to-video"]
}
],
"total": 2
}
}Exemple d'erreur (invalid_media_type) :
{
"error": {
"code": "invalid_media_type",
"message": "media_type must be \"image\" or \"video\"."
}
}Uploads
POST /api/v1/uploads/images
Importez une ou plusieurs images de référence, puis utilisez les URL renvoyées dans options.image_input.
Requête :
Content-Type: multipart/form-data- nom du champ :
files(oufilepour un envoi unique) - nombre maximum de fichiers par requête :
10 - taille maximale par fichier :
10MB - types MIME pris en charge :
image/jpeg,image/jpg,image/png,image/webp,image/gif,image/svg+xml,image/avif,image/heic,image/heif
Exemple :
curl -X POST 'https://<your-domain>/api/v1/uploads/images' \
-H 'Authorization: Bearer <API_KEY>' \
-F 'files=@./reference.png'Exemple de réponse :
{
"data": {
"files": [
{
"url": "https://cdn.example.com/uploads/api/v1/uploads/3e7e48e6/7f2f25f8d6c26f11b2a5bb6b3f7f4a28.png",
"key": "api/v1/uploads/3e7e48e6/7f2f25f8d6c26f11b2a5bb6b3f7f4a28.png",
"filename": "reference.png",
"content_type": "image/png",
"size": 245123,
"deduped": false
}
],
"urls": [
"https://cdn.example.com/uploads/api/v1/uploads/3e7e48e6/7f2f25f8d6c26f11b2a5bb6b3f7f4a28.png"
],
"count": 1
}
}POST /api/v1/uploads/videos
Importez une vidéo de référence, puis utilisez les URL renvoyées dans options.video_input (ou dans options.video_url pour seedance-2-watermark-remover).
Requête :
Content-Type: multipart/form-data- nom du champ :
files(oufilepour un envoi unique) - nombre maximum de fichiers par requête :
1 - taille maximale du fichier :
50MB - types MIME pris en charge :
video/mp4,video/quicktime
Exemple :
curl -X POST 'https://<your-domain>/api/v1/uploads/videos' \
-H 'Authorization: Bearer <API_KEY>' \
-F 'files=@./reference.mp4'Exemple de réponse :
{
"data": {
"files": [
{
"url": "https://cdn.example.com/uploads/api/v1/uploads/3e7e48e6/2d9b18f0b5a0a9b4c65b7f6c3b2f7c32.mp4",
"key": "api/v1/uploads/3e7e48e6/2d9b18f0b5a0a9b4c65b7f6c3b2f7c32.mp4",
"filename": "reference.mp4",
"content_type": "video/mp4",
"size": 1245123,
"deduped": false
}
],
"urls": [
"https://cdn.example.com/uploads/api/v1/uploads/3e7e48e6/2d9b18f0b5a0a9b4c65b7f6c3b2f7c32.mp4"
],
"count": 1
}
}Exemple d'erreur (invalid_file_type) :
{
"error": {
"code": "invalid_file_type",
"message": "Unsupported image type for file \"sample.pdf\".",
"details": {
"index": 0,
"filename": "sample.pdf"
}
}
}Exemple d'utilisation d'une URL importée pour image-to-image :
{
"model": "nano-banana-pro",
"scene": "image-to-image",
"prompt": "Keep composition, make it cinematic at night",
"options": {
"image_input": ["https://cdn.example.com/uploads/api/v1/uploads/...png"]
}
}Crédits
GET /api/v1/credits/balance
Renvoie le solde actuel de crédits.
curl -X GET 'https://<your-domain>/api/v1/credits/balance' \
-H 'Authorization: Bearer <API_KEY>'Exemple de réponse :
{
"data": {
"user_id": "3e7e48e6-f2fa-4f66-abf8-db7a40eaf517",
"remaining_credits": 44,
"updated_at": "2026-03-03T04:08:19.320Z"
}
}Exemple d'erreur (invalid_api_key) :
{
"error": {
"code": "invalid_api_key",
"message": "Invalid API key."
}
}POST /api/v1/credits/quote
Estimez les crédits avant de créer une tâche.
Corps de la requête :
modelrequismedia_typefacultatif si le modèle peut l'inférerscenefacultatif mais recommandéoptionsfacultatif
curl -X POST 'https://<your-domain>/api/v1/credits/quote' \
-H 'Authorization: Bearer <API_KEY>' \
-H 'Content-Type: application/json' \
-d '{
"model": "nano-banana-pro",
"media_type": "image",
"scene": "text-to-image",
"options": { "resolution": "1k" }
}'Exemple de réponse :
{
"data": {
"model": "nano-banana-pro",
"media_type": "image",
"scene": "text-to-image",
"estimated_credits": 8,
"remaining_credits": 44,
"can_afford": true,
"pricing_rule": "nano-banana-pro",
"fallback_pricing": false
}
}Exemple d'erreur (unsupported_model) :
{
"error": {
"code": "unsupported_model",
"message": "Model is not supported."
}
}GET /api/v1/credits/usage
Paramètres de requête :
pagepar défaut1limitpar défaut20, maximum100fromfacultatif, au format ISO datetime ouYYYY-MM-DDtofacultatif, au format ISO datetime ouYYYY-MM-DD- Les valeurs uniquement date sont interprétées en UTC (
from->00:00:00.000Z,to->23:59:59.999Z)
curl -X GET 'https://<your-domain>/api/v1/credits/usage?page=1&limit=20&from=2026-03-01&to=2026-03-03' \
-H 'Authorization: Bearer <API_KEY>'Exemple de réponse :
{
"data": {
"summary": {
"page": 1,
"limit": 20,
"total": 2,
"total_pages": 1,
"total_credits_consumed": 28,
"from": "2026-03-03T00:00:00.000Z",
"to": "2026-03-03T23:59:59.999Z"
},
"items": [
{
"id": "0a961844-e042-4a17-bf23-2a5f2680d375",
"transaction_no": "79739092304928500",
"credits_consumed": 20,
"scene": "text-to-video",
"description": "generate video",
"media_type": "video",
"task_id": "2fa99a50-fb96-407b-a562-82de8265f48e",
"created_at": "2026-03-03T04:31:55.116Z"
}
]
}
}Exemple d'erreur (invalid_date) :
{
"error": {
"code": "invalid_date",
"message": "Invalid date format. Use ISO datetime or YYYY-MM-DD."
}
}Exemple d'erreur (invalid_date_range) :
{
"error": {
"code": "invalid_date_range",
"message": "The \"from\" date must be earlier than the \"to\" date."
}
}Génération de tâches
POST /api/v1/images/generations
Corps de la requête :
modelrequispromptrequis pour la plupart des modèlesscenefacultatif (text-to-image/image-to-image)optionsfacultatif
curl -X POST 'https://<your-domain>/api/v1/images/generations' \
-H 'Authorization: Bearer <API_KEY>' \
-H 'Content-Type: application/json' \
-d '{
"model": "nano-banana-pro",
"prompt": "A cinematic portrait under neon rain",
"scene": "text-to-image",
"options": { "resolution": "1k" }
}'La réponse inclut votre identifiant de tâche interne :
{
"data": {
"task_id": "uuid",
"status": "pending",
"media_type": "image",
"model": "nano-banana-pro",
"scene": "text-to-image",
"credits": {
"cost": 8,
"remaining": 36
},
"created_at": "2026-03-03T04:29:12.612Z"
}
}Exemple d'erreur (insufficient_credits) :
{
"error": {
"code": "insufficient_credits",
"message": "Insufficient credits."
}
}POST /api/v1/videos/generations
Corps de la requête :
modelrequispromptrequis pour la plupart des modèles vidéo (dontseedance-*,kling-2.6,veo-*)promptest facultatif poursora-2-proau niveau de la validation API, mais reste recommandéscenefacultatif (text-to-video/image-to-video/video-to-video)optionsfacultatif
curl -X POST 'https://<your-domain>/api/v1/videos/generations' \
-H 'Authorization: Bearer <API_KEY>' \
-H 'Content-Type: application/json' \
-d '{
"model": "sora-2",
"prompt": "A calm drone shot over snowy mountains at sunrise",
"scene": "text-to-video",
"options": { "duration": "10", "resolution": "standard" }
}'Exemple de réponse :
{
"data": {
"task_id": "2fa99a50-fb96-407b-a562-82de8265f48e",
"status": "pending",
"media_type": "video",
"model": "sora-2",
"scene": "text-to-video",
"credits": {
"cost": 20,
"remaining": 16
},
"created_at": "2026-03-03T04:31:55.116Z"
}
}Exemple d'erreur (insufficient_credits) :
{
"error": {
"code": "insufficient_credits",
"message": "Insufficient credits."
}
}Options spécifiques aux modèles (matrice complète)
Cette section liste toutes les options de requête spécifiques aux modèles actuellement prises en charge par l'API publique.
Champs généraux de requête :
modelrequispromptdépend du modèle (voir chaque modèle ci-dessous)scenefacultatif, mais fortement recommandéoptionsobjet facultatif
Inférence de scène (quand scene est omis) :
- API image :
options.image_inputcontient au moins une URL ->image-to-image- sinon ->
text-to-image
- API vidéo :
options.video_inputcontient au moins une URL ->video-to-video- sinon, si
options.image_inputcontient au moins une URL ->image-to-video - sinon ->
text-to-video
Champs d'option partagés :
| Champ | Type | Signification |
|---|---|---|
options.image_input | string[] | URL d'images d'entrée/référence |
options.video_input | string[] | URL de vidéos d'entrée/référence |
Remarques :
- L'API publique n'accepte que les champs
options.*. N'envoyez pas de clés internes au fournisseur commeimage_url,image_urls,input_imagesouimageUrls(saufoptions.video_urlpourseedance-2-watermark-remover). - Pour tous les modèles ci-dessous, si
promptetoptionssont tous deux vides, l'API renvoieinvalid_request. - Certains modèles valident strictement les options ; d'autres les transmettent à l'endpoint du modèle avec peu ou pas de validation.
- Les options inconnues sont ignorées pour les modèles à validation stricte ; elles sont transmises pour les modèles en pass-through.
Modèles d'image
nano-banana-2
Scènes prises en charge : text-to-image, image-to-image.
Niveau de validation : clés strictes + normalisation légère.
| Champ | Type | Requis | Valeurs / Défaut | Notes |
|---|---|---|---|---|
prompt | string | Oui | non vide | Requis pour les deux scènes |
options.image_input | string[] | Requis pour image-to-image | tableau d'URL | Si fourni et non vide, la scène peut être inférée comme image-to-image |
options.aspect_ratio | string | Non | tout string non vide | Transmis tel quel |
options.resolution | string | Non | normalisé : 1K / 2K / 4K | Les entrées comme 1k, 2k, 4k sont normalisées ; les autres sont transmises |
options.output_format | string | Non | normalisé : jpg / png | jpeg devient jpg ; les autres valeurs sont transmises |
options.google_search | boolean | Non | non défini par défaut | Pris en charge uniquement par nano-banana-2 |
nano-banana-pro
Scènes prises en charge : text-to-image, image-to-image.
Niveau de validation : clés strictes + normalisation légère.
| Champ | Type | Requis | Valeurs / Défaut | Notes |
|---|---|---|---|---|
prompt | string | Oui | non vide | Requis pour les deux scènes |
options.image_input | string[] | Requis pour image-to-image | tableau d'URL | Si fourni et non vide, la scène peut être inférée comme image-to-image |
options.aspect_ratio | string | Non | tout string non vide | Transmis tel quel |
options.resolution | string | Non | normalisé : 1K / 2K / 4K | Les entrées comme 1k, 2k, 4k sont normalisées ; les autres sont transmises |
options.output_format | string | Non | normalisé : jpg / png | jpeg devient jpg ; les autres valeurs sont transmises |
Modèles vidéo
À l'exception de kling-video-o1, seedance-2-preview, seedance-2-fast-preview et seedance-2-watermark-remover, les modèles ci-dessous ne prennent pas en charge video-to-video. options.video_input ne doit donc pas être envoyé.
sora-2
Scènes prises en charge : text-to-video, image-to-video.
Niveau de validation : strict.
| Champ | Type | Requis | Valeurs / Défaut | Notes |
|---|---|---|---|---|
prompt | string | Oui | non vide | Requis pour les deux scènes |
options.image_input | string[] | Requis pour image-to-video | tableau d'URL | Utilisé comme image de référence |
options.aspect_ratio | string | Non | landscape / portrait (défaut landscape) | Validation stricte |
options.duration / options.n_frames | string ou number | Non | 10 / 15 (défaut 10) | Validation stricte |
options.remove_watermark | boolean | Non | défaut true | Validation stricte |
options.upload_method | string | Non | s3 / oss (défaut s3) | Validation stricte |
sora-2-pro
Scènes prises en charge : text-to-video, image-to-video.
Niveau de validation : strict.
| Champ | Type | Requis | Valeurs / Défaut | Notes |
|---|---|---|---|---|
prompt | string | Non pour la validation API | facultatif | Recommandé |
options.image_input | string[] | Requis pour image-to-video | tableau d'URL | Utilisé comme image de référence |
options.aspect_ratio | string | Non | landscape / portrait (défaut landscape) | Validation stricte |
options.duration / options.n_frames | string ou number | Non | 10 / 15 (défaut 10) | Validation stricte |
options.resolution / options.size | string | Non | standard / high (défaut standard) | Validation stricte |
seedance-2-preview
Scènes prises en charge : text-to-video, image-to-video, video-to-video.
Niveau de validation : strict.
| Champ | Type | Requis | Valeurs / Défaut | Notes |
|---|---|---|---|---|
prompt | string | Oui | non vide | Requis pour toutes les scènes |
options.image_input | string[] | Requis pour image-to-video | tableau d'URL (max 9) | Utilisé comme références d'image dans le prompt (@image1, @image2, ...) |
options.video_input | string[] | Requis pour video-to-video | URL unique | Mode d'édition vidéo Seedance 2.0. Exactement une URL. |
options.duration | string ou number | Non (ignoré pour video-to-video) | 5 / 10 / 15 (défaut 5) | En mode édition vidéo, la durée de sortie est égale à celle de la vidéo d'entrée |
options.aspect_ratio | string | Non | 16:9 / 9:16 / 4:3 / 3:4 (défaut 16:9) | Le format est appliqué au mieux ; le ratio des images peut le surcharger |
options.parent_task_id | string | Non | id de tâche | Étend une tâche Seedance 2.0 précédente ; les champs absents peuvent être hérités du parent |
seedance-2-fast-preview
Scènes prises en charge : text-to-video, image-to-video, video-to-video.
Niveau de validation : strict.
Les champs sont identiques à ceux de seedance-2-preview.
seedance-2-watermark-remover
Scènes prises en charge : video-to-video.
Niveau de validation : strict.
| Champ | Type | Requis | Valeurs / Défaut | Notes |
|---|---|---|---|---|
prompt | string | Non | facultatif | Non utilisé par le watermark remover |
options.video_input | string[] | Oui | URL unique | URL de la vidéo à traiter |
options.video_url | string | Oui | URL unique | Alternative à options.video_input |
options.duration | string ou number | Non | détecté automatiquement | Indice facultatif ; si omis, la durée est détectée automatiquement par le processeur |
seedance-1-pro
Scènes prises en charge : text-to-video, image-to-video.
Niveau de validation : strict + pass-through partiel pour certaines chaînes.
| Champ | Type | Requis | Valeurs / Défaut | Notes |
|---|---|---|---|---|
prompt | string | Oui | non vide | Requis pour les deux scènes |
options.image_input | string[] | Requis pour image-to-video | première URL utilisée | image-to-video nécessite au moins une image |
options.resolution | string | Non | défaut 720p | Recommandé : 480p, 720p, 1080p |
options.duration | string ou number | Non | défaut 5 | Recommandé : 5, 10 |
options.aspect_ratio | string | Non | défaut 16:9 | Utilisé pour text-to-video ; ignoré pour image-to-video |
options.camera_fixed | boolean | Non | non défini par défaut | Pris en charge |
options.seed / options.seeds | integer | Non | -1 à 2147483647 | Vérification stricte de la plage |
options.enable_safety_checker | boolean | Non | non défini par défaut | Pris en charge |
seedance-1-lite
Scènes prises en charge : text-to-video, image-to-video.
Niveau de validation : strict + pass-through partiel pour certaines chaînes.
| Champ | Type | Requis | Valeurs / Défaut | Notes |
|---|---|---|---|---|
prompt | string | Oui | non vide | Requis pour les deux scènes |
options.image_input | string[] | Requis pour image-to-video | première URL utilisée | Si une seconde image est fournie, elle est utilisée automatiquement comme end_image_url |
options.resolution | string | Non | défaut 720p | Recommandé : 480p, 720p, 1080p |
options.duration | string ou number | Non | défaut 5 | Recommandé : 5, 10 |
options.aspect_ratio | string | Non | défaut 16:9 | Utilisé pour text-to-video ; ignoré pour image-to-video |
options.camera_fixed | boolean | Non | non défini par défaut | Pris en charge |
options.seed / options.seeds | integer | Non | -1 à 2147483647 | Vérification stricte de la plage |
options.enable_safety_checker | boolean | Non | non défini par défaut | Pris en charge uniquement pour text-to-video |
options.end_image_url | string | Non | URL | Pris en charge pour image-to-video |
seedance-1-pro-fast
Scènes prises en charge : image-to-video.
Niveau de validation : strict + pass-through partiel pour certaines chaînes.
| Champ | Type | Requis | Valeurs / Défaut | Notes |
|---|---|---|---|---|
prompt | string | Oui | non vide | Requis |
options.image_input | string[] | Oui | première URL utilisée | Requis |
options.resolution | string | Non | défaut 720p | Recommandé : 720p, 1080p |
options.duration | string ou number | Non | défaut 5 | Recommandé : 5, 10 |
kling-2.6
Scènes prises en charge : text-to-video, image-to-video.
Niveau de validation : strict.
| Champ | Type | Requis | Valeurs / Défaut | Notes |
|---|---|---|---|---|
prompt | string | Oui | non vide | Requis pour les deux scènes |
options.image_input | string[] | Requis pour image-to-video | tableau d'URL | image-to-video nécessite au moins une image |
options.duration | string ou number | Non | 5 / 10 (défaut 5) | Validation stricte |
options.sound | boolean | Non | défaut false | Validation stricte |
options.aspect_ratio | string | Non | 1:1 / 16:9 / 9:16 (défaut 16:9) | Utilisé pour text-to-video ; ignoré pour image-to-video |
veo-3.1-fast
Scènes prises en charge : text-to-video, image-to-video.
Niveau de validation : strict.
| Champ | Type | Requis | Valeurs / Défaut | Notes |
|---|---|---|---|---|
prompt | string | Oui | non vide | Requis |
options.image_input | string[] | Conditionnel | tableau d'URL | Dépend des règles generationType ci-dessous |
options.generationType | string | Non | TEXT_2_VIDEO / FIRST_AND_LAST_FRAMES_2_VIDEO / REFERENCE_2_VIDEO | Si omis, inféré automatiquement à partir du nombre d'images |
options.aspect_ratio | string | Non | 16:9 / 9:16 / Auto (défaut 16:9) | landscape -> 16:9, portrait -> 9:16 ; REFERENCE_2_VIDEO n'autorise que 16:9 |
options.seed / options.seeds | integer | Non | 10000 à 99999 | Vérification stricte de la plage |
options.enableTranslation | boolean | Non | non défini par défaut | Facultatif |
options.watermark | string | Non | tout string non vide | Facultatif |
Règles :
TEXT_2_VIDEO:image_inputdoit être videFIRST_AND_LAST_FRAMES_2_VIDEO:image_inputdoit contenir 1 à 2 imagesREFERENCE_2_VIDEO:image_inputdoit contenir 1 à 3 images
veo-3.1-quality
Scènes prises en charge : text-to-video, image-to-video.
Niveau de validation : strict.
Les champs sont identiques à veo-3.1-fast, sauf :
options.generationType=REFERENCE_2_VIDEOn'est pas pris en charge
kling-video-o1
Scènes prises en charge : video-to-video.
Niveau de validation : pass-through.
| Champ | Type | Requis | Valeurs / Défaut | Notes |
|---|---|---|---|---|
prompt | string | Oui | non vide | Requis |
options.video_input | string[] | Requis en pratique | première URL utilisée | Si scene est omise, un video_input non vide aide à inférer video-to-video |
options.image_input | string[] | Non | tableau d'URL | Images de référence facultatives |
options.* | any | Non | défini par le fournisseur | Toutes les clés supplémentaires sont transmises |
kling-video-o1 est un modèle pass-through. En plus de options.video_input, des champs options.* définis par le fournisseur peuvent être nécessaires.
Checklist rapide scène -> options
Génération d'image :
text-to-image: généralement seulementpromptimage-to-image: inclureoptions.image_input
Génération vidéo :
text-to-video: inclure toujourspromptimage-to-video: inclureoptions.image_input; pour la plupart des modèles, inclure aussipromptvideo-to-video: inclureoptions.video_input; inclurepromptsi le modèle sélectionné l'exige
Si vous voulez un routage déterministe, passez toujours scene explicitement.
Requête de tâche
GET /api/v1/tasks/{taskId}
Interrogez cet endpoint jusqu'à ce que la tâche atteigne un statut final.
curl -X GET 'https://<your-domain>/api/v1/tasks/<TASK_ID>' \
-H 'Authorization: Bearer <API_KEY>'Exemple de réponse (pending) :
{
"data": {
"task": {
"id": "2fa99a50-fb96-407b-a562-82de8265f48e",
"status": "pending",
"media_type": "video",
"model": "sora-2",
"scene": "text-to-video",
"prompt": "A cinematic wide shot of waves hitting black volcanic beach at sunrise",
"credits": { "cost": 20 },
"output": { "images": [], "videos": [] },
"created_at": "2026-03-03T04:31:55.116Z",
"updated_at": "2026-03-03T04:32:08.511Z"
}
}
}Exemple d'erreur (task_not_found) :
{
"error": {
"code": "task_not_found",
"message": "Task not found."
}
}Valeurs possibles pour le statut :
pendingprocessingsuccessfailedcanceled
Les réponses success incluent les URL des médias dans :
data.task.output.imagesdata.task.output.videos
Exemples de sortie de tâche
Succès d'une tâche image :
{
"data": {
"task": {
"id": "20b061f3-d051-4795-b355-856325d08f7c",
"status": "success",
"media_type": "image",
"model": "nano-banana-pro",
"scene": "text-to-image",
"prompt": "A cinematic portrait under neon rain",
"credits": { "cost": 8 },
"output": {
"images": [
"https://static.nanobananaproprompts.com/cyberbara_uploads/kie/image/21075dc0-7968-46fd-93fe-e366f558325b.png"
],
"videos": []
},
"created_at": "2026-03-03T04:29:12.612Z",
"updated_at": "2026-03-03T04:29:31.475Z"
}
}
}Succès d'une tâche vidéo :
{
"data": {
"task": {
"id": "2fa99a50-fb96-407b-a562-82de8265f48e",
"status": "success",
"media_type": "video",
"model": "sora-2",
"scene": "text-to-video",
"prompt": "A cinematic wide shot of waves hitting black volcanic beach at sunrise",
"credits": { "cost": 20 },
"output": {
"images": [],
"videos": [
"https://static.nanobananaproprompts.com/cyberbara_uploads/kie/video/b55bf86d-e3a3-4b81-ae28-a1cff40a71db.mp4"
]
},
"created_at": "2026-03-03T04:31:55.116Z",
"updated_at": "2026-03-03T04:34:22.836Z"
}
}
}Échec d'une tâche :
{
"data": {
"task": {
"id": "341ab8cd-1296-4a5d-968a-cccf60c9caab",
"status": "failed",
"media_type": "video",
"model": "sora-2",
"scene": "text-to-video",
"prompt": "A calm drone shot over snowy mountains at sunrise",
"credits": { "cost": 20 },
"output": {
"images": [],
"videos": []
},
"created_at": "2026-03-03T04:30:18.041Z",
"updated_at": "2026-03-03T04:31:01.420Z"
}
}
}Flux recommandé
- Appelez
GET /api/v1/models - Si nécessaire, appelez
POST /api/v1/uploads/imagespour obtenir des URL de référence - Appelez
POST /api/v1/credits/quote - Créez une tâche via l'endpoint de génération d'image ou de vidéo
- Interrogez
GET /api/v1/tasks/{taskId}jusqu'au statut final - Vérifiez l'impact sur la facturation avec
GET /api/v1/credits/usage
Codes d'erreur fréquents (liste non exhaustive)
api_key_requiredinvalid_api_keytoo_many_requestsinvalid_jsoninvalid_multipartinvalid_dateinvalid_date_rangefiles_requiredtoo_many_filesinvalid_file_typeinvalid_file_sizefile_too_largeinvalid_modelunsupported_modelinvalid_model_for_media_typeinvalid_scenescene_not_supportedinvalid_media_typeinvalid_requestservice_unavailableinsufficient_creditsupload_failedgeneration_failedinvalid_task_idtask_not_foundtask_not_readyquery_failedinternal_error