Skip to main content
POST
https://vibetool.ai
/
v1
/
videos
/
generations
curl -X POST [https://vibetool.ai/v1/videos/generations](https://vibetool.ai/v1/videos/generations) \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "sora-2-preview",
    "prompt": "A cat playing piano",
    "aspect_ratio": "16:9",
    "duration": 4,
    "image_urls": [],
    "callback_url": "https://your-domain.com/webhooks/video-task-completed"
  }'
{
  "task_id": "vid_202512301327_4d50e7c6",
  "status": "pending",
  "message": null,
  "created_at": 1767072426
}
  • This endpoint runs in asynchronous mode. Use the returned task_id to query task status.
  • Generated video links are valid for 24 hours. Save them promptly.
  • Sora2 has strict content moderation. Tasks may fail due to moderation.
  • Real person images are not supported.

Authorization

Authorization
string
required
All APIs require Bearer Token authentication. Format: Bearer YOUR_API_KEY

Body

model
string
default:"sora-2-preview"
required
Video generation model name.Example: "sora-2-preview"
prompt
string
required
Prompt describing the video to generate.Maximum string length: 5000Example: "A cat playing piano"
aspect_ratio
enum<string>
default:"16:9"
Video aspect ratio.
  • 16:9: landscape
  • 9:16: portrait
Available options: 16:9, 9:16Example: "16:9"
duration
integer
default:"4"
Video duration (seconds).Notes:
  • Only supports 4, 8, 12 seconds
  • Longer duration costs more
Example: 4
image_urls
string<uri>[]
Reference image URLs for image-to-video.Notes:
  • Real person images are not supported
  • Max 1 image per request (maximum array length: 1)
  • Max size: 10MB
  • Supported formats: .jpg, .jpeg, .png, .webp
Example:
["https://example.com/image1.jpg"]
callback_url
string<uri>
HTTPS callback URL for task completion.Example: "https://your-domain.com/webhooks/video-task-completed"

Response Schema

Video generation task created successfully.
task_id
string
required
Task ID. Use it to query task status.
status
enum<string>
required
Task status.Available options: pending, processing, completed, failed
message
string | null
Optional message from the provider.
created_at
integer
required
Task creation timestamp (unix seconds).
curl -X POST [https://vibetool.ai/v1/videos/generations](https://vibetool.ai/v1/videos/generations) \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "sora-2-preview",
    "prompt": "A cat playing piano",
    "aspect_ratio": "16:9",
    "duration": 4,
    "image_urls": [],
    "callback_url": "https://your-domain.com/webhooks/video-task-completed"
  }'
{
  "task_id": "vid_202512301327_4d50e7c6",
  "status": "pending",
  "message": null,
  "created_at": 1767072426
}