billing

Buy minutes with stablecoin over HTTP 402 — no card, no checkout, no human

Unlike /api/v1/billing/topup, this settles inside the request and the balance has already moved by the time you read the response.

Call it once with no payment header and it answers 402 with a PAYMENT-REQUIRED header describing what to pay. Sign an EIP-3009 TransferWithAuthorization for that amount with your wallet key, retry the identical request with the signature in PAYMENT-SIGNATURE, and the 200 below comes back with the credit applied. A PAYMENT- RESPONSE header carries the settlement details. Most x402 client libraries do this handshake for you.

The price comes from {amount}, which must be one of accepts.denominations_eur from GET /api/v1/billing/x402 — the body cannot influence what is charged. Per-payment and rolling daily ceilings are enforced before a challenge is ever issued.

POST /api/v1/agents accepts the same challenge, so an agent can pay for the phone agent it is creating in the same request.

post/api/v1/billing/x402/topup/{amount}

Request

  • Base URL: https://www.callagent.pro
  • URL: https://www.callagent.pro/api/v1/billing/x402/topup/{amount}
  • Auth: HTTP bearer

Path parameters

amountstring required

One of accepts.denominations_eur, e.g. 10 or 25 (EUR)

Response

Paid, settled and credited. paid is what left the wallet (USDC); credited is what the balance gained (EUR). They are different currencies on purpose — reporting one of them is how an account becomes impossible to reconcile.

creditedstring

EUR added to the balance

credited_currencystring
paidstring

Amount charged in the settlement asset

paid_currencystring
transactionstring

On-chain settlement reference; the credit is idempotent on this

balancenumber

EUR balance after crediting

cost_per_minutenumber
minutes_addedinteger nullable

Example response

{
  "credited_currency": "EUR",
  "paid_currency": "USDC"
}

Changes

No recorded changes to this operation across all 1 revision of this API.