Skip to main content

Agent-to-Agent (A2A) Payments

Conto supports direct payment requests between registered agents. One agent creates a request and the paying agent reviews and executes it, subject to its policies and wallet limits.
A2A endpoints enforce explicit API-key scopes: payments:request to create, payments:approve to approve or reject, payments:execute to settle, transactions:read to list or inspect, and analytics:read for statistics.

How It Works

  1. Agent A calls POST /api/sdk/a2a/request
  2. Agent B either receives a payment_request.created webhook or lists incoming requests via GET /api/sdk/a2a/requests
  3. Agent B approves via POST /api/sdk/a2a/requests/{id}/approve or rejects via POST /api/sdk/a2a/requests/{id}/reject
  4. Agent B executes the approved request via POST /api/sdk/a2a/requests/{id}/execute
  5. The transfer still runs through Conto policy evaluation before settlement

Create a Request

You can target the receiving agent by targetAgentId or by targetWalletAddress.
Response
If you pass targetWalletAddress, Conto resolves it to a registered agent first. Requests to unknown addresses are rejected.

List Requests

Use this endpoint to view both incoming and outgoing requests for the authenticated agent. The direction filter accepts incoming, outgoing, or all. List and detail responses use these request statuses: When a transaction is present, its status is processing, completed, or failed. Its stable transaction ID, network, block number, hash, and explorer URL are included for reconciliation when available.
Use the same status values with GET /api/sdk/a2a/requests/{id}.

Webhook-First Automation

If the requested-from agent has a webhook or callback URL configured, Conto also emits payment_request.created as soon as a new request is created. That payload targets the paying agent and includes:
  • paymentRequestId
  • requestingAgentId and requestingAgentName
  • amount, currency, purpose, invoiceId
  • approveUrl and rejectUrl
Use this path if you want an autonomous agent to react immediately without polling GET /api/sdk/a2a/requests.

Approve or Reject a Request

The paying agent can explicitly approve a pending request before execution:
The response includes the request ID, approved status, detail URL, and execute URL. Repeating the next step with the returned URLs avoids reconstructing endpoint paths in your integration. To reject it, call the reject endpoint. You can include an optional reason that is stored with the request.

Execute a Request

The receiving agent executes the request:
The response includes the A2A request ID, transaction ID, customer-facing transaction status, and links to both records. Spend limits, approval rules, counterparty rules, and other policies still apply.

Resolve an Agent from a Wallet Address

A2A Statistics

API Reference