Poko API

Poko API

Make videos with the Poko app, and read and change a workspace's brand kit, settings, voices and usage.

Every route here is also a tool in the Poko MCP server: AI apps such as Claude, ChatGPT and Cursor can add https://mcp.poko.video/mcp, sign in, and use them all (steps in Poko Motion → Settings → API → MCP).

How videos are made

Videos are made by the Poko app on the person's computer, with the app's own AI, in the workspace open in the app. The API keeps each video and sends it to the app through the person's own Poko address. While the app is closed, new videos wait in a queue and start when it opens; GET …/app-status says whether it is online.

Before your first video:

  1. Get your Poko address: in the Poko app, open Settings → API → Local desktop, type a short name under Public URL and click Save. Until then, video calls answer 409 with these steps.
  2. Keep the Poko app open and signed in.

Authentication

Send an API key as a Bearer token on every request:

Authorization: Bearer poko_live_…

Make a key in Poko Motion → Settings → API → Local desktop → API keys. It works in the workspace it was made in. The secret is shown once; revoke a key there if it leaks. Apps that sign in to Poko over MCP get a key that works in every workspace the person belongs to.

Workspaces

Most paths take {workspaceId}; the usage routes take workspace_id in the query. GET /api/me returns the key's default workspace, and GET /api/workspace/mine lists the workspaces the key can use, with the one open in the app marked openInApp. Videos are only made in the workspace open in the app.

Making a video

  1. Optional: pick a template with GET /motion-templates and pass its id as templateId.
  2. POST /api/workspaces/{workspaceId}/videos queues the video and returns its requestId: the {videoId} for the calls below.
  3. Poll GET /api/workspaces/{workspaceId}/videos/{videoId} every few seconds until status is completed or failed. A video takes a few minutes.
  4. POST …/videos/{videoId}/exports renders it; poll GET …/exports/{exportId} until file.downloadUrl is there.

For a file on your computer, call POST …/uploads, PUT the file to uploadUrl with uploadHeaders, and pass fileUrl as sourceUrl.

To retry a request that starts work (create, continue, export) without starting it twice, send the same Idempotency-Key header.

Responses and errors

Responses are JSON. A success is { "success": true, "data": … }; the examples show data for each route. A failure is { "success": false, "msg": "…" }, where msg says what went wrong:

StatusMeaning
400The input is not valid.
401The API key is missing, revoked or wrong.
403The key can't use this route or this workspace, the person isn't allowed (changing settings is for the workspace owner), or there are no credits left.
404Not found in this workspace. Owner-only brand kit and voice changes also answer 404 to members.
409The Poko app has no Poko address yet, or the video isn't in a state for this call.
429Too many requests for your plan, or too many videos waiting. Try again after Retry-After seconds (also retryAfter in the body).
502The Poko app or a generation service could not be reached.
503Rate limiting is briefly unavailable. Try again shortly.

Older automation API

Before this API, n8n and Make called the Poko app directly at https://<your-slug>.isthebest.poko.video/automations/v1. That still works for existing setups (older automation API); use this API for anything new.