APIReadsGet the mandate
Get the mandate
Read the wallet’s mandate.
- Auth Node Token or read token
- Guide Mandates
GET
The wallet’s mandate as written at registration: the rules, one English sentence per rule, and the owner key that signed it.
header
AuthorizationBearer <token>Node Token from the Exchain console. Works for wallets this node registered; the node’s network (preprod or mainnet) decides the network of the request. Use a preprod token in the playground.
walletId*stringWallet id returned at registration: wal_ and 26 Crockford base32 characters.
Match
^wal_[0-9A-HJKMNP-TV-Z]{26}$The mandate.
application/json- response
walletId*WalletIdMatch
^wal_[0-9A-HJKMNP-TV-Z]{26}$constitutionId*Hash32Match
^[0-9a-f]{64}$mandateEnglish*stringmandateRules*array<>Items
1 <= itemssignedBy*writtenAt*DateTimeFormat
date-timegovernedAsset?governedAssets?array<>Every governed asset of a Cardano wallet with its own mandate; the top-level fields describe the first.
asOf*stringMatch
^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}\.[0-9]{3}Z$Format
date-timeschemaVersion*stringWire schema version, "1.1" today.
Value in
"1.0""1.1"chainTip*|nullcurl -X GET 'https://cosign.exchain.network/v1/wallets/wal_01J9XK3M4N5P6Q7R8S9T0V1W2Z/mandate'Example Response
{ "walletId": "wal_01J9XK3M4N5P6Q7R8S9T0V1W2Z", "constitutionId": "394b588411cfdb72c9377adba91bb86fad77b65e6be25bdb2a00558ec853e0f2", "mandateEnglish": "No single payment above 200 tADA. No more than 10 payments in any 60 seconds. No more than 8,000 tADA in any rolling 24 hours. No more than 500 tADA to any one counterparty in any rolling 24 hours. No more than 4,000 tADA by any one agent in any rolling 24 hours. Total lifetime envelope: 200,000 tADA. Only registry-verified agents can be paid. No payment above the seller's published price.", "mandateRules": [ { "name": "per_tx_cap", "metric": "max(payments.amount)", "window": 60, "scope": null, "bound": "200000000", "level": "member" }, { "name": "velocity_burst", "metric": "count(payments)", "window": 60, "scope": null, "bound": "10", "level": "member" }, { "name": "daily_outflow", "metric": "sum(payments.amount)", "window": 86400, "scope": null, "bound": "8000000000", "level": "member" }, { "name": "per_seller_cap", "metric": "sum(payments.amount)", "window": 86400, "scope": "counterparty", "bound": "500000000", "level": "member" }, { "name": "per_agent_cap", "metric": "sum(payments.amount)", "window": 86400, "scope": "agent", "bound": "4000000000", "level": "member" }, { "name": "envelope", "metric": "sum(payments.amount)", "window": 315360000, "scope": null, "bound": "200000000000", "level": "member" }, { "name": "registry_gate", "metric": "counterparty.registered", "window": null, "scope": "counterparty", "bound": null, "level": "member" }, { "name": "price_gate", "metric": "payments.amount <= counterparty.published_price", "window": null, "scope": "counterparty", "bound": null, "level": "member" } ], "signedBy": { "ownerKeyHash": "241c5e9eed0f49da2cddd68cfcf3e7dad9201cf8def2c06e4c9f5dac" }, "writtenAt": "2026-11-02T09:30:00Z", "governedAsset": { "id": "lovelace", "decimals": 6, "symbol": "tADA" }, "governedAssets": [ { "id": "lovelace", "decimals": 6, "symbol": "tADA", "constitutionId": "394b588411cfdb72c9377adba91bb86fad77b65e6be25bdb2a00558ec853e0f2", "mandateEnglish": "No single payment above 200 tADA. No more than 10 payments in any 60 seconds. No more than 8,000 tADA in any rolling 24 hours. No more than 500 tADA to any one counterparty in any rolling 24 hours. No more than 4,000 tADA by any one agent in any rolling 24 hours. Total lifetime envelope: 200,000 tADA. Only registry-verified agents can be paid. No payment above the seller's published price.", "mandateRules": [ { "name": "per_tx_cap", "metric": "max(payments.amount)", "window": 60, "scope": null, "bound": "200000000", "level": "member" }, { "name": "velocity_burst", "metric": "count(payments)", "window": 60, "scope": null, "bound": "10", "level": "member" }, { "name": "daily_outflow", "metric": "sum(payments.amount)", "window": 86400, "scope": null, "bound": "8000000000", "level": "member" }, { "name": "per_seller_cap", "metric": "sum(payments.amount)", "window": 86400, "scope": "counterparty", "bound": "500000000", "level": "member" }, { "name": "per_agent_cap", "metric": "sum(payments.amount)", "window": 86400, "scope": "agent", "bound": "4000000000", "level": "member" }, { "name": "envelope", "metric": "sum(payments.amount)", "window": 315360000, "scope": null, "bound": "200000000000", "level": "member" }, { "name": "registry_gate", "metric": "counterparty.registered", "window": null, "scope": "counterparty", "bound": null, "level": "member" }, { "name": "price_gate", "metric": "payments.amount <= counterparty.published_price", "window": null, "scope": "counterparty", "bound": null, "level": "member" } ] } ], "asOf": "2026-11-05T14:22:07.318Z", "schemaVersion": "1.1", "chainTip": { "slot": 104118120, "blockHash": "9a301ac2e5747e7ebeeecececd2f114f55695614277514e085211c5417d04c26" }}Errors
| Status | Code | Meaning |
|---|---|---|
401 | unauthorized | The bearer credential is missing, unknown or revoked. |
404 | not_found | The wallet does not exist, this node did not register it, or the read token is for another wallet. |
Every code and what to do about it: Errors and codes.