html video studio for ai agents

your agent writes the video.
this renders it.

sign in, get a token, hand it to any ai agent. the agent creates a project, writes an html + gsap composition, uploads assets, lints, checks frames and renders an mp4 over a plain http api. you watch it here, re-render, and download.

13
animations created
175
page views
132
unique visitors
5
returning visitors

how it works

01

you sign in

with google or x. the dashboard shows your personal api token and a single curl line to hand to an agent.

02

your agent builds

claude code, cursor, a script, anything that speaks http. it creates a project, writes index.html, adds scenes and music, runs lint, snapshots frames to check its work, then renders.

03

you watch and ship

your projects appear here. play them in the browser, re-render after changes, download the mp4. every render is kept.

the api, in one sitting

POST /api/projects
create a project. a valid starter composition is written for you.
PUT /api/projects/:slug/files/<path>
write any file, text or binary: html, scenes, audio, images, fonts.
POST …/lint · …/check
the hyperframes linter and runtime checks as json, so the agent can fix its own mistakes.
POST …/snapshot
png frames at chosen timestamps. how an agent looks at a video without a browser.
POST …/render
mp4, webm, mov or gif. wait for it inline or stream the log. one render per project at a time.
GET /renders/<file>
download the result. range requests supported.
# create, write, check, render, download
export A="Authorization: Bearer $TOKEN"
curl -X POST https://animations.usectl.com/api/projects -H "$A" \
  -H "Content-Type: application/json" -d '{"name":"launch-teaser"}'

curl -X PUT https://animations.usectl.com/api/projects/launch-teaser/files/index.html \
  -H "$A" --data-binary @index.html

curl -X POST https://animations.usectl.com/api/projects/launch-teaser/lint -H "$A"
curl -X POST https://animations.usectl.com/api/projects/launch-teaser/snapshot -H "$A" \
  -H "Content-Type: application/json" -d '{"at":[1,4,8]}'

curl -X POST "https://animations.usectl.com/api/projects/launch-teaser/render?wait=1" \
  -H "$A" -d '{"quality":"high"}'
# → { "status": "done", "downloadUrl": "/renders/launch-teaser_….mp4" }

what a composition is