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 200
application/json
object
  • data (required): object
400The request is malformed or cannot be processed.
application/json
PublicApiError
  • error (required): object
401Authentication failed. Possible reasons: - Authorization header is not provided - Invalid API key - Session expired
application/json
PublicApiError
  • error (required): object
403Access denied. The authenticated user does not have permission to perform this action.
application/json
PublicApiError
  • error (required): object
422Request validation failed. Check the request body, query parameters, or path parameters.
application/json
PublicApiError
  • error (required): object
500The server could not complete the request.
application/json
PublicApiError
  • error (required): object

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 must be exact Studio billing or pricing destinations

Parameters

path

NameTypeRequiredDescription
organizationIdOrSlugstringrequiredIdentifies 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 200
application/json
object
  • data (required): object
400Response for status 400
application/json
PublicApiError
  • error (required): object
401Authentication failed. Possible reasons: - Authorization header is not provided - Invalid API key - Session expired
application/json
PublicApiError
  • error (required): object
403Access denied. The authenticated user does not have permission to perform this action.
application/json
PublicApiError
  • error (required): object
404Resource not found.
application/json
PublicApiError
  • error (required): object
422Request validation failed. Check the request body, query parameters, or path parameters.
application/json
PublicApiError
  • error (required): object
429Rate limited by an upstream dependency. Retry after the Retry-After interval.
application/json
PublicApiError
  • error (required): object
500The server could not complete the request.
application/json
PublicApiError
  • error (required): object
503Service temporarily unavailable (e.g. execution capacity exhausted). The response carries a Retry-After header; retry with backoff.
application/json
PublicApiError
  • error (required): object

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 must be an exact Studio billing or pricing destination

Parameters

path

NameTypeRequiredDescription
organizationIdOrSlugstringrequiredIdentifies 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 200
application/json
object
  • data (required): object
400Response for status 400
application/json
PublicApiError
  • error (required): object
401Authentication failed. Possible reasons: - Authorization header is not provided - Invalid API key - Session expired
application/json
PublicApiError
  • error (required): object
403Access denied. The authenticated user does not have permission to perform this action.
application/json
PublicApiError
  • error (required): object
404Resource not found.
application/json
PublicApiError
  • error (required): object
422Request validation failed. Check the request body, query parameters, or path parameters.
application/json
PublicApiError
  • error (required): object
429Rate limited by an upstream dependency. Retry after the Retry-After interval.
application/json
PublicApiError
  • error (required): object
500The server could not complete the request.
application/json
PublicApiError
  • error (required): object
503Service temporarily unavailable (e.g. execution capacity exhausted). The response carries a Retry-After header; retry with backoff.
application/json
PublicApiError
  • error (required): object

Get organization subscription

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

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

Parameters

path

NameTypeRequiredDescription
organizationIdOrSlugstringrequiredIdentifies the organization by its stable identifier or slug. Applies to Get organization subscription.

Responses

StatusDescriptionBody
200Response for status 200
application/json
object
  • data (required): object
400The request is malformed or cannot be processed.
application/json
PublicApiError
  • error (required): object
401Authentication failed. Possible reasons: - Authorization header is not provided - Invalid API key - Session expired
application/json
PublicApiError
  • error (required): object
403Access denied. The authenticated user does not have permission to perform this action.
application/json
PublicApiError
  • error (required): object
404Resource not found.
application/json
PublicApiError
  • error (required): object
422Request validation failed. Check the request body, query parameters, or path parameters.
application/json
PublicApiError
  • error (required): object
500The server could not complete the request.
application/json
PublicApiError
  • error (required): object

Get organization billing usage

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

Retrieve bounded usage counters for the addressed Organization billing period.

Parameters

path

NameTypeRequiredDescription
organizationIdOrSlugstringrequiredIdentifies the organization by its stable identifier or slug. Applies to Get organization billing usage.

Responses

StatusDescriptionBody
200Response for status 200
application/json
object
  • data (required): object
400The request is malformed or cannot be processed.
application/json
PublicApiError
  • error (required): object
401Authentication failed. Possible reasons: - Authorization header is not provided - Invalid API key - Session expired
application/json
PublicApiError
  • error (required): object
403Access denied. The authenticated user does not have permission to perform this action.
application/json
PublicApiError
  • error (required): object
404Resource not found.
application/json
PublicApiError
  • error (required): object
422Request validation failed. Check the request body, query parameters, or path parameters.
application/json
PublicApiError
  • error (required): object
500The server could not complete the request.
application/json
PublicApiError
  • error (required): object