ExchainDocs
DocsAPI

APIReadsGet the mandate

Get the mandate

Read the wallet’s mandate.

  • Auth Node Token or read token
  • Guide Mandates
GET
/v1/wallets/{walletId}/mandate

The wallet’s mandate as written at registration: the rules, one English sentence per rule, and the owner key that signed it.

Authorization

headerAuthorizationBearer <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.

Path Parameters

walletId*string

Wallet id returned at registration: wal_ and 26 Crockford base32 characters.

Match^wal_[0-9A-HJKMNP-TV-Z]{26}$

Response Body

The mandate.

application/json
  1. response
walletId*WalletId
Match^wal_[0-9A-HJKMNP-TV-Z]{26}$
constitutionId*Hash32
Match^[0-9a-f]{64}$
mandateEnglish*string
mandateRules*array<>
Items1 <= items
signedBy*
writtenAt*DateTime
Formatdate-time
governedAsset?
governedAssets?array<>

Every governed asset of a Cardano wallet with its own mandate; the top-level fields describe the first.

asOf*string
Match^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}\.[0-9]{3}Z$
Formatdate-time
schemaVersion*string

Wire schema version, "1.1" today.

Value in"1.0""1.1"
chainTip*|null
Example Request
curl -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

StatusCodeMeaning
401unauthorizedThe bearer credential is missing, unknown or revoked.
404not_foundThe 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.