Skip to main content
The orchestration surface is what makes a service execute end to end. Native skills run through registered runtime endpoints. Machine-side runtime agents register and heartbeat their own endpoints. Tasks model a discover-resolve-execute lifecycle and emit Routes, Outcomes, and Runs. Policies enforce cross-cutting rules. Audit events log every state change. See the Machine Markets overview for base path, auth model, and common envelopes. All endpoints below require the machine to be active and identity-verified. Errors MACHINE_NOT_ACTIVE and MACHINE_NOT_ACTIVATED are uniform across the group.

Runtime endpoints

GET /machines/:machineId/runtime-endpoints

GET /machines/:machineId/runtime-endpoints/:providerKey

PUT /machines/:machineId/runtime-endpoints/:providerKey

Upsert a manual runtime endpoint. source is forced to manual. Returns 201 on create, 200 on update. The server lowercases providerKey in the path.
Errors: VALIDATION_ERROR (invalid URL).

DELETE /machines/:machineId/runtime-endpoints/:providerKey

Returns 204. Errors: NOT_FOUND.

RuntimeEndpointView

The view never echoes authToken. Use hasAuthToken to check whether one is stored.

Machine-side agents

POST /machines/:machineId/agents/enrollment

Enrols a new runtime agent. Returns the agent record plus a one-time agentToken.

POST /machine-agents/heartbeat

Heartbeat from an on-machine runtime agent. Auth via agentToken body field or x-agent-pairing-token / Authorization: Bearer header. Upserts one or many endpoints with source: "agent" and a lease.
Errors: VALIDATION_ERROR, NOT_FOUND, AGENT_PAIRING_INACTIVE (status revoked), AGENT_AUTH_REQUIRED, AGENT_AUTH_INVALID, AGENT_POLICY_DENIED (provider key not in agent.allowedProviderKeys). Side effects: agent status flips to active, lastSeenAt updates, each endpoint upserts with leaseExpiresAt = now + leaseSeconds.

MachineAgentView

Graph

GET /machines/:machineId/graph

POST /machines/:machineId/graph/nodes

PATCH /machines/:machineId/graph/nodes/:nodeId

All fields optional; data is shallow-merged. Status accepted: "draft" | "active" | "blocked" | "degraded".

DELETE /machines/:machineId/graph/nodes/:nodeId

Returns 204.

POST /machines/:machineId/graph/edges

PATCH /machines/:machineId/graph/edges/:edgeId / DELETE /machines/:machineId/graph/edges/:edgeId

Standard patch and delete semantics.

Graph types

Tasks

Tasks model the discover-resolve-execute pipeline that orders ride on. POST /market/orders materialises an order as a task internally, but tasks can also be driven directly.

GET /machines/:machineId/tasks

POST /machines/:machineId/tasks

GET /machines/:machineId/tasks/:taskId

POST /machines/:machineId/tasks/:taskId/discover

Runs discovery against the catalogue for a queued task.

POST /machines/:machineId/tasks/:taskId/resolve

Picks a route and persists it. Returns 201.

POST /machines/:machineId/tasks/:taskId/execute

Executes the resolved route. HTTP status propagates from the inner execution result.
Errors: ROUTE_REQUIRED (no route resolved), plus all downstream skill-runtime errors.

Task types

Routes, outcomes, runs

GET /machines/:machineId/routes

GET /machines/:machineId/outcomes

GET /runs?machineId={id}&...

GET /runs/:runId

Route / Outcome / Run types

Policies

Policies enforce cross-cutting rules above and beyond a ’s .

GET /policies

POST /policies

GET /policies/:policyId / PATCH /policies/:policyId

Standard get and patch semantics.

PolicyRecord

Audit events

GET /audit-events

Event types emitted by the orchestration surface: runtime-endpoint.upserted, runtime-endpoint.deleted, machine-agent.enrolled, machine-agent.heartbeat, graph.node.created, graph.node.updated, graph.node.deleted, graph.edge.created, graph.edge.updated, graph.edge.deleted, task.created, policy.created, policy.updated, market.order.created, market.payment.intent-created, market.payment.proof-recorded, market.order.executed, market.order.confirmed, market.order.disputed, market.payment.escrow-held, market.payment.released, market.payment.refunded.