V. docs v0.1 ยท vivacity.dev

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

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:

  1. Prompt interpretation: An LLM extracts mathematical intent and maps it to a scene graph.
  2. Code generation: Code2Video translates the scene graph to executable Python/Manim code. A critic model reviews it.
  3. Rendering: Manim renders the scene frame-by-frame on our GPU cluster.
  4. 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"
}