Skip to main content

Jobs API

Jobs represent asynchronous executions. Start runs via the resource clients:
  • Neuron: POST /v1/neurons/:id/invokeauvy.neurons.invoke (Neurons)
  • Pathway: POST /v1/pathways/:id/executeauvy.pathways.execute (Pathways)
  • Receptor ingress: POST /v1/receptors/:id/fireauvy.receptors.fire
POST /v1/jobs remains for stored pathway queueing with { "pathway_id": "<uuid>", "input": { ... } }. Then poll GET /v1/jobs/:jobId/status or consume GET /v1/jobs/:jobId/stream (SSE). POST /v1/chat/:traceId (receptor_id + data) returns 410 — use neurons.invoke with trace_id, stream, and optional client_nonce instead.

Start pathway run

POST /v1/jobs
Body: pathway_id (required for stored pathway) or inline pathway, optional input or data. Response: { "job_id": "...", "status": "pending" }.

List jobs

GET /v1/jobs
Query: pathway_id, receptor_id, status, limit, offset. Response: { "jobs": [...], "total", "limit", "offset" }. Workspace-scoped.

Get job status

GET /v1/jobs/:jobId/status
Returns status, progress, current_step, failedReason, result (when completed), waitingFor (when paused for input). Response fields: job_id, status (pending | running | completed | failed | waiting | paused), progress, current_step, failedReason, result, waitingFor, created_at, processed_at, finished_at.
typescript const status = await auvy.jobs.getStatus(jobId)

Stream job progress

GET /v1/jobs/:jobId/stream
SSE stream; consume until a terminal event (complete or error). Same workspace check as status. Query: after (optional) — SSE stream cursor (12345-0). When set, the server only sends entries after that id (use the last SSE id: line from before a disconnect). Wire format: id: <cursor> then data: <json>. Comment lines (: ping) are keepalives. The public share route GET /v1/public/jobs/:jobId/stream supports the same after parameter (in addition to share/trace query params).

Cancel job

POST /v1/jobs/:jobId/cancel
Returns 400 if job is already completed or failed.

Resume job

POST /v1/jobs/:jobId/resume
Use for workflows that are waiting or paused (e.g. human node).

Submit input (waiting job)

POST /v1/jobs/:jobId/input
Body: { "workspace_id": "<uuid>", "input": { "type": "intervention_response", "interventionId": "<id>", "action": "approve" | "reject" | ... } }. The input object must match the paused run’s intervention.