Sections

Animations

Agent-made animations (members). More media routes that only the website uses are under "Website routes".

GET/animations/{animation_id}

Status and result of an animation

API key or sign-inMCP: get_animation

Re-check one still "queued" or "rendering", or get its project-page link again. Same shape as creating one (with the storyboard once it has rendered).

Parameters
NameInTypeDescription
animation_id *pathstring
Response: AnimationResponse
FieldTypeDescription
animation_id *string
duration_secondsnumber | null
errorstring | nullThe render output when it failed
file_pathstring | nullWhere the video is in the project's files
layout_reportstring | null
message *string
paper_idinteger | null
project_idinteger | null
status *stringqueued, rendering, succeeded or failed
storyboard_png_base64string | nullThe storyboard PNG (base64), once rendered
titlestring | null
urlstring | nullThe project page that plays the video (once succeeded)
curl
curl 'https://api.papervantage.com/animations/1' \
  -H "Authorization: Bearer $PV_API_KEY"
pv
pv animations get <animation_id>

POST/projects/{project_id}/animations

Render a short explanatory animation (an MP4) from ManimGX scene code

API key or sign-inMCP: create_animationcostly

It is saved into the project's Files (under animations/), and the result links to the project page that plays it, plus a storyboard image to check the work against. Keep it short: aim for 30 s or less (60 s is the hard limit). Rendering takes roughly 30-90 s; the request waits up to wait_seconds, after which re-check with GET /animations/{animation_id}. Members only; the project must have room for the video (up to 50 MB). Limits: 2 renders in flight and 30 per 24 hours per member (3 at once across everyone), scene_code up to 64 KB, output up to 60 s at 1920x1080, 30 fps. ManimGX reference: https://manimgx.academa.ai/llms.txt

Parameters
NameInTypeDescription
project_id *pathinteger
Request body (JSON)
FieldTypeDescription
paper_idinteger | nullOptional PaperVantage paper the animation explains
scene_code *stringA complete Python file using ManimGX (must `import manimgx`)
scene_namestring | nullThe Scene class to render; needed only if scene_code defines several
title *stringShort human-readable title, e.g. "Scaled dot-product attention"
wait_secondsintegerHow long to wait for the render (0-50, default 20). Through api.<domain> keep it at 25 or less: API Gateway ends a request at 30 s. Poll GET /animations/{animation_id} after that.
Response: AnimationResponse
FieldTypeDescription
animation_id *string
duration_secondsnumber | null
errorstring | nullThe render output when it failed
file_pathstring | nullWhere the video is in the project's files
layout_reportstring | null
message *string
paper_idinteger | null
project_idinteger | null
status *stringqueued, rendering, succeeded or failed
storyboard_png_base64string | nullThe storyboard PNG (base64), once rendered
titlestring | null
urlstring | nullThe project page that plays the video (once succeeded)
curl
curl -X POST 'https://api.papervantage.com/projects/1/animations' \
  -H "Authorization: Bearer $PV_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"scene_code":"<scene_code>","title":"<title>"}'
pv
pv animations create <project_id> --scene-code <scene_code> --title <title>

Next: Papers (API key)