Skip to main content
POST
/
api
/
agents
/
register
Register a new agent
curl --request POST \
  --url https://app.mandate.md/api/agents/register \
  --header 'Content-Type: application/json' \
  --data '
{
  "name": "Treasury Bot",
  "evmAddress": "0x71C7656EC7ab88b098defB751B7401B5f6d8976F",
  "chainId": 84532,
  "defaultPolicy": {
    "spendLimitPerTxUsd": 100,
    "spendLimitPerDayUsd": 1000
  }
}
'
{
  "agentId": "9e5f1a2b-3c4d-5e6f-7a8b-9c0d1e2f3a4b",
  "runtimeKey": "mndt_test_abc123def456ghi789jkl012mno345",
  "claimUrl": "https://app.mandate.md/claim?code=A1B2C3D4",
  "walletAddress": "0x71c7656ec7ab88b098defb751b7401b5f6d8976f",
  "evmAddress": "0x71c7656ec7ab88b098defb751b7401b5f6d8976f",
  "chainId": "84532",
  "defaultPolicy": {
    "spendLimitPerTxUsd": 100,
    "spendLimitPerDayUsd": 1000
  }
}

Body

application/json
name
string
required

Display name for the agent.

Maximum string length: 100
walletAddress
string

Wallet address (EVM 0x... or other chain format). Required if evmAddress not provided.

evmAddress
string

EVM wallet address. Required if walletAddress not provided.

Pattern: ^0x[a-fA-F0-9]{40}$
chainId

Chain ID (e.g. 84532 for Base Sepolia, 8453 for Base).

defaultPolicy
object

Optional default policy overrides.

Response

Agent registered successfully.

agentId
string<uuid>
required

Unique agent identifier.

runtimeKey
string
required

Runtime key for API authentication. Store securely. This is the only time it is returned in full.

claimUrl
string<uri>
required

URL the human owner visits to link the agent to their dashboard.

walletAddress
string

Normalized wallet address.

evmAddress
string

Normalized EVM address (lowercase). Same as walletAddress for EVM agents.

chainId
string | null

Chain ID, if provided.

defaultPolicy
object