rekka
Start

API reference

Generate animated whiteboard explainer videos programmatically. One video costs one credit, the same balance you top up in the app.

Authentication

Create a key under Settings → API keys and send it as a bearer token. Keys look like rk_live_… and are shown only once.

Authorization: Bearer rk_live_your_key_here

Base URL: https://api.rekkaai.com

Endpoints

POST /v1/videos

Start a video. Costs at least 1 credit, and more for longer videos: about 1 credit per 100 seconds, billed by final length. style and format are required, so a video is never rendered in a look you did not choose. Use prompt to steer emphasis, audience, or tone, or to describe changes when re-rendering a topic. Control length with chapters (an exact count) or length (a rough size); both set how long, and therefore how much, the video costs.
NameTypeRequiredDescription
topicstringRequiredA clear topic or question to explain (3-300 characters).
promptstringOptionalOptional creative direction (max 2000 characters).
chaptersintegerOptionalExact number of chapters to plan (1-60). Each chapter is up to 100 seconds and about 1 credit. Takes precedence over length.
lengthstringOptionalRough length when chapters is not set: short, standard, or in_depth. Defaults to a short, focused video.
stylestringRequiredVisual style: whiteboard, chalkboard, or crayon.
formatstringRequiredAspect ratio: square, landscape (3:2), or portrait (2:3).
curl -X POST https://api.rekkaai.com/v1/videos \
  -H "Authorization: Bearer rk_live_..." \
  -H "Content-Type: application/json" \
  -d '{"topic":"How do rainbows form?","style":"whiteboard","format":"landscape"}'

Success response (201)

{
  "id": "job_abc123",
  "topic": "How do rainbows form?",
  "status": "pending",
  "videoUrl": null,
  "createdAt": 1730000000000
}

Errors for this endpoint

400: Missing topic, style, or format; topic/prompt exceed their length limits; style/format is not a valid option; or the body carries a field the endpoint does not accept. Unknown fields are rejected rather than ignored, so a typo never costs you a credit.

{ "error": "invalid_request", "details": { "fieldErrors": { "format": ["Required"] } } }

401: Missing or invalid API key.

{ "error": "unauthorized" }

402: Not enough credits to start a video.

{ "error": "insufficient_credits", "credits": 0 }

GET /v1/videos/:id

Poll a video's status. When status is done, videoUrl is the finished MP4: a private link you download with the same Authorization: Bearer header (opening it without the header returns 404). Statuses: pending, processing, done, error.
NameTypeRequiredDescription
idstringRequiredThe job id returned by POST /v1/videos.
curl https://api.rekkaai.com/v1/videos/JOB_ID \
  -H "Authorization: Bearer rk_live_..."
# once status is "done", download videoUrl with the same key
curl -L https://api.rekkaai.com/videos/JOB_ID/file \
  -H "Authorization: Bearer rk_live_..." \
  -o video.mp4

Success response (200)

{
  "id": "job_abc123",
  "topic": "How do rainbows form?",
  "status": "done",
  "videoUrl": "https://api.rekkaai.com/videos/job_abc123/file",
  "createdAt": 1730000000000
}

Errors for this endpoint

401: Missing or invalid API key.

{ "error": "unauthorized" }

404: No video with that id belongs to this account.

{ "error": "not_found" }

GET /v1/credits

Your current credit balance.
curl https://api.rekkaai.com/v1/credits -H "Authorization: Bearer rk_live_..."

Success response (200)

{ "credits": 42 }

Errors for this endpoint

401: Missing or invalid API key.

{ "error": "unauthorized" }

Errors

CodeMeaningWhen it happens
200OKSuccessful GET request.
201CreatedVideo job created successfully.
400Bad RequestRequest body failed validation (see details).
401UnauthorizedMissing, malformed, or revoked API key.
402Payment RequiredInsufficient credits to start a video.
404Not FoundThe requested video doesn't exist or isn't yours.

MCP server

rekka also speaks the Model Context Protocol, so agents (Claude, editors, etc.) can make videos directly. It's a streamable-HTTP MCP endpoint authenticated with the same API key.

generate_video

Create an animated hand-drawn explainer video about a topic. Costs at least 1 credit, and more for longer videos: about 1 credit per 100 seconds, billed by final length. Returns a jobId; poll get_video_status until status is 'done', then download the videoUrl it returns.

NameTypeRequiredDescription
topicstringRequiredA clear topic or question to explain.
promptstringOptionalOptional creative direction: emphasis, audience, tone, or changes from a previous take.
chaptersintegerOptionalExact number of chapters to plan (1-60). Each chapter is up to 100 seconds and about 1 credit. Takes precedence over length.
lengthstringOptionalRough length when chapters is not set: short, standard, or in_depth. Defaults to a short, focused video.
stylestringRequiredVisual style: whiteboard, chalkboard, or crayon.
formatstringRequiredAspect ratio: square, landscape (3:2), or portrait (2:3).

get_video_status

Get the status of a video by jobId, or the caller's recent videos if omitted. When status is 'done', the response includes `videoUrl`, the finished MP4: download it with your API key as a Bearer token (it is a private link, not open to the public).

NameTypeRequiredDescription
jobIdstringOptionalOmit to list recent videos instead of one.

get_credits

Get the caller's remaining video credits.

{
  "mcpServers": {
    "rekka": {
      "type": "http",
      "url": "https://api.rekkaai.com/mcp",
      "headers": { "Authorization": "Bearer rk_live_..." }
    }
  }
}

For clients that only speak stdio, bridge with npx mcp-remote https://api.rekkaai.com/mcp --header "Authorization: Bearer rk_live_...".