Docs menu

API reference, Console billing

The subscription plans

View as Markdown

GET/v1/console/plansoperation id listPlans

The monthly plans (Base, Hot, Fierce) with their price excluding VAT, weekly token allowance, effective rate and reset price, plus the standard pay-as-you-go rate. Values come from gateway/config/pricing.json (docs/pricing-v2.md); the console and the app render this list, never their own copy of the prices. Each plan also carries its founding-round seats (seats_total, seats_taken, seats_left, available); the same list without a session is listPublicPlans.

Authentication. Console session cookie (__Host-dex_session), or an app session token (Authorization: Bearer dex_ses_...). With the cookie, state-changing routes also need the x-dex-csrf header.

Responses

200The plans, cheapest first.

Headers: x-request-id

objectstringrequired
  • always "list"
standard_unit_price_micro_centsintegerrequired
The pay-as-you-go rate per token, used without a plan and beyond the weekly allowance (100 is EUR 1.00 per million).
dataarray of Planrequired
data[].idPlanIdrequired
A subscription plan (docs/pricing-v2.md). New plans may appear within v1.
  • one of "base", "hot", "fierce"
data[].objectstringrequired
  • always "plan"
data[].namestringrequired
Display name (Base, Hot, Fierce).
data[].price_centsintegerrequired
Monthly price in euro cents, excluding VAT.
data[].currencystringrequired
  • always "EUR"
data[].intervalstringrequired
  • always "month"
data[].included_multipleintegerrequired
The plan includes usage worth this multiple of its price at the standard rate.
data[].week_allowance_tokensintegerrequired
Input tokens included per 7-day week; unused tokens do not roll over.
  • format int64
data[].effective_unit_price_micro_centsintegerrequired
The plan price divided by its monthly included tokens, in micro-cents per token (50 is EUR 0.50 per million).
data[].reset_price_centsintegerrequired
Price excluding VAT of refilling the current week's allowance at once (25% of the monthly price).
data[].seats_totalinteger | nullrequired
Founding round. How many accounts can hold this plan at the same time; null when the plan has no seat limit.
  • at least 0
data[].seats_takenintegerrequired
Seats in use: accounts with an active, past_due or incomplete subscription on the plan (a scheduled downgrade also holds its seat on the cheaper plan), plus seats held for an open plan checkout (up to an hour) and for waiting-list invitations (72 hours). One per account. A cancelled or ended subscription frees its seat; an upgrade moves it to the new plan.
  • at least 0
data[].seats_leftinteger | nullrequired
seats_total minus seats_taken, never below 0; null when the plan has no seat limit.
  • at least 0
data[].availablebooleanrequired
Whether a new subscription to the plan can start now. When false, createSubscriptionCheckout answers 409 plan_sold_out; join the waiting list with joinWaitingList.
data[].pricesobjectrequired
The plan's price and reset price in every checkout currency (owner decision 28 Sep 2026, "Region-based checkout"), excluding VAT, in the currency's minor unit (cents, pence, paise: INR 990 is 99000). EUR repeats price_cents and reset_price_cents. Stripe charges one of these, chosen from the buyer's location or fixed by the account's billing_currency; the plan, the weekly allowance and resets are the same in every currency. New currencies may appear within v1.
data[].prices.EURPlanPricerequired
data[].prices.EUR.price_centsintegerrequired
Monthly price excluding VAT, in the currency's minor unit.
  • at least 1
data[].prices.EUR.reset_price_centsintegerrequired
Price excluding VAT of a weekly allowance reset (25%, rounded), in the currency's minor unit.
  • at least 1
data[].prices.USDPlanPricerequired
data[].prices.USD.price_centsintegerrequired
Monthly price excluding VAT, in the currency's minor unit.
  • at least 1
data[].prices.USD.reset_price_centsintegerrequired
Price excluding VAT of a weekly allowance reset (25%, rounded), in the currency's minor unit.
  • at least 1
data[].prices.GBPPlanPricerequired
data[].prices.GBP.price_centsintegerrequired
Monthly price excluding VAT, in the currency's minor unit.
  • at least 1
data[].prices.GBP.reset_price_centsintegerrequired
Price excluding VAT of a weekly allowance reset (25%, rounded), in the currency's minor unit.
  • at least 1
data[].prices.INRPlanPricerequired
data[].prices.INR.price_centsintegerrequired
Monthly price excluding VAT, in the currency's minor unit.
  • at least 1
data[].prices.INR.reset_price_centsintegerrequired
Price excluding VAT of a weekly allowance reset (25%, rounded), in the currency's minor unit.
  • at least 1
data[].prices.<key>PlanPrice
data[].prices.<key>.price_centsintegerrequired
Monthly price excluding VAT, in the currency's minor unit.
  • at least 1
data[].prices.<key>.reset_price_centsintegerrequired
Price excluding VAT of a weekly allowance reset (25%, rounded), in the currency's minor unit.
  • at least 1
currenciesarray of stringrequired
The checkout currencies, EUR first (the reference: the balance, the ledger and usage are in EUR). The regions: India INR, the United Kingdom GBP, the EU, EEA and Switzerland EUR, everyone else USD. New currencies may appear within v1.
  • each item: one of "EUR", "USD", "GBP", "INR"
top_up_packsarray of TopUpPackrequired
Prepaid top-up packs, smallest first: each credits its EUR value and is sold at a rounded regional price. Buy one with createCheckoutSession and amount_cents = credit_cents. Accounts billed in EUR (or not yet fixed) can also top up any EUR amount from EUR 10.
top_up_packs[].credit_centsintegerrequired
The EUR credit the balance gets, in euro cents (1000 is EUR 10), whatever the currency paid.
top_up_packs[].pricesobjectrequired
The pack's price excluding VAT per checkout currency, in the currency's minor unit (INR 990 is 99000). New currencies may appear within v1.
  • values: integer
top_up_packs[].prices.EURintegerrequired
top_up_packs[].prices.USDintegerrequired
top_up_packs[].prices.GBPintegerrequired
top_up_packs[].prices.INRintegerrequired
top_up_packs[].prices.<key>integer
401Missing, unknown, revoked or expired credentials.

Headers: x-request-id, x-client-request-id

Error envelope. See Errors for every type and code.

403The credentials are valid but not allowed to do this (missing scope, suspended account or failed CSRF check).

Headers: x-request-id, x-client-request-id

Error envelope. See Errors for every type and code.

500An unexpected error. Any charge was refunded. Retry with the same idempotency key.

Headers: x-request-id, x-client-request-id

Error envelope. See Errors for every type and code.

503maintenance: the console's database, sign-in or payments are unavailable for a moment (for createGoogleSession also: Google sign-in is not configured, or Google's signing keys cannot be fetched). Retry after retry-after. Nothing was changed.

Headers: x-request-id, retry-after

Error envelope. See Errors for every type and code.

Examples

Illustrative values. Examples show the shape of requests and responses; the numbers in them are not measured results.

Response: The three plans with their regional prices, the founding-round seats, the standard rate and the top-up packs (docs/pricing-v3.md)

{
  "object": "list",
  "standard_unit_price_micro_cents": 100,
  "data": [
    {
      "id": "base",
      "object": "plan",
      "name": "Base",
      "price_cents": 999,
      "currency": "EUR",
      "interval": "month",
      "included_multiple": 2,
      "week_allowance_tokens": 4611000,
      "effective_unit_price_micro_cents": 50,
      "reset_price_cents": 250,
      "seats_total": 200,
      "seats_taken": 37,
      "seats_left": 163,
      "available": true,
      "prices": {
        "EUR": {
          "price_cents": 999,
          "reset_price_cents": 250
        },
        "USD": {
          "price_cents": 1199,
          "reset_price_cents": 299
        },
        "GBP": {
          "price_cents": 899,
          "reset_price_cents": 229
        },
        "INR": {
          "price_cents": 99000,
          "reset_price_cents": 24900
        }
      }
    },
    {
      "id": "hot",
      "object": "plan",
      "name": "Hot",
      "price_cents": 2400,
      "currency": "EUR",
      "interval": "month",
      "included_multiple": 5,
      "week_allowance_tokens": 27692000,
      "effective_unit_price_micro_cents": 20,
      "reset_price_cents": 600,
      "seats_total": 100,
      "seats_taken": 100,
      "seats_left": 0,
      "available": false,
      "prices": {
        "EUR": {
          "price_cents": 2400,
          "reset_price_cents": 600
        },
        "USD": {
          "price_cents": 2799,
          "reset_price_cents": 699
        },
        "GBP": {
          "price_cents": 2099,
          "reset_price_cents": 529
        },
        "INR": {
          "price_cents": 239000,
          "reset_price_cents": 59900
        }
      }
    },
    {
      "id": "fierce",
      "object": "plan",
      "name": "Fierce",
      "price_cents": 3900,
      "currency": "EUR",
      "interval": "month",
      "included_multiple": 11,
      "week_allowance_tokens": 99000000,
      "effective_unit_price_micro_cents": 9,
      "reset_price_cents": 975,
      "seats_total": 20,
      "seats_taken": 1,
      "seats_left": 19,
      "available": true,
      "prices": {
        "EUR": {
          "price_cents": 3900,
          "reset_price_cents": 975
        },
        "USD": {
          "price_cents": 4599,
          "reset_price_cents": 1149
        },
        "GBP": {
          "price_cents": 3399,
          "reset_price_cents": 849
        },
        "INR": {
          "price_cents": 389000,
          "reset_price_cents": 97900
        }
      }
    }
  ],
  "currencies": [
    "EUR",
    "USD",
    "GBP",
    "INR"
  ],
  "top_up_packs": [
    {
      "credit_cents": 1000,
      "prices": {
        "EUR": 1000,
        "USD": 1199,
        "GBP": 899,
        "INR": 99000
      }
    },
    {
      "credit_cents": 2500,
      "prices": {
        "EUR": 2500,
        "USD": 2899,
        "GBP": 2199,
        "INR": 249000
      }
    },
    {
      "credit_cents": 5000,
      "prices": {
        "EUR": 5000,
        "USD": 5799,
        "GBP": 4399,
        "INR": 495000
      }
    },
    {
      "credit_cents": 10000,
      "prices": {
        "EUR": 10000,
        "USD": 11499,
        "GBP": 8699,
        "INR": 990000
      }
    }
  ]
}