Overview

The Durablex HTTP API - base URL, authentication, conventions, and the full endpoint map.

Everything the console does goes through the engine's HTTP API, and so can you. It is plain JSON over HTTP - no SDK required to trigger events, read runs, or control them.

Base URL

Your workspace's engine URL is shown in the console, and is also the value of DURABLEX_ENGINE_URL (for example https://dx-engine.tarqeem.cloud). All paths below are relative to it.

Authentication

Every request needs an API key, presented as a Bearer token. Issue one in the console under API Keys:

curl "$DURABLEX_ENGINE_URL/runs" \
  -H "Authorization: Bearer $DURABLEX_API_KEY"

Keys carry a scope. A public (read-only) key can call the GET endpoints; writes (every POST, plus the /connect upgrade) need a secret key.

ResponseWhen
401 UnauthorizedThe key is missing or unknown.
403 ForbiddenA public (read-only) key attempted a write.

The health probes (/healthz, /readyz) always bypass auth.

Conventions

  • Request and response bodies are JSON. Send POST bodies as a JSON object.
  • A successful POST /events returns 202 Accepted; reads return 200. Errors return a JSON { "error": "..." } body with the status code.
  • Listings are newest-first and bounded; GET /runs uses keyset pagination via the X-Next-Cursor header.

Endpoints

Method + pathPurpose
POST /eventsTrigger workflows by sending an event.
GET /runsList and filter runs.
GET /runs/statsAggregate run counts for a filter.
GET /runs/{id}One run, with its input and result.
GET /runs/{id}/stepsA run's steps, in order.
POST /runs/{id}/cancelCancel a run.
POST /runs/{id}/pausePause a run.
POST /runs/{id}/resumeResume a paused run.
POST /runs/{id}/replayReplay a finished run as a new run.
GET /eventsRead the event log.
GET /events/{id}One event log record.
GET /events/streamLive event tail (Server-Sent Events).
POST /webhooks/{slug}Public: a signature-verified inbound webhook mapped onto an event.
GET /webhook-deliveriesThe outbound delivery log, newest first.
GET /webhook-deliveries/{id}One delivery with its attempt log.
GET /webhook-endpoints GET /webhook-receiversThe outbound/inbound configs (no secrets).
GET /workflowsList registered workflows, each with its flowControl config.
GET /appsList registered apps.
GET /runnersList connected runners with their metadata and liveness.
GET /flow-stateLive flow-control buffers (debounce, batch).
GET /healthz GET /readyzLiveness and readiness.

The engine-to-runner protocol (POST /register, the invoke call, GET /connect) is documented separately in the wire protocol.

On this page