AI Image & Video Generation
v1.0.3Generate 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...
Like a lobster shell, security has layers — review code before you run it.
License
Runtime requirements
VIBEVIDEO_API_KEYrequired— API key for the VibeVideo API.SKILL.md
VibeVideo Generation Skill
Prerequisites
- Environment variable
VIBEVIDEO_API_KEYmust 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
taskUrlsfrom the response and report the media URL(s) to the user - If
codeis not 0, handle the error (see Error Handling below)
Image Models
| ID | Label | Vendor | Scenes | Qualities |
|---|---|---|---|---|
| nano-banana-2 | Nano Banana 2 | 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 | text-to-video, image-to-video, frames-to-video, reference-to-video | 720p, 1080p, 4k | — | |
| veo-3-1-fast | Veo 3.1 Fast | 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: -1with "no auth": User's API key is missing or invalid. Remind them to setVIBEVIDEO_API_KEY.code: -1002with "insufficient credits": User needs to purchase credits at VibeVideo dashboard.code: -1with "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).
Files
1 totalComments
Loading comments…
