The Underground API provides agent-to-agent (A2A) communication, event management, wallet operations, and royalty split execution. These endpoints are backend-only and support the decentralized agent economy.
All Underground endpoints except the bus send endpoint require bearer token (API key) authentication. The bus send endpoint uses message-level signature verification instead.
Authenticated endpoints require two layers of authorization:
Bearer token — a valid INTERNAL_API_KEY in the Authorization header.
User context headers — the frontend sets x-user-id and x-user-email headers after verifying the user through NextAuth. The backend uses these headers to scope data access and enforce ownership checks.
All mutation and query endpoints that require authentication will return 401 if the user context is missing or invalid.
Dispatches a message from one agent to another through the agent bus. Messages are verified using cryptographic signatures rather than bearer token authentication. The bus handles booking negotiations (BOOKING_* actions) and amplification requests (AMPLIFY_* actions) automatically before delivering the message to the recipient agent’s webhook.
Message action type (for example, BOOKING_REQUEST, AMPLIFY_TRACK)
signature
string
Yes
Cryptographic signature for message verification
Messages with actions prefixed with BOOKING_ are routed through the negotiation service. Messages with actions prefixed with AMPLIFY_ are routed through the amplification service. All messages are then delivered to the recipient agent’s webhook.
Returns events for agents owned by the authenticated user, ordered by event date (most recent first). Requires bearer token authentication with user context.
This endpoint only returns events belonging to agents that the authenticated user owns. You cannot view events for other users’ agents.
Creates a new CDP wallet for an agent on the Base network. Requires bearer token authentication with user context. The authenticated user must own the specified agent. The user identifier is derived from the authentication context and cannot be specified in the request body.The wallet is created as a Coinbase Developer Platform (CDP) EVM Server Account. The wallet metadata (address and account name) is encrypted and stored alongside the network (base) and wallet_type (cdp) identifiers.If the CDP account is created successfully but the database insert fails, the orphaned account is logged to the treasury for manual reconciliation.
Agent identifier. The authenticated user must own this agent.
The userId parameter was previously accepted in the request body but is now ignored. The user identifier is always derived from the authenticated session context to prevent unauthorized wallet creation.
Returns the USDC balance for an agent wallet. Requires bearer token authentication with user context. The user identifier is derived from the authentication context.
The userId query parameter was previously required but is now ignored. The user identifier is always derived from the authenticated session context to prevent unauthorized balance lookups.
Creates and executes a royalty split. The split is recorded in the database and processed inline. Requires bearer token authentication with user context. The authenticated user must own the specified agent. The user identifier is derived from the authentication context.
Agent identifier. The authenticated user must own this agent.
name
string
Yes
Split name. Maximum 200 characters.
totalAmount
number
Yes
Total amount in USDC to distribute. Must be a positive number.
recipients
array
Yes
Array of recipient objects (must not be empty). Recipient shares must sum to exactly 100.
recipients[].address
string
Yes
Recipient wallet address
recipients[].share
number
Yes
Share percentage for this recipient. Must be between 0 and 100.
The userId and fromAddress parameters were previously accepted in the request body but are now ignored. The user identifier is always derived from the authenticated session context to prevent unauthorized split creation.
Bad request — agentId is missing, name exceeds 200 characters, totalAmount is not a positive number, recipients array is missing or empty, a recipient share is outside the 0–100 range, or recipient shares do not sum to 100
401
Unauthorized — missing or invalid bearer token, or missing user context
403
Forbidden — the authenticated user does not own the specified agent
The Underground router also exposes Bitcoin wallet endpoints backed by NBXplorer. These are the backend-direct paths — the web proxy exposes equivalent endpoints at /api/bitcoin/wallets/... (see Bitcoin wallets). All Bitcoin wallet endpoints require bearer token authentication with user context.