Image and Video Generation

Use VibeVideo directly from Claude Code to generate images and videos with natural language.

Overview

The VibeVideo Claude Code Skill lets you generate AI images and videos directly from Claude Code using natural language prompts. No installation required — only an API key.

Prerequisites

  • A VibeVideo API key — create one at Dashboard → Settings → API Keys
  • Claude Code installed (claude.ai/code)

Setup

  1. Set your API key as an environment variable:
export VIBEVIDEO_API_KEY="your-api-key-here"
  1. Save the skill file to your project's .claude/skills/ directory:
mkdir -p .claude/skills/vibevideo-generate
  1. Create .claude/skills/vibevideo-generate/SKILL.md — copy the content from the SKILL.md source file

Usage

Once configured, just ask Claude Code naturally:

  • "Generate an image of a cat sitting on a rainbow"
  • "Create a 5-second video of ocean waves at sunset"
  • "What image models are available?"

How It Works

The skill calls the VibeVideo REST API via curl:

  1. Create taskPOST /api/ai/generate with your prompt, model, and options
  2. Poll statusPOST /api/ai/query every 5 seconds until complete
  3. Return result — media URLs from taskUrls

Authentication uses the Authorization: Bearer <API_KEY> header. Credits are deducted per generation — same as the web dashboard.

Generate Image

curl -s -X POST ${VIBEVIDEO_BASE_URL:-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.

Generate Video

curl -s -X POST ${VIBEVIDEO_BASE_URL:-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 ${VIBEVIDEO_BASE_URL:-https://vibevideo.app}/api/ai/query \
  -H "Authorization: Bearer $VIBEVIDEO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "taskId": "YOUR_TASK_ID" }'

Calculate Cost

Check credit cost before generating:

curl -s -X POST ${VIBEVIDEO_BASE_URL:-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 ${VIBEVIDEO_BASE_URL:-https://vibevideo.app}/api/ai/tasks/YOUR_TASK_ID \
  -H "Authorization: Bearer $VIBEVIDEO_API_KEY"

Image Models

IDLabelVendorScenesQualities
nano-banana-2Nano Banana 2Googletext-to-image, image-to-image1K, 2K, 4K
gpt-image-1-5GPT Image 1.5OpenAItext-to-image, image-to-imageMedium, High
grok-imagineGrok ImagineGroktext-to-image, image-to-image
seedream-5-0Seedream 5.0ByteDancetext-to-image, image-to-imageBasic, High
qwen-imageQwen ImageQwentext-to-image, image-to-image
wan-2-7-imageWan 2.7 ImageQwen/Alibabatext-to-image, image-to-image1K, 2K
wan-2-7-image-proWan 2.7 Image ProQwen/Alibabatext-to-image, image-to-image1K, 2K, 4K

Default for text-to-image: nano-banana-2

Video Models

IDLabelVendorScenesResolutionsDurations
seedance-2-0Seedance 2.0ByteDancetext-to-video, image-to-video, frames-to-video, reference-to-video720p, 1080p5s, 10s, 15s
seedance-2-0-fastSeedance 2.0 FastByteDancetext-to-video, image-to-video, frames-to-video, reference-to-video720p, 1080p5s, 10s, 15s
seedance-1-5-proSeedance 1.5 ProByteDancetext-to-video, image-to-video480p, 720p, 1080p4s, 8s, 12s
grok-imagineGrok ImagineGroktext-to-video, image-to-video480p, 720p6s, 10s, 15s
kling-2-6Kling 2.6Klingtext-to-video, image-to-video5s, 10s
runwayRunwayRunwaytext-to-video, image-to-video720p, 1080p5s, 10s
veo-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, 10s
seedence-1-0-pro-fastSeedence 1.0 Pro FastByteDanceimage-to-video720p, 1080p5s, 10s
seedence-1-0-liteSeedence 1.0 LiteByteDancetext-to-video, image-to-video480p, 720p, 1080p5s, 10s

Default for text-to-video: seedance-2-0

Error Handling

CodeMessageSolution
-1"no auth"Set VIBEVIDEO_API_KEY environment variable
-1002"insufficient credits"Purchase credits at VibeVideo dashboard
-1"invalid..."Check model ID, scene, or mediaType against the tables above

API Response Envelope

All endpoints return:

{ "code": 0, "message": "ok", "data": { ... } }

code: 0 means success. Non-zero code means error (check message).

On this page