API reference
All endpoints live under https://sparka.io. Requests and responses are JSON
(Content-Type: application/json). Field names are snake_case, timestamps
are RFC 3339 in UTC, and durations carry their unit in the name
(time_limit_s).
- Strict input. Unknown request fields are rejected with
validation_failed, so a typo fails at save time, not on stage. - Tolerant output. Responses may gain fields at any time; ignore the ones you don't know.
- Errors share one shape, described on the Errors page.
Every response carries a
Sparka-Request-Idheader; quote it when you write to support. - Lists take
limit(1–100, default 20) andcursor, and returnnext_cursor(nullon the last page). Newest first. - Retries.
POST /v1/presentationsandPOST /v1/keysaccept anIdempotency-Keyheader, so a retried request never creates two. - Compatibility. Changes under
/v1/only add things. A breaking change would get a new path prefix and at least six months' notice.
Presentations
Save, read, list and delete presentations (title, settings, questions).
- GET
/v1/presentationsList presentations - POST
/v1/presentationsCreate a presentation - GET
/v1/presentations/{presentation_id}Read a presentation - PUT
/v1/presentations/{presentation_id}Replace a presentation - DELETE
/v1/presentations/{presentation_id}Delete a presentation - POST
/v1/validateValidate without saving - GET
/v1/question-typesList question types and their schemas
Sessions
Start, resume, inspect and end live sessions; read results.
- GET
/v1/presentations/{presentation_id}/sessionsList a presentation's sessions - POST
/v1/presentations/{presentation_id}/sessionsStart or resume the live session - GET
/v1/sessions/{session_id}Session status - POST
/v1/sessions/{session_id}/endEnd a session - GET
/v1/sessions/{session_id}/resultsSession results
Join
Participant PIN lookup and join, called by the join page.
- GET
/v1/pins/{pin}Look up a PIN - POST
/v1/pins/{pin}/joinJoin a session
Account & keys
Plan, limits, usage and secret-key management.
- GET
/v1/accountPlan, limits and usage - GET
/v1/keysList secret keys - POST
/v1/keysCreate a secret key - DELETE
/v1/keys/{key_id}Revoke a secret key
Billing
Stripe Checkout and customer-portal links.
- POST
/v1/billing/checkoutGet a Checkout link - POST
/v1/billing/portalGet a customer-portal link
MCP
The MCP endpoint and the OAuth discovery documents MCP clients read.
- POST
/mcpMCP endpoint (JSON-RPC) - GET
/.well-known/oauth-protected-resourceProtected resource metadata (RFC 9728) - GET
/.well-known/oauth-protected-resource/mcpProtected resource metadata for /mcp (RFC 9728) - GET
/.well-known/oauth-authorization-serverAuthorization server metadata (RFC 8414)