Introduction
Vivacity is a video generation engine for mathematical and scientific concepts. It accepts a text prompt and returns a Manim-rendered animation with phoneme-level synchronized audio. The process takes under 90 seconds end-to-end.
What it is
Vivacity is not a presentation tool. It generates precise, programmatic animations - the kind you would otherwise spend 4 hours writing in Python. The output is a video file, not a slide deck.
Who it's for
- Researchers who need to visualize a proof or derivation
- Educators preparing concept explanations for undergraduate coursework
- Platforms integrating AI-generated educational content via API
Quick Start
The easiest way to integrate Vivacity is using our official Python SDK. You'll need an API key from your dashboard.
pip install vivacity-sdk
Initialize the client and send a prompt:
import vivacity
client = vivacity.Client(api_key="viv_live_xxxxxxxx")
# This blocks until rendering is complete (usually ~90s)
video = client.generate(
prompt="Show the cross product of two 3D vectors",
resolution="1080p",
voice="academic_male"
)
print(f"Video ready at: {video.url}")
Pipeline Architecture
Four stages run sequentially per request:
- Prompt interpretation: An LLM extracts mathematical intent and maps it to a scene graph.
- Code generation: Code2Video translates the scene graph to executable Python/Manim code. A critic model reviews it.
- Rendering: Manim renders the scene frame-by-frame on our GPU cluster.
- Audio sync: WhisperX aligns the generated voiceover to animation keyframes at the phoneme level.
REST API Reference
If you prefer to hit the HTTP endpoints directly, you can interact with the REST API. All endpoints are rooted at https://api.vivacity.dev/v1.
Authentication
Authenticate by passing your secret key in the Authorization header using the Bearer scheme.
Authorization: Bearer viv_live_xxxxxxxx
POST /generate
Kicks off a generation job. Since rendering is asynchronous, this returns a job ID that you can poll or receive via webhook.
curl -X POST https://api.vivacity.dev/v1/generate \
-H "Authorization: Bearer viv_live_xxxx" \
-H "Content-Type: application/json" \
-d '{
"prompt": "Explain the chain rule",
"resolution": "1080p",
"webhook_url": "https://api.yoursite.com/vivacity-hook"
}'
Response:
{
"id": "job_01HVK...",
"status": "queued",
"created_at": "2026-07-09T12:00:00Z"
}