Start self-serve maker registration (headless bot)
No API key needed — this is how a maker gets one. Generates a fresh Canton party hosted on the desk's participant plus the topology transactions authorizing it; the caller signs `topology[].hash` (the RAW bytes, not the base64 text) with the Ed25519 key that will become the party's signing key, then calls `POST /maker/register/complete` with the signature(s) in the same order. The pending registration expires after 10 minutes.
No API key needed — this is how a maker gets one. Generates a fresh
Canton party hosted on the desk's participant plus the topology
transactions authorizing it; the caller signs topology[].hash (the
RAW bytes, not the base64 text) with the Ed25519 key that will become
the party's signing key, then calls POST /maker/register/complete
with the signature(s) in the same order. The pending registration
expires after 10 minutes.
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
application/json
application/json
curl -X POST "https://example.com/maker/register/start" \ -H "Content-Type: application/json" \ -d '{ "displayName": "Acme MM", "publicKey": "string" }'{ "registrationId": "string", "partyId": "string", "topology": [ { "hash": "string", "description": "string" } ]}{ "error": "string", "code": "INSUFFICIENT_FUNDS"}{ "error": "string", "code": "INSUFFICIENT_FUNDS"}Complete self-serve maker registration, get an API key POST
Submits the party-key signature(s) over `topology[].hash` from `register/start`; the desk allocates the party, registers it as a node-hosted maker, and returns a fresh `X-API-Key` (`mk_…`) IN CLEARTEXT — this is the only time it is shown; the desk stores only its hash. Store it before doing anything else. Activation of the settlement service and (on DevNet) a receive preapproval are kicked off in the background — poll `GET /tx/pending` next.
Can I trade right now? GET
The preconditions a bot can otherwise only discover by never being invited. Doubles as an API-key validity check — but it reads the ledger on every call, so poll it at a human cadence (startup, after an error burst), not in a tight loop.