API Documentation

Coming at launch

The Ucanvas REST API lets you animate images and render video from your own apps. It ships with launch — this is a preview of the reference. New to Ucanvas? Start with the product guide, or join the waitlist for early API access.

Base URL

All API requests are made to:

https://api.ucanvas.app/v1

Authentication

Authenticate with a Bearer token. Create an API key from your dashboard (available at launch) and include it in the Authorization header. Keep secret keys server-side.

curl https://api.ucanvas.app/v1/renders \
  -H "Authorization: Bearer sk_live_your_api_key"

Animate an image

POST/animate

Turn a still image into a short animated clip.

Request

curl https://api.ucanvas.app/v1/animate \
  -H "Authorization: Bearer sk_live_..." \
  -H "Content-Type: application/json" \
  -d '{
    "image_url": "https://example.com/cat.jpg",
    "effect": "parallax",
    "duration": 5,
    "format": "mp4"
  }'

Response

{
  "id": "anim_1a2b3c",
  "status": "processing",
  "created_at": "2026-07-01T10:00:00Z"
}

Render a video

POST/renders

Compose layers, text, and audio into an exported video.

curl https://api.ucanvas.app/v1/renders \
  -H "Authorization: Bearer sk_live_..." \
  -H "Content-Type: application/json" \
  -d '{
    "template_id": "tmpl_reel",
    "inputs": { "headline": "New drop", "clip_url": "https://..." },
    "format": "mp4",
    "resolution": "1080p"
  }'

Check render status

GET/renders/{id}

Poll a render until it's done, then download it.

{
  "id": "rnd_9x8y7z",
  "status": "completed",
  "output_url": "https://cdn.ucanvas.app/rnd_9x8y7z.mp4",
  "duration": 12.4
}

Errors

The API uses standard HTTP status codes. Errors return a JSON body with a code and message.

StatusMeaning
400Bad request — invalid parameters
401Unauthorized — missing or invalid API key
402Payment required — plan limit reached
429Too many requests — rate limited
500Something went wrong on our end

Rate limits

Limits depend on your plan. When you exceed them you'll get a 429 with a Retry-After header. Free-tier keys are limited to a few requests per minute.

Want early API access?

The API opens to waitlist members first. Questions? See Support.

Join the waitlist