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.completed and render.failed events 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.