Submits a Manim scene for rendering and returns immediately with a jobId. The job runs asynchronously on Kodisc’s render fleet.
A successful enqueue reserves a minimum number of credits up-front; the final cost is settled (and any unused credits refunded) when the render completes. If your balance is below the minimum reserve, the request fails with 402.
Track progress by polling GET /api/v2/render/{jobId} or by configuring a webhook (see Webhooks).
Documentation Index
Fetch the complete documentation index at: https://docs.kodisc.com/llms.txt
Use this file to discover all available pages before exploring further.
Send your API key in the Authorization header as Bearer kdsc_live_<...>. Generate keys from the developer dashboard. Keys are returned in plaintext only once at creation time — store them like a password.
Manim Python source containing your Scene subclass. Imports, helpers, and the scene class can all live in this string. Maximum payload size for the whole request body is roughly 200 KB.
1"from manim import *\n\nclass HelloKodisc(Scene):\n def construct(self):\n self.play(Write(Text(\"Hello, Kodisc\")))\n self.wait(1)\n"
Name of the Scene subclass inside code to render. Must be a valid Python identifier.
^[A-Za-z_][A-Za-z0-9_]*$"HelloKodisc"
Render quality preset. low and medium are fastest; twok (2K) and fourk (4K) trade render time and credits for fidelity.
low, medium, high, twok, fourk Output aspect ratio. 16:9 is landscape; 9:16 is portrait (e.g. for shorts/reels).
16:9, 9:16 Frames per second. Optional — when omitted, Kodisc picks a sensible default for the chosen quality.
x >= 160
Arbitrary JSON you want echoed back on the job and webhook payload. Useful for correlating with your own IDs.
{
"projectId": "proj_42",
"label": "hero-clip"
}HTTPS URL to receive a webhook when this specific job reaches a terminal state. Overrides the default webhook URL configured on the API key. Pass null to send no webhook for this job.
^https://"https://example.com/hooks/kodisc"