Change between Pro and Scale
POST /v1/dashboard/billing/change
Moves the subscription of the account to the other paid plan. To Scale from Pro at once, the difference paid pro rata on an invoice now. To Pro from Scale on the first of the next month, with a subscription schedule: until then the account stays on Scale, and the move can be cancelled with POST /v1/dashboard/billing/change/cancel. The subscription must be active, and a subscription set to end at the end of the period is not moved to Pro.
Authorizations
Section titled “Authorizations ”Request Body required
Section titled “Request Body required ”object
The plan to move to: scale from Pro applies at once, pro rata; pro from Scale on the first of the next month.
Responses
Section titled “ Responses ”Success.
object
The plan the subscription is on, or will be on, after the change.
now for a move up (paid pro rata on an invoice now) or a scheduled move cancelled; period_end for a move down; pending_payment for a move up whose invoice was not paid: it applies once that invoice is paid (payment_url), and is discarded by Stripe after about a day.
When the change applies; null while it waits for its payment.
Example
2026-09-08T07:00:00ZThe Stripe page of the invoice to pay, for pending_payment; null otherwise.
Headers
Section titled “Headers ”Identifier of this request. Quote it to support.
The API version this response was produced with.
Requests this key may have in flight at one instant: the burst of its policy.
Requests this key may still make right now, as a whole number.
Whole seconds until RateLimit-Remaining is back at RateLimit-Limit.
unavailable when no limit could be applied to this request, because the store that holds the counters did not answer. The three counters are then absent and the request was served.
Error codes: invalid_body, parameter_invalid, parameter_missing, unsupported_api_version.
object
object
Machine readable code. The set is per operation; each response below lists the ones it can produce.
The field or header the error is about, when there is one.
What to do next, when there is one thing to do. Present on the errors that are about the state of the deployment rather than about the request.
Headers
Section titled “Headers ”Identifier of this request. Quote it to support.
The API version this response was produced with.
Requests this key may have in flight at one instant: the burst of its policy.
Requests this key may still make right now, as a whole number.
Whole seconds until RateLimit-Remaining is back at RateLimit-Limit.
unavailable when no limit could be applied to this request, because the store that holds the counters did not answer. The three counters are then absent and the request was served.
Error codes: dashboard_session_invalid.
object
object
Machine readable code. The set is per operation; each response below lists the ones it can produce.
The field or header the error is about, when there is one.
What to do next, when there is one thing to do. Present on the errors that are about the state of the deployment rather than about the request.
Headers
Section titled “Headers ”Identifier of this request. Quote it to support.
The API version this response was produced with.
Requests this key may have in flight at one instant: the burst of its policy.
Requests this key may still make right now, as a whole number.
Whole seconds until RateLimit-Remaining is back at RateLimit-Limit.
unavailable when no limit could be applied to this request, because the store that holds the counters did not answer. The three counters are then absent and the request was served.
Error codes: billing_subscription_missing, plan_change_refused, plan_is_contract.
object
object
Machine readable code. The set is per operation; each response below lists the ones it can produce.
The field or header the error is about, when there is one.
What to do next, when there is one thing to do. Present on the errors that are about the state of the deployment rather than about the request.
Headers
Section titled “Headers ”Identifier of this request. Quote it to support.
The API version this response was produced with.
Requests this key may have in flight at one instant: the burst of its policy.
Requests this key may still make right now, as a whole number.
Whole seconds until RateLimit-Remaining is back at RateLimit-Limit.
unavailable when no limit could be applied to this request, because the store that holds the counters did not answer. The three counters are then absent and the request was served.
Error codes: rate_limited.
object
object
Machine readable code. The set is per operation; each response below lists the ones it can produce.
The field or header the error is about, when there is one.
What to do next, when there is one thing to do. Present on the errors that are about the state of the deployment rather than about the request.
Headers
Section titled “Headers ”Identifier of this request. Quote it to support.
The API version this response was produced with.
Requests this key may have in flight at one instant: the burst of its policy.
Requests this key may still make right now, as a whole number.
Whole seconds until RateLimit-Remaining is back at RateLimit-Limit.
unavailable when no limit could be applied to this request, because the store that holds the counters did not answer. The three counters are then absent and the request was served.
Whole seconds to wait before sending this request again. At least 1.
Error codes: internal_error.
object
object
Machine readable code. The set is per operation; each response below lists the ones it can produce.
The field or header the error is about, when there is one.
What to do next, when there is one thing to do. Present on the errors that are about the state of the deployment rather than about the request.
Headers
Section titled “Headers ”Identifier of this request. Quote it to support.
The API version this response was produced with.
Requests this key may have in flight at one instant: the burst of its policy.
Requests this key may still make right now, as a whole number.
Whole seconds until RateLimit-Remaining is back at RateLimit-Limit.
unavailable when no limit could be applied to this request, because the store that holds the counters did not answer. The three counters are then absent and the request was served.
Error codes: billing_provider_error, billing_unreachable.
object
object
Machine readable code. The set is per operation; each response below lists the ones it can produce.
The field or header the error is about, when there is one.
What to do next, when there is one thing to do. Present on the errors that are about the state of the deployment rather than about the request.
Headers
Section titled “Headers ”Identifier of this request. Quote it to support.
The API version this response was produced with.
Requests this key may have in flight at one instant: the burst of its policy.
Requests this key may still make right now, as a whole number.
Whole seconds until RateLimit-Remaining is back at RateLimit-Limit.
unavailable when no limit could be applied to this request, because the store that holds the counters did not answer. The three counters are then absent and the request was served.
Error codes: billing_not_configured.
object
object
Machine readable code. The set is per operation; each response below lists the ones it can produce.
The field or header the error is about, when there is one.
What to do next, when there is one thing to do. Present on the errors that are about the state of the deployment rather than about the request.
Headers
Section titled “Headers ”Identifier of this request. Quote it to support.
The API version this response was produced with.
Requests this key may have in flight at one instant: the burst of its policy.
Requests this key may still make right now, as a whole number.
Whole seconds until RateLimit-Remaining is back at RateLimit-Limit.
unavailable when no limit could be applied to this request, because the store that holds the counters did not answer. The three counters are then absent and the request was served.