Get started
manimotion is an HTTP API that turns a STEM prompt into a narrated lecture video. You send a topic. We plan beats, generate voice, animate with Manim or Remotion, sync audio to the cut, and return an MP4 URL.
Quickstart
Key → request → poll → MP4 in under 5 minutes.
API reference
Every field, status value, and error code.
Storage
Ship finished videos to your R2 / S3 bucket.
Engines
When to force Manim vs Remotion vs auto.
Think of it as “text → lecture video as a service.” Built for apps, tutors, and tools that need explainers on demand — not for editing timelines by hand.
x-api-key headerUnder the hood, every request goes roughly like this:
video_url when status is completed| Method | Path | Purpose |
|---|---|---|
| POST | /video/request | Create a lecture job |
| GET | /video/status/{job_id} | Poll status + video URL |
Switch language with the tabs. Every example also shows the response shape.
curl -sS -X POST "$MANIMOTION_API/video/request" \
-H "Content-Type: application/json" \
-H "x-api-key: $MANIMOTION_KEY" \
-d '{
"prompt": "Explain Bayes theorem with a medical testing example",
"engine": "auto",
"storage": {
"inline": {
"provider": "r2",
"bucket": "my-lectures",
"access_key_id": "'"$R2_ACCESS_KEY_ID"'",
"secret_access_key": "'"$R2_SECRET_ACCESS_KEY"'",
"account_id": "'"$R2_ACCOUNT_ID"'",
"public_url": "'"$R2_PUBLIC_BASE_URL"'"
}
}
}'{
"job_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"status": "queued",
"cached": false,
"video_url": null,
"engine": null
}New to the API? Do the Quickstart. Building for real? Read the API reference. Hacking on the repo? See Contributing.