VIBEVIDEO_API_KEY must be set with a valid API keyThis skill always uses the official VibeVideo API endpoint: https://vibevideo.app
Create an image generation task:
bash
curl -s -X POST https://vibevideo.app/api/ai/generate \
-H "Authorization: Bearer $VIBEVIDEO_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"mediaType": "image",
"scene": "text-to-image",
"model": "nano-banana-2",
"prompt": "A cat sitting on a rainbow",
"options": {
"aspect_ratio": "1:1",
"quality": "2K"
}
}'
For image-to-image, set "scene": "image-to-image" and add "image_url": "..." in options.
Response:
json
{ "code": 0, "data": { "id": "task_id", "status": "pending", "taskId": "...", "costCredits": 5 } }
Create a video generation task:
bash
curl -s -X POST https://vibevideo.app/api/ai/generate \
-H "Authorization: Bearer $VIBEVIDEO_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"mediaType": "video",
"scene": "text-to-video",
"model": "seedance-2-0",
"prompt": "A dog playing in a park",
"options": {
"resolution": "720p",
"duration": "5s",
"aspect_ratio": "16:9"
}
}'
For image-to-video, set "scene": "image-to-video" and add "image_url": "..." in options.
For frames-to-video, add "start_image_url": "..." and "end_image_url": "..." in options.
Tasks are asynchronous. Poll until status is success, failed, or canceled:
bash
curl -s -X POST https://vibevideo.app/api/ai/query \
-H "Authorization: Bearer $VIBEVIDEO_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "taskId": "YOUR_TASK_ID" }'
Response includes status, taskInfo, taskResult, and taskUrls (JSON string of media URLs).
Check credit cost before generating:
bash
curl -s -X POST https://vibevideo.app/api/ai/cost \
-H "Authorization: Bearer $VIBEVIDEO_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "seedance-2-0",
"mediaType": "video",
"scene": "text-to-video",
"options": { "resolution": "720p", "duration": "5s" }
}'
bash
curl -s -X DELETE https://vibevideo.app/api/ai/tasks/YOUR_TASK_ID \
-H "Authorization: Bearer $VIBEVIDEO_API_KEY"
success/ failed/ canceled)taskUrls from the response and report the media URL(s) to the usercode is not 0, handle the error (see Error Handling below)IDLabelVendorScenesQualitiesnano-banana-2Nano Banana 2Googletext-to-image, image-to-image1K, 2K, 4Kgpt-image-1-5GPT Image 1.5OpenAItext-to-image, image-to-imageMedium, Highgrok-imagineGrok ImagineGroktext-to-image, image-to-image—seedream-5-0Seedream 5.0ByteDancetext-to-image, image-to-imageBasic, Highqwen-imageQwen ImageQwentext-to-image, image-to-image—wan-2-7-imageWan 2.7 ImageQwen/Alibabatext-to-image, image-to-image1K, 2Kwan-2-7-image-proWan 2.7 Image ProQwen/Alibabatext-to-image, image-to-image1K, 2K, 4K
Default for text-to-image: nano-banana-2
IDLabelVendorScenesResolutionsDurationsseedance-2-0Seedance 2.0ByteDancetext-to-video, image-to-video, frames-to-video, reference-to-video720p, 1080p5s, 10s, 15sseedance-2-0-fastSeedance 2.0 FastByteDancetext-to-video, image-to-video, frames-to-video, reference-to-video720p, 1080p5s, 10s, 15sseedance-1-5-proSeedance 1.5 ProByteDancetext-to-video, image-to-video480p, 720p, 1080p4s, 8s, 12sgrok-imagineGrok ImagineGroktext-to-video, image-to-video480p, 720p6s, 10s, 15skling-2-6Kling 2.6Klingtext-to-video, image-to-video—5s, 10srunwayRunwayRunwaytext-to-video, image-to-video720p, 1080p5s, 10sveo-3-1Veo 3.1Googletext-to-video, image-to-video, frames-to-video, reference-to-video720p, 1080p, 4k—veo-3-1-fastVeo 3.1 FastGoogletext-to-video, image-to-video, frames-to-video, reference-to-video720p, 1080p, 4k—seedence-1-0-proSeedence 1.0 ProByteDancetext-to-video, image-to-video480p, 720p, 1080p5s, 10sseedence-1-0-pro-fastSeedence 1.0 Pro FastByteDanceimage-to-video720p, 1080p5s, 10sseedence-1-0-liteSeedence 1.0 LiteByteDancetext-to-video, image-to-video480p, 720p, 1080p5s, 10s
Default for text-to-video: seedance-2-0
code: -1 with "no auth": User's API key is missing or invalid. Remind them to set VIBEVIDEO_API_KEY.code: -1002 with "insufficient credits": User needs to purchase credits at VibeVideo dashboard.code: -1 with "invalid": Wrong model ID, scene, or mediaType. Check against the model tables above.All endpoints return:
json
{ "code": 0, "message": "ok", "data": { ... } }
code: 0 means success. Non-zero code means error (check message).