Do anything the console does from your own code: the Duraton HTTP API's base URL, authentication, conventions, and full endpoint map.
Everything the console does goes through Duraton's HTTP API, and so can you. It is plain JSON over
HTTP - no SDK required to trigger events, read runs, or control them.
Your workspace's base URL is shown in the console under API Keys (for example
https://run.duraton.dev); it is the value you set DURATON_URL to. All paths below are
relative to it. A workspace holds one or more projects that share this base URL; each project has
its own API keys, and the key is what scopes a request to a single project.
Keys carry a scope. A public (read-only) key can call the GET endpoints; writes (every POST,
PATCH, and DELETE, plus the /connect upgrade) need a secret key.
Response
When
401 Unauthorized
The key is missing or unknown.
403 Forbidden
A public (read-only) key attempted a write, or the project is suspended.
Request and response bodies are JSON. Send POST and PATCH bodies as a JSON object.
Reads return 200; writes return 200, 201, 202, or 204 depending on the route. The full
map, and the failure codes, are in errors.
Listings are newest-first and bounded. GET /runs, GET /webhook-deliveries, and
GET /webhook-source-deliveries use
keyset pagination via the X-Next-Cursor header; the other
listings take a limit (see limits).
The runner protocol (POST /register, the invoke call, GET /connect) is documented separately in
the wire protocol, and the same operations are available to AI agents as
MCP tools.