[Network]

Agent wallets

Give every agent its own wallet, key and spend limits. Agents pay per token from their own balance, with no cards, no invoices and no humans in the loop.

POST/v1/agents

Why agent wallets

One shared key works until an agent loops. Agent wallets isolate spend: each agent has its own balance, limits and audit trail, funded from the team wallet or from any on-chain address.

Create an agent

curl https://api.topolabs.ai/v1/agents \  -H "Authorization: Bearer $TOPO_API_KEY" \  -H "Content-Type: application/json" \  -d '{    "name": "support-triage",    "fund": { "amount": "50.00", "currency": "usdt" },    "limits": { "daily": "10.00", "per_request": "0.25" }  }'
response.json
json
{  "object": "agent",  "id": "agt_support_triage",  "key": "tp_agent_4c1d…77ab",  "wallet": "0x2b9e…41f0",  "balance": "50.00",  "limits": { "daily": "10.00", "per_request": "0.25" },  "status": "active"}

Limits

  • limits.dailystring (USDT)

    Maximum spend per UTC day.

  • limits.monthlystring (USDT)

    Maximum spend per calendar month.

  • limits.per_requeststring (USDT)

    Reject any single request whose estimated cost is higher.

  • limits.modelsstring[]

    Allow list of model IDs the agent may call.

    Default: every model

  • expires_atstring (ISO 8601)

    Freeze the agent and its key at this time.

Signed requests

Agents that hold their own wallet can skip API keys and sign every request. Send the address, a timestamp and an EIP-191 signature over the timestamp and the SHA-256 of the body.

cURL
curl https://api.topolabs.ai/v1/chat/completions \  -H "X-Topo-Wallet: 0x2b9e…41f0" \  -H "X-Topo-Timestamp: 1792142596" \  -H "X-Topo-Signature: 0x9d0f…e3c1" \  -H "Content-Type: application/json" \  -d @request.json

Revoke an agent

Revoking freezes the key immediately and returns the remaining balance to the team wallet in the next settlement batch.

cURL
curl -X DELETE https://api.topolabs.ai/v1/agents/agt_support_triage \  -H "Authorization: Bearer $TOPO_API_KEY"