VibeVideo Generation Skill
Prerequisites
- Environment variable
VIBEVIDEO_API_KEY must be set with a valid API key
- Get your API key from: Dashboard → Settings → API Keys
API Endpoint
This skill always uses the official VibeVideo API endpoint: https://vibevideo.app
Generate Image
Create an image generation task:
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:
{ "code": 0, "data": { "id": "task_id", "status": "pending", "taskId": "...", "costCredits": 5 } }
Generate Video
Create a video generation task:
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.
Query Task Status
Tasks are asynchronous. Poll until status is success, failed, or canceled:
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).
Calculate Cost
Check credit cost before generating:
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" }
}'
Cancel Task
curl -s -X DELETE https://vibevideo.app/api/ai/tasks/YOUR_TASK_ID \
-H "Authorization: Bearer $VIBEVIDEO_API_KEY"
Workflow
- If the user doesn't specify a model, pick the default for the scene (see tables below)
- Call the generate endpoint
- Poll the query endpoint every 5 seconds until status is terminal (
success/failed/canceled)
- Parse
taskUrls from the response and report the media URL(s) to the user
- If
code is not 0, handle the error (see Error Handling below)
Image Models
| ID |
Label |
Vendor |
Scenes |
Qualities |
| nano-banana-2 |
Nano Banana 2 |
Google |
text-to-image, image-to-image |
1K, 2K, 4K |
| gpt-image-1-5 |
GPT Image 1.5 |
OpenAI |
text-to-image, image-to-image |
Medium, High |
| grok-imagine |
Grok Imagine |
Grok |
text-to-image, image-to-image |
— |
| seedream-5-0 |
Seedream 5.0 |
ByteDance |
text-to-image, image-to-image |
Basic, High |
| qwen-image |
Qwen Image |
Qwen |
text-to-image, image-to-image |
— |
| wan-2-7-image |
Wan 2.7 Image |
Qwen/Alibaba |
text-to-image, image-to-image |
1K, 2K |
| wan-2-7-image-pro |
Wan 2.7 Image Pro |
Qwen/Alibaba |
text-to-image, image-to-image |
1K, 2K, 4K |
Default for text-to-image: nano-banana-2
Video Models
| ID |
Label |
Vendor |
Scenes |
Resolutions |
Durations |
| seedance-2-0 |
Seedance 2.0 |
ByteDance |
text-to-video, image-to-video, frames-to-video, reference-to-video |
720p, 1080p |
5s, 10s, 15s |
| seedance-2-0-fast |
Seedance 2.0 Fast |
ByteDance |
text-to-video, image-to-video, frames-to-video, reference-to-video |
720p, 1080p |
5s, 10s, 15s |
| seedance-1-5-pro |
Seedance 1.5 Pro |
ByteDance |
text-to-video, image-to-video |
480p, 720p, 1080p |
4s, 8s, 12s |
| grok-imagine |
Grok Imagine |
Grok |
text-to-video, image-to-video |
480p, 720p |
6s, 10s, 15s |
| kling-2-6 |
Kling 2.6 |
Kling |
text-to-video, image-to-video |
— |
5s, 10s |
| runway |
Runway |
Runway |
text-to-video, image-to-video |
720p, 1080p |
5s, 10s |
| veo-3-1 |
Veo 3.1 |
Google |
text-to-video, image-to-video, frames-to-video, reference-to-video |
720p, 1080p, 4k |
— |
| veo-3-1-fast |
Veo 3.1 Fast |
Google |
text-to-video, image-to-video, frames-to-video, reference-to-video |
720p, 1080p, 4k |
— |
| seedence-1-0-pro |
Seedence 1.0 Pro |
ByteDance |
text-to-video, image-to-video |
480p, 720p, 1080p |
5s, 10s |
| seedence-1-0-pro-fast |
Seedence 1.0 Pro Fast |
ByteDance |
image-to-video |
720p, 1080p |
5s, 10s |
| seedence-1-0-lite |
Seedence 1.0 Lite |
ByteDance |
text-to-video, image-to-video |
480p, 720p, 1080p |
5s, 10s |
Default for text-to-video: seedance-2-0
Error Handling
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.
- Task stuck in "processing": Polling timeout. The task may still complete — suggest the user wait and query again later.
API Response Envelope
All endpoints return:
{ "code": 0, "message": "ok", "data": { ... } }
code: 0 means success. Non-zero code means error (check message).
1---2name: vibevideo-generate3description: Generate images and videos using the VibeVideo API. Use when the user asks to create AI images or videos, check generation status, list available models, or calculate credit costs.4---56# VibeVideo Generation Skill78## Prerequisites910- Environment variable `VIBEVIDEO_API_KEY` must be set with a valid API key11- Get your API key from: **Dashboard → Settings → API Keys**1213## API Endpoint1415This skill always uses the official VibeVideo API endpoint: `https://vibevideo.app`1617## Generate Image1819Create an image generation task:2021```bash22curl -s -X POST https://vibevideo.app/api/ai/generate \23 -H "Authorization: Bearer $VIBEVIDEO_API_KEY" \24 -H "Content-Type: application/json" \25 -d '{26 "mediaType": "image",27 "scene": "text-to-image",28 "model": "nano-banana-2",29 "prompt": "A cat sitting on a rainbow",30 "options": {31 "aspect_ratio": "1:1",32 "quality": "2K"33 }34 }'35```3637For image-to-image, set `"scene": "image-to-image"` and add `"image_url": "..."` in options.3839Response:40```json41{ "code": 0, "data": { "id": "task_id", "status": "pending", "taskId": "...", "costCredits": 5 } }42```4344## Generate Video4546Create a video generation task:4748```bash49curl -s -X POST https://vibevideo.app/api/ai/generate \50 -H "Authorization: Bearer $VIBEVIDEO_API_KEY" \51 -H "Content-Type: application/json" \52 -d '{53 "mediaType": "video",54 "scene": "text-to-video",55 "model": "seedance-2-0",56 "prompt": "A dog playing in a park",57 "options": {58 "resolution": "720p",59 "duration": "5s",60 "aspect_ratio": "16:9"61 }62 }'63```6465For image-to-video, set `"scene": "image-to-video"` and add `"image_url": "..."` in options.66For frames-to-video, add `"start_image_url": "..."` and `"end_image_url": "..."` in options.6768## Query Task Status6970Tasks are asynchronous. Poll until status is `success`, `failed`, or `canceled`:7172```bash73curl -s -X POST https://vibevideo.app/api/ai/query \74 -H "Authorization: Bearer $VIBEVIDEO_API_KEY" \75 -H "Content-Type: application/json" \76 -d '{ "taskId": "YOUR_TASK_ID" }'77```7879Response includes `status`, `taskInfo`, `taskResult`, and `taskUrls` (JSON string of media URLs).8081## Calculate Cost8283Check credit cost before generating:8485```bash86curl -s -X POST https://vibevideo.app/api/ai/cost \87 -H "Authorization: Bearer $VIBEVIDEO_API_KEY" \88 -H "Content-Type: application/json" \89 -d '{90 "model": "seedance-2-0",91 "mediaType": "video",92 "scene": "text-to-video",93 "options": { "resolution": "720p", "duration": "5s" }94 }'95```9697## Cancel Task9899```bash100curl -s -X DELETE https://vibevideo.app/api/ai/tasks/YOUR_TASK_ID \101 -H "Authorization: Bearer $VIBEVIDEO_API_KEY"102```103104## Workflow1051061. If the user doesn't specify a model, pick the default for the scene (see tables below)1072. Call the generate endpoint1083. Poll the query endpoint every 5 seconds until status is terminal (`success`/`failed`/`canceled`)1094. Parse `taskUrls` from the response and report the media URL(s) to the user1105. If `code` is not 0, handle the error (see Error Handling below)111112## Image Models113114| ID | Label | Vendor | Scenes | Qualities |115|----|-------|--------|--------|-----------|116| nano-banana-2 | Nano Banana 2 | Google | text-to-image, image-to-image | 1K, 2K, 4K |117| gpt-image-1-5 | GPT Image 1.5 | OpenAI | text-to-image, image-to-image | Medium, High |118| grok-imagine | Grok Imagine | Grok | text-to-image, image-to-image | — |119| seedream-5-0 | Seedream 5.0 | ByteDance | text-to-image, image-to-image | Basic, High |120| qwen-image | Qwen Image | Qwen | text-to-image, image-to-image | — |121| wan-2-7-image | Wan 2.7 Image | Qwen/Alibaba | text-to-image, image-to-image | 1K, 2K |122| wan-2-7-image-pro | Wan 2.7 Image Pro | Qwen/Alibaba | text-to-image, image-to-image | 1K, 2K, 4K |123124Default for `text-to-image`: **nano-banana-2**125126## Video Models127128| ID | Label | Vendor | Scenes | Resolutions | Durations |129|----|-------|--------|--------|-------------|-----------|130| seedance-2-0 | Seedance 2.0 | ByteDance | text-to-video, image-to-video, frames-to-video, reference-to-video | 720p, 1080p | 5s, 10s, 15s |131| seedance-2-0-fast | Seedance 2.0 Fast | ByteDance | text-to-video, image-to-video, frames-to-video, reference-to-video | 720p, 1080p | 5s, 10s, 15s |132| seedance-1-5-pro | Seedance 1.5 Pro | ByteDance | text-to-video, image-to-video | 480p, 720p, 1080p | 4s, 8s, 12s |133| grok-imagine | Grok Imagine | Grok | text-to-video, image-to-video | 480p, 720p | 6s, 10s, 15s |134| kling-2-6 | Kling 2.6 | Kling | text-to-video, image-to-video | — | 5s, 10s |135| runway | Runway | Runway | text-to-video, image-to-video | 720p, 1080p | 5s, 10s |136| veo-3-1 | Veo 3.1 | Google | text-to-video, image-to-video, frames-to-video, reference-to-video | 720p, 1080p, 4k | — |137| veo-3-1-fast | Veo 3.1 Fast | Google | text-to-video, image-to-video, frames-to-video, reference-to-video | 720p, 1080p, 4k | — |138| seedence-1-0-pro | Seedence 1.0 Pro | ByteDance | text-to-video, image-to-video | 480p, 720p, 1080p | 5s, 10s |139| seedence-1-0-pro-fast | Seedence 1.0 Pro Fast | ByteDance | image-to-video | 720p, 1080p | 5s, 10s |140| seedence-1-0-lite | Seedence 1.0 Lite | ByteDance | text-to-video, image-to-video | 480p, 720p, 1080p | 5s, 10s |141142Default for `text-to-video`: **seedance-2-0**143144## Error Handling145146- **`code: -1` with "no auth"**: User's API key is missing or invalid. Remind them to set `VIBEVIDEO_API_KEY`.147- **`code: -1002` with "insufficient credits"**: User needs to purchase credits at VibeVideo dashboard.148- **`code: -1` with "invalid"**: Wrong model ID, scene, or mediaType. Check against the model tables above.149- **Task stuck in "processing"**: Polling timeout. The task may still complete — suggest the user wait and query again later.150151## API Response Envelope152153All endpoints return:154```json155{ "code": 0, "message": "ok", "data": { ... } }156```157158`code: 0` means success. Non-zero `code` means error (check `message`).