Documentation menu

Billing

5 operations.

MethodEndpointDescription
GET/api/v1/billing/plansGet available subscription plans
POST/api/v1/organizations/{organizationIdOrSlug}/billing/checkoutCreate checkout session
POST/api/v1/organizations/{organizationIdOrSlug}/billing/portalCreate customer portal session
GET/api/v1/organizations/{organizationIdOrSlug}/billing/subscriptionGet organization subscription
GET/api/v1/organizations/{organizationIdOrSlug}/billing/usageGet organization billing usage

Get available subscription plans

GET /api/v1/billing/plans

Retrieve all available subscription plans.

Authentication

  • Requires an authenticated caller with the billing:read operation

Response

  • Returns a provider-neutral list of all active subscription plans
  • Plans are sorted by price (lowest first)

Responses

StatusDescriptionBody
200Response for status 200application/json — object — data: object (required)
400The request is malformed or cannot be processed.application/json — PublicApiError — error: object (required)
401Authentication failed. The Authorization header is missing, or the credential is invalid or expired.application/json — PublicApiError — error: object (required)
403Access denied. The authenticated user does not have permission to perform this action.application/json — PublicApiError — error: object (required)
404Resource not found.application/json — PublicApiError — error: object (required)
409Request conflicts with current state of the resource, including safe deployment conflict classifications.application/json — PublicApiError — error: object (required)
422Request validation failed. Check the request body, query parameters, or path parameters.application/json — PublicApiError — error: object (required)
429Too many requests. The code foreign_resource_rate_limited means the caller made too many requests for Projects outside its reach: correct the Project id instead of retrying.application/json — PublicApiError — error: object (required)
500The server could not complete the request.application/json — PublicApiError — error: object (required)
503Service temporarily unavailable (e.g. execution capacity exhausted). The response carries a Retry-After header; retry with backoff.application/json — PublicApiError — error: object (required)

Create checkout session

POST /api/v1/organizations/{organizationIdOrSlug}/billing/checkout

Create a Stripe checkout session for subscription purchase.

Authentication

  • Requires the authenticated user to have billing:manage permission
  • Public API requests use Bearer authentication; Studio uses session authentication

Request

  • planKey: The subscription plan key to purchase
  • successUrl: URL to redirect to on successful checkout
  • cancelUrl: URL to redirect to if checkout is cancelled
  • csrfToken: Required for Studio session requests; omitted for API key requests
  • Idempotency-Key: Printable retry key, scoped to this Organization and user

Response

  • Returns a checkout URL to redirect the user to Stripe
  • Return URLs may point to your own UI; use absolute HTTP or HTTPS URLs without embedded credentials

Parameters

path

NameTypeRequiredDescription
organizationIdOrSlugone of 2 typesrequiredIdentifies the organization by its stable identifier or slug. Applies to Create checkout session.

header

NameTypeRequiredDescription
Idempotency-Keystringrequired

Request body

Required — Request body for: Create checkout session.

application/json

NameTypeRequiredDescription
planKeystringrequired
successUrlstringrequired
cancelUrlstringrequired
csrfTokenstringoptionalRequired for Studio session authentication; not required for Bearer API keys.

Responses

StatusDescriptionBody
200Response for status 200application/json — object — data: object (required)
400The request is malformed or cannot be processed.application/json — PublicApiError — error: object (required)
401Authentication failed. The Authorization header is missing, or the credential is invalid or expired.application/json — PublicApiError — error: object (required)
403Access denied. The authenticated user does not have permission to perform this action.application/json — PublicApiError — error: object (required)
404Resource not found.application/json — PublicApiError — error: object (required)
409Request conflicts with current state of the resource, including safe deployment conflict classifications.application/json — PublicApiError — error: object (required)
422Request validation failed. Check the request body, query parameters, or path parameters.application/json — PublicApiError — error: object (required)
429Too many requests. The code foreign_resource_rate_limited means the caller made too many requests for Projects outside its reach: correct the Project id instead of retrying.application/json — PublicApiError — error: object (required)
500The server could not complete the request.application/json — PublicApiError — error: object (required)
503Service temporarily unavailable (e.g. execution capacity exhausted). The response carries a Retry-After header; retry with backoff.application/json — PublicApiError — error: object (required)

Create customer portal session

POST /api/v1/organizations/{organizationIdOrSlug}/billing/portal

Create a Stripe customer portal session for subscription management.

Authentication

  • Requires the authenticated user to have billing:manage permission
  • Public API requests use Bearer authentication; Studio uses session authentication

Request

  • returnUrl: URL to redirect to when leaving the portal
  • csrfToken: Required for Studio session requests; omitted for API key requests
  • Idempotency-Key: Printable retry key, scoped to this Organization and user

Response

  • Returns a portal URL to redirect the user to Stripe
  • returnUrl may point to your own UI; use an absolute HTTP or HTTPS URL without embedded credentials

Parameters

path

NameTypeRequiredDescription
organizationIdOrSlugone of 2 typesrequiredIdentifies the organization by its stable identifier or slug. Applies to Create customer portal session.

header

NameTypeRequiredDescription
Idempotency-Keystringrequired

Request body

Required — Request body for: Create customer portal session.

application/json

NameTypeRequiredDescription
returnUrlstringrequired
csrfTokenstringoptionalRequired for Studio session authentication; not required for Bearer API keys.

Responses

StatusDescriptionBody
200Response for status 200application/json — object — data: object (required)
400The request is malformed or cannot be processed.application/json — PublicApiError — error: object (required)
401Authentication failed. The Authorization header is missing, or the credential is invalid or expired.application/json — PublicApiError — error: object (required)
403Access denied. The authenticated user does not have permission to perform this action.application/json — PublicApiError — error: object (required)
404Resource not found.application/json — PublicApiError — error: object (required)
409Request conflicts with current state of the resource, including safe deployment conflict classifications.application/json — PublicApiError — error: object (required)
422Request validation failed. Check the request body, query parameters, or path parameters.application/json — PublicApiError — error: object (required)
429Too many requests. The code foreign_resource_rate_limited means the caller made too many requests for Projects outside its reach: correct the Project id instead of retrying.application/json — PublicApiError — error: object (required)
500The server could not complete the request.application/json — PublicApiError — error: object (required)
503Service temporarily unavailable (e.g. execution capacity exhausted). The response carries a Retry-After header; retry with backoff.application/json — PublicApiError — error: object (required)

Get organization subscription

GET /api/v1/organizations/{organizationIdOrSlug}/billing/subscription

Retrieve the provider-neutral subscription projection for the addressed Organization.

Parameters

path

NameTypeRequiredDescription
organizationIdOrSlugone of 2 typesrequiredIdentifies the organization by its stable identifier or slug. Applies to Get organization subscription.

Responses

StatusDescriptionBody
200Response for status 200application/json — object — data: object (required)
400The request is malformed or cannot be processed.application/json — PublicApiError — error: object (required)
401Authentication failed. The Authorization header is missing, or the credential is invalid or expired.application/json — PublicApiError — error: object (required)
403Access denied. The authenticated user does not have permission to perform this action.application/json — PublicApiError — error: object (required)
404Resource not found.application/json — PublicApiError — error: object (required)
409Request conflicts with current state of the resource, including safe deployment conflict classifications.application/json — PublicApiError — error: object (required)
422Request validation failed. Check the request body, query parameters, or path parameters.application/json — PublicApiError — error: object (required)
429Too many requests. The code foreign_resource_rate_limited means the caller made too many requests for Projects outside its reach: correct the Project id instead of retrying.application/json — PublicApiError — error: object (required)
500The server could not complete the request.application/json — PublicApiError — error: object (required)
503Service temporarily unavailable (e.g. execution capacity exhausted). The response carries a Retry-After header; retry with backoff.application/json — PublicApiError — error: object (required)

Get organization billing usage

GET /api/v1/organizations/{organizationIdOrSlug}/billing/usage

Retrieve bounded usage counters for the addressed Organization billing period.

Parameters

path

NameTypeRequiredDescription
organizationIdOrSlugone of 2 typesrequiredIdentifies the organization by its stable identifier or slug. Applies to Get organization billing usage.

Responses

StatusDescriptionBody
200Response for status 200application/json — object — data: object (required)
400The request is malformed or cannot be processed.application/json — PublicApiError — error: object (required)
401Authentication failed. The Authorization header is missing, or the credential is invalid or expired.application/json — PublicApiError — error: object (required)
403Access denied. The authenticated user does not have permission to perform this action.application/json — PublicApiError — error: object (required)
404Resource not found.application/json — PublicApiError — error: object (required)
409Request conflicts with current state of the resource, including safe deployment conflict classifications.application/json — PublicApiError — error: object (required)
422Request validation failed. Check the request body, query parameters, or path parameters.application/json — PublicApiError — error: object (required)
429Too many requests. The code foreign_resource_rate_limited means the caller made too many requests for Projects outside its reach: correct the Project id instead of retrying.application/json — PublicApiError — error: object (required)
500The server could not complete the request.application/json — PublicApiError — error: object (required)
503Service temporarily unavailable (e.g. execution capacity exhausted). The response carries a Retry-After header; retry with backoff.application/json — PublicApiError — error: object (required)