Skip to content

Set how many of one status page extra the account holds.

POST
/billing/status-page-extras
curl --request POST \
--url https://api.siteqwality.com/billing/status-page-extras \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{ "pack_id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "billing_interval": "example", "idempotency_key": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "quantity": 1, "proration_date": 1 }'
Media type application/json
object
pack_id
required
string format: uuid
billing_interval
required

"month" or "year"; must match the rest of the subscription.

string
idempotency_key
required

Client-generated, stable across retries of one confirm attempt.

string format: uuid
quantity
required

Units to hold, 0 to 100. Zero removes the extra at the end of the period.

integer format: int64
proration_date
One of:

From the quote. Required when the quantity goes up on a live plan.

integer format: int64
Example generated
{
"pack_id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0",
"billing_interval": "example",
"idempotency_key": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0",
"quantity": 1,
"proration_date": 1
}

Extra bought or increased (now, once paid), reduction scheduled for period end, or payment required

Media type application/json
object
success
required

Retained for symmetry with change-plan, whose older clients read it.

boolean
status
required

The same statuses as change-plan: "updated" when the change is live, "requires_payment" when the customer must confirm a payment first, "scheduled" for a cheaper tier (applied at effective_at), and "scheduled_change_cancelled" when re-picking the current tier canceled a scheduled change.

string
client_secret
string | null
stripe_subscription_id
string | null
effective_at

For scheduled: when the change takes effect.

string | null format: date-time
customer_session_client_secret

For requires_payment: lets the payment sheet offer the saved cards.

string | null
Example generated
{
"success": true,
"status": "example",
"client_secret": "example",
"stripe_subscription_id": "example",
"effective_at": "2026-04-15T12:00:00Z",
"customer_session_client_secret": "example"
}

Invalid interval or quantity, unknown pack, not a status page extra, off sale, or already held

Missing or invalid authentication

Caller is not a super admin

The subscription is set to end, money is outstanding, the interval differs, or no Stripe customer

Internal server error