Agent Credential Authentication
Scoped agcred_ credentials for AI-agent-initiated money movement
Agent Credentials are a separate, stricter trust tier for AI agents that need to move money on a user's behalf. They are not a general-purpose API key - an agcred_ credential can only call the three agent-scoped endpoints below, each with its own guardrails (per-transaction cap, daily cap, currency, recipient allowlist).
Format
agcred_<random>Unlike your developer API Key (UGSK_, 64-hex), Agent Credentials use a base58-encoded random suffix - there is only one credential per grant, and it is a bearer secret.
What Agent Credentials can do
| Endpoint | Purpose |
|---|---|
POST /agent/transfer | Execute a scoped wallet transfer to a recipient phone number |
GET /agent/balance | Check available wallet balance and remaining daily cap |
POST /agent/payment-link | Create a payment link within the credential's scope |
Authorization: Bearer agcred_<credential>If a request would exceed the credential's configured scope and fallback is enabled, the API returns a DraftIntent URL for first-party user confirmation instead of settling the action directly from the agent call.
Issuing and managing credentials
Agent Credentials are created, listed, updated, and revoked by the account owner (not self-issued by the agent) with fields such as name, allowedActions, maxAmountPerTxn, maxAmountPerDay, currency, recipientWhitelist, and webhookUrl. Issue and manage them from Agent Credentials in the main app.
Never confuse Agent Credentials with your developer API key
UGSK_keys → general REST access, scoped to the account that issued them - see API key authentication.agcred_credentials → narrow, money-movement-only, intended for a delegated AI agent - never grant one general API access, and never let an LLM prompt itself hold or print the raw credential.
Related
- Portal authentication
- MCP server -
agent_check_balancecan read the credential cap. Transfers are not an MCP tool; they stay onPOST /agent/transfer.
Did this solve your problem?