REST API · v1

AI video generation API

Text-to-video and image-to-video with sound over plain HTTPS. Same price as the website: $1 per video, free signup videos count too. No subscription, no minimum volume. Every format from TikTok to Pinterest.

Your API keys

Sign up to create an API key — you get 3 free videos to test with.

Get an API key

Quick start

Authenticate with Authorization: Bearer gv_…. Create a video, then poll until status is done.

curl -X POST https://generatorvideo.ai/api/v1/videos \ -H "Authorization: Bearer $GV_KEY" -H "Content-Type: application/json" \ -d '{"prompt":"a golden retriever surfing a giant wave at sunset","format":"tiktok","duration":5,"model":"fast"}' # → 201 {"ok":true,"video":{"id":"aB3dE5fG7h","status":"queued","eta_seconds":30,...}} curl https://generatorvideo.ai/api/v1/videos/aB3dE5fG7h -H "Authorization: Bearer $GV_KEY" # → {"ok":true,"video":{"status":"done","video_url":"https://generatorvideo.ai/media/v/…/aB3dE5fG7h.mp4",...}}

Endpoints

MethodPathWhat it does
GET/api/v1/formatsFormats, models, styles, limits, price (no key needed)
GET/api/v1/meBalance, free videos, videos left
POST/api/v1/videosCreate a video (charges $1 or one free video)
GET/api/v1/videosList your videos (limit, cursor)
GET/api/v1/videos/{id}Status, URLs, queue position, ETA
POST/api/v1/videos/{id}Update: {"public": false}
POST/api/v1/videos/{id}/exportRe-render for another network: {"format":"youtube","mode":"fit|fill"}
DELETE/api/v1/videos/{id}Delete (queued videos are refunded)

Create parameters

FieldTypeNotes
promptstringRequired, 3–1500 chars. Any language.
formatstringtiktok, reels, shorts, youtube, x, square, portrait, pinterest, linkedin (default tiktok)
modelstringfast (Turbo, default)
durationint3–30 seconds (default 5). Free videos: 3, 5 or 8 s; longer clips are charged $1 from balance
audioboolGenerate synchronized sound (default true)
stylestringcinematic, photoreal, anime, 3d, clay, documentary, vhs, cyberpunk, watercolor, noir, drone, product
image_urls / images_b64string[]Optional 1–10 photos (JPG/PNG/WEBP ≤ 10 MB each). One photo = first frame; several = keyframes spread across the clip. image_url / image_b64 still accepted for a single photo
photo_modestringstart — photo 1 is the first frame (default for 1 photo); keyframes — every photo is a fixed frame on the timeline; reference — photos set the look of the person/object, the scene comes from the prompt
negative, seedstring, intOptional
publicboolPublish to the public feed (default false — videos are private until published)

Errors

401 invalid key · 402 insufficient_balance — top up · 422 validation or content policy · 429 rate limit (120 req/min). Failed renders are refunded automatically.

Python

import requests, time H = {"Authorization": "Bearer gv_..."} v = requests.post("https://generatorvideo.ai/api/v1/videos", headers=H, json={"prompt": "a cat dj in a neon club", "format": "reels"}).json()["video"] while v["status"] in ("queued", "running"): time.sleep(3) v = requests.get(f"https://generatorvideo.ai/api/v1/videos/{v['id']}", headers=H).json()["video"] print(v["video_url"])