Overview and quickstart

Sketchie turns a prompt or a document into a whiteboard explainer video, and hands you back both the rendered video and its editable scene graph. This is the reference for the HTTP API, the CLI, the TypeScript SDK, and the MCP server.

What you get back

There is one generation endpoint behind four front doors: the HTTP API, the TypeScript SDK, the CLI, and an MCP server your agent can call as a tool. Whichever you use, a finished generation hands back two things: the rendered video, and the scene graph it was drawn from.

The scene graph is the part worth integrating against. It is JSON, every scene in it is addressable, and you can send an edit for a single scene and re-render only that scene. One wrong sentence in scene three costs you scene three, not the whole video.

Read the full API overview

API access is included on every paid plan. Create an API key from Settings in the app once you are on a plan. API generations draw from your plan minutes at the same rate as the app. There is no separate API price.

Authentication

Every request is authenticated with your API key as a Bearer token. Create a key in the app under Settings, then send it on the Authorization header:

Request header
Authorization: Bearer sk_...

The key is shown once, at creation. Keep it secret. The base URL for every endpoint is https://sketchie.ai/api.

Quickstart

1. Create an explainer

Send your topic as input and an optional target length as length (a friendly "M:SS" string like "0:30" or "1:00", in 30-second steps). Omit length for automatic length.

Terminal
curl -X POST https://sketchie.ai/api/v1/explainer \
  -H "Authorization: Bearer sk_..." \
  -H "Content-Type: application/json" \
  -d '{
    "input": "Explain how DNS resolves a domain name",
    "length": "0:30"
  }'

The call returns 202 Accepted immediately with a queued record. Rendering runs in the background and takes a few minutes.

202 Accepted
{
  "id": "10f00eee-d2d6-4a1b-b708-f0391faaa85b",
  "status": "queued",
  "prompt": "Explain how DNS resolves a domain name",
  "lengthSeconds": 30,
  "voice": "sketchie:sulafat",
  "language": "en",
  "aspect": "16:9",
  "videoUrl": null,
  "sceneGraph": null
}

2. Poll for the result

Fetch the explainer by id until its status reaches a terminal state. The lifecycle is queued then generating then rendering then ready (done) or failed.

Terminal
curl https://sketchie.ai/api/v1/explainer/10f00eee-d2d6-4a1b-b708-f0391faaa85b \
  -H "Authorization: Bearer sk_..."

When it is ready, the record carries the video URL and the editable scene graph:

200 OK
{
  "id": "10f00eee-d2d6-4a1b-b708-f0391faaa85b",
  "status": "ready",
  "videoUrl": "https://sketchie.ai/media/....mp4",
  "sceneGraph": { "scenes": [ ... ] }
}

Friendly and classic field names. input and length are the friendly request fields. The older prompt (string) and lengthSeconds (a number, a positive multiple of 30) are still accepted as aliases, so existing integrations keep working. When both are sent, the friendly field wins.

Where to go next

  • API reference . Every endpoint, with request and response shapes.
  • Voices . The default narrator, the six-voice catalog, and playable previews.
  • Languages . The 79 supported narration languages.
  • CLI and SDK . The sketchie command line and the @sketchie/sdk TypeScript client.
  • MCP setup . Use Sketchie as tools in Claude Desktop, Claude Code, and the Claude app.