Reference

SDKs

Three typed clients speak the agent plane: Rust, TypeScript, and Python. All three are generated against the same frozen OpenAPI contract, so none of them can drift from the wire.


The clients

axorum-client is the Rust SDK. It submits intents, reads ledger state, and recovers from a stale policy pin. It is what the x402 rail sidecar itself runs on, which is the only endorsement of an SDK that means anything: the project's own production code path uses it.

The TypeScript client covers the same five agent-plane routes for Node and the browser.

The Python client covers the same five routes for the analysis and automation side, where most agent orchestration actually lives.

All three are generated from spec/openapi/agent-plane.v1.json, the byte-frozen contract a live node serves at /api/openapi.json. A wire change fails the build until the contract is deliberately re-ratified, so what a deployment advertises and what a client was generated from cannot diverge.

Two things every client gets right

A refusal is an Ok, never an error. A policy refusal arrives as a successful outcome with posted: false, not as a thrown exception or an Err. Every client surfaces it that way. If a refusal were an error, callers would write catch blocks around their controls, and the one fact the system exists to produce would be handled by the code path reserved for things that went wrong.

A stale policy pin is recoverable. If the policy in force changed between the moment the agent read it and the moment it submitted, the intent is rejected with a 409. The clients offer a bounded re-pin helper that re-reads the active policy and resubmits — safely, because the transaction id is minted by the client and is the ledger's idempotency key. The retry either lands the original transaction or discovers it already landed. It cannot double-post.

API reference

The full route-by-route reference — request and response schemas, error bodies, and the extras the structured error carries — lives on the API reference site, published separately from this documentation.

API reference: axorum.com/api  (placeholder — not yet published)

Until it is up, the frozen OpenAPI document in the repository is the authority, and a running node serves its own copy:

curl http://localhost:8080/api/openapi.json
Previous
The export boundary