Base URL
During private beta the API is served from
https://cs847b7b23.execute-api.us-west-2.amazonaws.com/v1. A custom domain lands before GA.Authentication
Every request includes a bearer token in theAuthorization header:
Request + response
All bodies are JSON.Content-Type: application/json required on all POST/PUT/DELETE calls with bodies. Responses are always JSON unless noted.
Async model
Task submission is asynchronous.POST /v1/tasks returns immediately with a taskId and status: "pending". The task runs in the background (typically 5-60 seconds). Poll GET /v1/tasks/{taskId} until status reaches a terminal value (completed, failed).
The Python and TypeScript SDKs’ tasks.run(...) method hides the polling loop. Use it unless you need to drive polling yourself.
Error shape
Errors come back with an HTTP status code and a JSON body:Status codes
| Code | When | Example |
|---|---|---|
200 OK | GET / DELETE success | Fetching a task, revoking a key |
201 Created | POST success | Submitting a task, minting a key |
400 Bad Request | Invalid JSON or validation failure | Missing endUserId, blank task, endUserId > 256 chars |
401 Unauthorized | Missing auth header, or token is of the wrong kind for the route | API key presented to /v1/api-keys (JWT-only route) |
403 Forbidden | Valid token but denied access | Revoked API key, cross-business ownership violation |
404 Not Found | Resource doesn’t exist or you don’t own it | Unknown taskId, unknown sessionId |
405 Method Not Allowed | Wrong HTTP verb for the route | POST to a GET-only endpoint |
429 Too Many Requests | Rate limit or quota exceeded | See the response body for specifics |
500 Internal Server Error | Our bug | Rare. Retry with exponential backoff. |
Endpoint summary
Submit task
POST /v1/tasksGet task
GET /v1/tasks/{taskId}List tasks
GET /v1/tasksGet session
GET /v1/sessions/{sessionId}Set credentials
PUT /v1/end-users/{endUserId}/credentialsGet credentials
GET /v1/end-users/{endUserId}/credentialsDelete credentials
DELETE /v1/end-users/{endUserId}/credentialsCreate API key
POST /v1/api-keysList API keys
GET /v1/api-keysRevoke API key
DELETE /v1/api-keys/{prefix}