Guides
Axorum API reference
Axorum sits between an agent's decision to spend and the rail that settles it. The agent plane is the wire contract it speaks: submit an intent, receive a verdict, read the state that verdict was judged against.
Every commit must balance twice. The money balances — debits equal credits. The authority balances — the action was permitted, and every obligation it touches is accounted for. A transaction posts only if both hold.
What the agent plane is
Six endpoints. An agent submits an intent: the accounting legs it proposes, the action it claims authority for, and the policy it believes is in force. Axorum judges that intent at the moment of the commit and records the outcome either way.
A refusal is a recorded verdict, not an error. An intent the policy forbids is answered 200 OK with posted: false and a ForbiddenRejected verdict. The refusal record is the product: it is the evidence that a control stopped something before it happened. Only a malformed, unauthorized, or unrecordable request is a 4xx or 5xx. A client that reads a non-2xx status as "the intent was refused" has the contract backwards.
Two rules follow from that, and every SDK on this site implements both:
- The client mints the transaction id. It is the substrate's idempotency key, so re-submitting a committed id replays its stored outcome rather than double-posting it. That is what makes a retry safe.
- Every intent pins a policy. If the pin is stale, the request is refused
409and nothing is written. Re-read the policy in force and resubmit against it.
The quickstart walks the whole loop, from the pin to the verdict.
Quickstart
Pin the policy in force, mint a transaction id, submit an intent, read the verdict.
Authentication
How an agent proves who it is: an agent:// URI and a PASETO attestation in the envelope.
Errors
The snake_case code vocabulary, what each one means, and which ones are worth retrying.
SDKs
Rust, TypeScript, and Python clients for the agent plane, and what they handle for you.
Intents
Submit an intent envelope and read the verdict. A refusal is recorded and returned 200 with posted: false.
Policies
Read the policy in force. Its id is the pin every intent carries, and the thing to re-read after a 409.
Transactions
Look up a stored record by its client-minted id, without resubmitting it.
Obligations
List the duties an actor owes: what is open, what it discharges, and when it breaches.
Balances
Read an account’s net balance in minor units. A 128-bit integer — decode it as a big integer.
Usages
Consumed, metered, billed. Three totals the ledger holds in order, so phantom usage is refused rather than remembered.
Rust
Available
axorum-client
The reference implementation. Pins the policy, re-pins on a 409, and surfaces every structured error field the contract makes load-bearing.
Read moreTypeScript
Available
@axorum/client
The same contract for Node and the edge. Decodes minor units as a big integer, so a large balance does not silently lose precision.
Read morePython
Available
axorum-client
The same contract, sync and async. Held to the Rust client’s conformance suite against a real service, not a mock.
Read more