Overview
The VideoAI REST API lets you programmatically create video formats, trigger render jobs, manage brand kits, author user blocks, and receive render-completion events via webhooks.
Base URLs
| Environment | Base URL |
|---|---|
| Production | https://your-domain.com/api/v1 |
| Development | http://localhost:3000/api/v1 |
All endpoints are under /api/v1/. The full OpenAPI spec is always available at /api/v1/openapi.json.
What this is for
Design a video format once. Mark the fields that should change per render. Call the API whenever you have new data — cron at 6am for a daily recap, webhook when a game ends, user click for a one-off, batch loop for a catalog. Each call returns a fresh rendered MP4.
The loop: build a format in the timeline editor — drop any block (built-in or custom user block), edit its fields, and the platform auto-creates named API parameters for each one. Call GET /v1/formats/:slug/schema to see exactly what variables the format accepts, then POST /v1/formats/:slug/renders with { variables: {...} } whenever you have data to render. The platform resolves named variables internally — no JSON Pointers, no cell UUIDs. Note: transition ops (cuts, fades) cannot be parameterized — they have no content surface.
Capabilities
- Formats — define reusable video templates (op-lists, block timelines) and render them on demand via named API variables.
- User blocks — author reusable custom canvas blocks with AI-assisted layout editing; drop them on a format timeline and their fields become named API parameters.
- Renders — trigger a render job from a format, poll for completion, and fetch a presigned download URL.
- Brand kits — store a brand's logo, colors, and music track; apply them across all formats.
- Music tracks — upload and manage audio assets associated with a brand kit.
- Webhooks — receive
render.completedandrender.failedevents via HTTP POST to your endpoint.
Authentication
All API requests require a Bearer token (API key). See Authentication for details.
Authorization: Bearer vam_live_<key>
Response shape
Successful responses return JSON with the resource object at the top level. Errors always use the shape:
{
"error": {
"code": "validation_failed",
"message": "Human-readable description",
"details": { ... }
}
}
See Errors for the full catalog of error codes.
Interactive reference
The API Reference page renders every registered endpoint with request/response schemas and a live Try-it panel.