A valid request URL is required to generate request examples{
"environment": "live",
"plans": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"key": "pro",
"name": "<string>",
"description": "<string>",
"display_order": 123,
"prices": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"kind": "recurring",
"currency": "BRL",
"amount_minor": 123,
"currency_exponent": 123,
"interval_unit": "day",
"interval_count": 123,
"trial_days": 123,
"per_seat": true
}
],
"features": [
{
"feature_key": "<string>",
"name": "<string>",
"description": "<string>",
"kind": "boolean",
"unit_name": "<string>",
"limit": 123,
"unlimited": true,
"included_quantity": 123
}
]
}
]
}{
"error": {
"code": "forbidden",
"message": "your role does not allow this action"
}
}{
"error": {
"code": "forbidden",
"message": "your role does not allow this action"
}
}The pricing page's data
Everything a pricing page renders: the environment’s live plans, each with its live prices and the features it includes. What a <PricingTable/> reads, and the set of offers the customer’s own checkout (POST /v1/contact/customer/billing/checkout) will sell — the checkout refuses anything this read would not show.
Addressed by publishable key and public, in the same family as GET /v1/config/{publishable_key}: it reads, it mints nothing and it mails nobody. Nothing here is secret by construction — a pricing page is the most public page a product has. What is held back is everything that is not the offer: archived plans and prices, gateway mappings, and the operational terms of a credit feature (rollover, overdraft) — those are terms of the meter, not of the pitch.
Each price carries amount_minor with currency and currency_exponent (1000 is R$10.00 and ¥1000 — divide by 10^exponent, never by 100), trial_days (null is no trial, a different fact from zero), and per_seat (the quantity follows the team’s head count — the “per seat / month” suffix). A one_time price is a purchase rather than a subscription: the credit pack, the lifetime deal.
Cache-Control: public, max-age=60, stale-while-revalidate=600, stale-if-error=600. Short, because a repricing should show inside a minute; served stale while we are slow or failing, because a pricing page that cannot render is a storefront down.
Rate limited to 120 requests per minute per IP.
A valid request URL is required to generate request examples{
"environment": "live",
"plans": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"key": "pro",
"name": "<string>",
"description": "<string>",
"display_order": 123,
"prices": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"kind": "recurring",
"currency": "BRL",
"amount_minor": 123,
"currency_exponent": 123,
"interval_unit": "day",
"interval_count": 123,
"trial_days": 123,
"per_seat": true
}
],
"features": [
{
"feature_key": "<string>",
"name": "<string>",
"description": "<string>",
"kind": "boolean",
"unit_name": "<string>",
"limit": 123,
"unlimited": true,
"included_quantity": 123
}
]
}
]
}{
"error": {
"code": "forbidden",
"message": "your role does not allow this action"
}
}{
"error": {
"code": "forbidden",
"message": "your role does not allow this action"
}
}