x-api-key header on all three routes. HMAC signing headers are not required.
Start a run
POST https://julian.11x.ai/api/v1/workflows/{agentId}/run
201 returns { "workflowRunId": "wf-run.…" }. Save that ID to read the run. Sending the same body and idempotency key again returns the same ID; reusing the key with a different body returns 422. Without a key, each POST can start a new run. Invalid input returns 400; an agent with no enabled published API workflow returns 404. A 429 response includes Retry-After.
Get one run
GET https://julian.11x.ai/api/v1/workflows/{agentId}/run?runId={workflowRunId}
200 response includes workflowRunId, status, startedAt, finishedAt, and terminalNodes. Status is queued, in_progress, completed, or failed. startedAt is null until execution begins; finishedAt is null until it ends. Each terminal node includes its name and succeeded or failed status. A failed run still returns HTTP 200; an unknown or inaccessible run returns 404.
List runs
GET https://julian.11x.ai/api/v1/workflows/{agentId}/runs
runs and a nextCursor. Each summary includes the run ID, status, start time, and finish time. Pass a non-null nextCursor as ?cursor=<nextCursor> for the next page; stop when it is null. History includes older API workflow bindings and excludes builder test runs.