AgentMessage
Billing

List available wallet top-up options

GET
/v1/billing/topup/products

Returns the catalog of available wallet top-up options, ordered by amount ascending. Each entry carries the credit amount in cents and a human-readable label suitable for display.

The catalog is the same for every organization. Under PAYG the plan row carries min_topup_cents = NULL, so every SKU ($5$100) is accepted, there is no tier-minimum floor.

Requires the billing:write scope, the same scope that gates starting a top-up.

AuthorizationBearer <token>

Authenticate by sending your API key as a bearer token: Authorization: Bearer am_live_.... Every request is automatically scoped to the organization that owns the key and to the scopes granted to that key.

In: header

Response Body

application/json

application/json

application/json

curl -X GET "https://example.com/v1/billing/topup/products"
{
  "success": true,
  "data": {
    "products": [
      {
        "stripe_product_id": "prod_UNRcAyVTMJ9LH1",
        "amount_cents": 1000,
        "display_label": "$10 wallet credit"
      },
      {
        "stripe_product_id": "prod_UNRcByVTMJ9LH2",
        "amount_cents": 2000,
        "display_label": "$20 wallet credit"
      },
      {
        "stripe_product_id": "prod_UNRcCyVTMJ9LH3",
        "amount_cents": 5000,
        "display_label": "$50 wallet credit"
      }
    ]
  }
}
{
  "success": false,
  "error": {
    "code": "UNAUTHORIZED",
    "message": "authentication failed",
    "request_id": "01JTBQH2FZ8K1RXC0WJ4Z9P3VM"
  }
}
{
  "success": false,
  "error": {
    "code": "FORBIDDEN",
    "message": "missing required scope",
    "request_id": "01JTBQH2FZ8K1RXC0WJ4Z9P3VM"
  }
}