API reference, Plans
The plans and their founding-round seats (no key needed)
GET/v1/plansoperation id listPublicPlans
The same list as listPlans, readable without an API key or a console session, so a website can show the
prices and how many founding-round seats are left. Prices and seats only, never account data. Seat counts are
at most 10 seconds old. Readable from any origin (CORS *, no credentials); at most 120 requests a minute per
client address.
Authentication. None. This route is public.
Parameters
x-client-request-idheader ยท stringinvalid_header.1 to 128 characterspattern ^[\x21-\x7E]+$
Responses
200The plans, cheapest first, with their seats.
Headers: x-request-id, x-client-request-id
objectstringrequiredalways "list"
standard_unit_price_micro_centsintegerrequireddataarray of Planrequireddata[].idPlanIdrequiredone of "base", "hot", "fierce"
data[].objectstringrequiredalways "plan"
data[].namestringrequireddata[].price_centsintegerrequireddata[].currencystringrequiredalways "EUR"
data[].intervalstringrequiredalways "month"
data[].included_multipleintegerrequireddata[].week_allowance_tokensintegerrequiredformat int64
data[].effective_unit_price_micro_centsintegerrequireddata[].reset_price_centsintegerrequireddata[].seats_totalinteger | nullrequiredat least 0
data[].seats_takenintegerrequiredat least 0
data[].seats_leftinteger | nullrequiredseats_total minus seats_taken, never below 0; null when the plan has no seat limit.at least 0
data[].availablebooleanrequiredcreateSubscriptionCheckout answers 409 plan_sold_out; join the waiting list with joinWaitingList.data[].pricesobjectrequiredprice_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.EURPlanPricerequireddata[].prices.EUR.price_centsintegerrequiredat least 1
data[].prices.EUR.reset_price_centsintegerrequiredat least 1
data[].prices.USDPlanPricerequireddata[].prices.USD.price_centsintegerrequiredat least 1
data[].prices.USD.reset_price_centsintegerrequiredat least 1
data[].prices.GBPPlanPricerequireddata[].prices.GBP.price_centsintegerrequiredat least 1
data[].prices.GBP.reset_price_centsintegerrequiredat least 1
data[].prices.INRPlanPricerequireddata[].prices.INR.price_centsintegerrequiredat least 1
data[].prices.INR.reset_price_centsintegerrequiredat least 1
data[].prices.<key>PlanPricedata[].prices.<key>.price_centsintegerrequiredat least 1
data[].prices.<key>.reset_price_centsintegerrequiredat least 1
currenciesarray of stringrequiredeach item: one of "EUR", "USD", "GBP", "INR"
top_up_packsarray of TopUpPackrequiredcreateCheckoutSession 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_centsintegerrequiredtop_up_packs[].pricesobjectrequiredvalues: integer
top_up_packs[].prices.EURintegerrequiredtop_up_packs[].prices.USDintegerrequiredtop_up_packs[].prices.GBPintegerrequiredtop_up_packs[].prices.INRintegerrequiredtop_up_packs[].prices.<key>integer400The request could not be read. Codes: invalid_json (not JSON, not UTF-8, or a \u escape that is half of a
surrogate pair, such as "\ud800" without its low half), duplicate_key (a JSON object
repeats a key; param is the JSON pointer of the repeated member, such as /questions/q1/options/a),
unsupported_media_type (not application/json) and invalid_header (a malformed idempotency-key or
x-client-request-id; param names the header).
Headers: x-request-id, x-client-request-id
Error envelope. See Errors for every type and code.
429A rate limit or quota is exhausted. Retry after the given number of seconds. For test_daily_quota that is
the time until 00:00 UTC; clients should not retry it automatically.
Headers: x-request-id, x-client-request-id, retry-after, ratelimit-policy, ratelimit
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.
Example request
curl "https://api.thinqit.ai/v1/plans" \
-H "authorization: Bearer $DEX_API_KEY"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
}
}
]
}