| The pattern | POST create task → poll status → fetch video URL → optional stitch/voiceover |
| Why not synchronous | Renders take 30s–5min; long-held HTTP connections fail. Task IDs are the norm |
| Auth | Bearer token on every call; task IDs are scoped to your workspace |
| Cost control | Track seconds per task, set per-workspace budgets, prefer subscriptions over top-ups |
| Multi-shot | Create one task per shot in parallel, then stitch — the same storyboard model as the UI |
| On Plugsky | Video API lives under /api/studio/video (task), /api/studio/video/{id} (status), /api/studio/stitch (assembly) |
The submit-and-poll pattern
Two rules prevent 90% of production incidents with video APIs: never block a request thread on a render (poll from a worker/queue, not from the user's HTTP request), and treat task IDs as the source of truth (persist them immediately — a lost task ID is a lost render).
Python quickstart (task + poll)
import time, requests
BASE = "https://plugsky.com/api/studio"
H = {"Authorization": f"Bearer {API_KEY}"}
# 1. Submit a video task
task = requests.post(f"{BASE}/video", headers=H, json={
"prompt": "A ceramic coffee cup on a wooden counter, steam rising, slow push-in, warm morning light, clean commercial film",
"duration": 5, # seconds
"ratio": "9:16", # native vertical
# "image_url": first_frame_url, # image-to-video: your product photo
}).json()
# 2. Poll until done (render takes 30s-5min)
while True:
s = requests.get(f"{BASE}/video/{task['id']}", headers=H).json()
if s["status"] in ("succeeded", "failed"):
break
time.sleep(6)
# 3. Fetch the asset
if s["status"] == "succeeded":
video_url = s["archived_url"] # signed, cacheable
print("done:", video_url)Endpoint shapes reflect the Plugsky Studio API at publication (October 2026); check the docs for the current reference. The pattern — submit, poll, fetch — is identical across video providers.
Multi-shot automation (the storyboard as code)
# One task per shot, in parallel — then stitch.
shots = [
{"prompt": "Product hero: ceramic mug, slow rotation, studio light", "duration": 5, "image_url": product_photo},
{"prompt": "Steam rising, macro, warm light", "duration": 5, "image_url": product_photo},
{"prompt": "Person sipping, medium shot, morning café", "duration": 5, "image_url": person_photo},
]
ids = [requests.post(f"{BASE}/video", headers=H, json=s).json()["id"] for s in shots]
# poll all ids, then:
final = requests.post(f"{BASE}/stitch", headers=H, json={"video_ids": ids}).json()
print(final["url"])This is the automation equivalent of the UI storyboard: shots as structured data, generated concurrently, assembled by ID. Because each shot carries its own image_url, brand and product accuracy survive automation — the same first-frame mechanism described in the image-to-video guide.
Error handling & retries
- Retry on 429/5xx with exponential backoff (start 2s, cap 60s). Upstream video capacity fluctuates; backoff is normal, not exceptional.
- Failed tasks are not billed on per-second platforms — but log failure reasons to spot prompt patterns that consistently fail.
- Idempotency: keep your own task record (id, prompt hash, user) so a retry never double-charges or double-posts.
- Webhooks vs polling: polling every 5–10s is fine at moderate volume; at high volume, prefer webhooks if offered and poll only as fallback.
Cost controls for automation
- Budget per workspace: cap seconds/day per tenant, exactly as the platform caps its own lanes.
- Preview cheap, finish premium: 480p for drafts, 720p for finals — automation makes it easy to re-render only winners.
- Prefer subscription seconds over top-up credits; compute your effective $/second monthly.
- Log seconds per task and alert on anomalies (a prompt bug can multiply renders overnight).
See AI video pricing compared for the full per-second math across providers.
Build video into your product
Plugsky AI Video Studio: task API, image-to-video, stitch — priced per second from $0.055, with a free tier for development.
Open AI Video Studio → See pricingFrequently asked questions
Is there an API for AI video generation?
Yes — most serious platforms offer task-based APIs: Plugsky Studio (/api/studio/video), Runway's developer platform, and Pika's dev API. The submit-and-poll pattern is universal because renders take 30s–5min.
How much does the video API cost?
Same per-second pricing as the UI: $0.055–0.075 per second of generated video on Plugsky packages. Failed renders are not billed; budget controls cap spend per workspace.
Can I generate multiple shots and stitch them via API?
Yes. Submit one task per shot (in parallel), poll them, then call the stitch endpoint with the video IDs — the automation equivalent of a storyboard.
How long do renders take?
Typically 30 seconds to 5 minutes per 5–10s shot depending on resolution and queue. Poll every 5–10 seconds, or use webhooks where available.
How do I keep products consistent in automated video?
Pass your product photo as image_url for every product shot — the first-frame mechanism keeps the real product accurate, exactly as in the UI workflow.
Do video APIs support 9:16 output?
Yes — pass ratio 9:16 for TikTok/Reels/Shorts natively. Generate vertical rather than cropping.
Plugsky (2026). “AI Video Generation API: Automate Video at Scale (2026)”. Plugsky. Available at: https://plugsky.com/blog/ai-video-api-guide-2026 (last updated 2026-10-16).