Skip to main content

Base URL

Send JSON with Content-Type: application/json. Responses are JSON too.

Authentication

Every endpoint needs an API key as a bearer token:
GET /me tells you who the key belongs to and what’s left on the plan, which makes it a good first request.

The demo object

Every demo endpoint, assistant tool and webhook returns the same object.
string
The demo’s id.
string
queued, in_progress, input_required, completed, failed or canceled.
string | null
While in_progress: recording, analyzing, narrating, editing or rendering.
object
percent done and eta_seconds, an estimate of the time left.
object | null
The question the agent is waiting on, when status is input_required. See When the agent needs an answer.
object | null
When completed: url to play, download_url for the MP4, duration_seconds, thumbnail_url. Links expire after 2 hours (expires_at).
object | null
When failed: a message saying why.
integer
How long to wait before polling again. 0 once the demo is finished.
string
The demo in the Demosmith app, where it can be edited and shared.
string
Where it was created: api, mcp or web.
object
Your own values from creation, returned as given.

Lists

GET /demos returns the newest first, 30 per page by default. Use page and page_size (up to 100). The response has count, next, previous and results.

Versioning

The API is versioned in the path (/v1). Within v1 we only add things: new endpoints, new optional fields, new event types and new values in lists. Ignore fields and values you don’t know.

OpenAPI

The full specification is at https://platform.demosmith.ai/v1/openapi.json (OpenAPI 3.1). Use it to generate a client or import it into your API tool.