Skip to main content
POST
/
api
/
v2
/
render
curl --request POST \
  --url https://kodisc.com/api/v2/render \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "code": "from manim import *\n\nclass HelloKodisc(Scene):\n    def construct(self):\n        self.play(Write(Text(\"Hello, Kodisc\")))\n        self.wait(1)\n",
  "className": "HelloKodisc"
}
'
{
  "jobId": "clx9f0a1b0000abcd1234efgh",
  "status": "queued",
  "endpoint": "render"
}

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.

Authorizations

Authorization
string
header
required

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.

Body

application/json
code
string
required

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.

Minimum string length: 1
Example:

"from manim import *\n\nclass HelloKodisc(Scene):\n def construct(self):\n self.play(Write(Text(\"Hello, Kodisc\")))\n self.wait(1)\n"

className
string
required

Name of the Scene subclass inside code to render. Must be a valid Python identifier.

Pattern: ^[A-Za-z_][A-Za-z0-9_]*$
Example:

"HelloKodisc"

quality
enum<string>
default:medium

Render quality preset. low and medium are fastest; twok (2K) and fourk (4K) trade render time and credits for fidelity.

Available options:
low,
medium,
high,
twok,
fourk
aspectRatio
enum<string>
default:16:9

Output aspect ratio. 16:9 is landscape; 9:16 is portrait (e.g. for shorts/reels).

Available options:
16:9,
9:16
fps
integer

Frames per second. Optional — when omitted, Kodisc picks a sensible default for the chosen quality.

Required range: x >= 1
Example:

60

metadata
any

Arbitrary JSON you want echoed back on the job and webhook payload. Useful for correlating with your own IDs.

Example:
{
"projectId": "proj_42",
"label": "hero-clip"
}
webhookUrl
string<uri> | null

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.

Pattern: ^https://
Example:

"https://example.com/hooks/kodisc"

Response

Job accepted and queued.

jobId
string
required

Opaque ID for the queued job. Use it to poll status or correlate webhook deliveries.

status
enum<string>
required
Available options:
queued
endpoint
enum<string>
required
Available options:
render