billing
Tenant usage, quota and provider-intent lifecycle.
| Method | Path | Operation ID |
|---|---|---|
| GET | /v1/billing/account |
getBillingAccount |
| GET | /v1/billing/charges |
listBillingCharges |
| POST | /v1/billing/checkout-intents |
createBillingCheckoutIntent |
| GET | /v1/billing/plans |
getBillingPlans |
| POST | /v1/billing/portal-intents |
createBillingPortalIntent |
| GET | /v1/billing/pricing |
getBillingPricing |
| POST | /v1/billing/quotes |
createBillingQuote |
| GET | /v1/billing/wallet |
getBillingWallet |
| PUT | /v1/billing/wallet/settings |
setBillingWalletSettings |
| GET | /v1/usage |
getUsage |
GET /v1/billing/account
Section titled “GET /v1/billing/account”Operation ID: getBillingAccount
Read the system-owned commercial account projection.
Authentication: Authorization: Bearer <API key or console session> (Authentication).
Responses
Section titled “Responses”| Status | Description | Body |
|---|---|---|
| 200 | Successful Response | application/json BillingAccountResponse |
| 401 | The bearer credential is missing, malformed, expired, revoked, or otherwise invalid. Clerk sessions and scoped API keys fail identically and the body never reveals which credential was presented or whether it exists. | application/json HttpErrorResponse |
| 403 | The provider deleted this identity, or the account is deactivated. A valid session cannot authorize a tombstoned identity back into use; an API key must also grant the scope required by the operation, and an operation is not classified by the route/scope policy and is denied by default. An API key restricted to client networks is refused from any other network with the API_KEY_IP_NOT_ALLOWED envelope. |
application/json HttpErrorResponse or ErrorResponse |
| 409 | Just-in-time provisioning conflicted: the verified email belongs to another provisioned account. | application/json HttpErrorResponse |
| 422 | A verified email is unavailable for account provisioning. | application/json HttpErrorResponse |
| 429 | The API key’s own request rate limit was exceeded (API_KEY_RATE_LIMITED). Only keys configured with a rate limit can receive this. Retryable after Retry-After seconds; the refused request consumed no capacity. |
application/json ErrorResponse |
| 503 | Credential verification is unavailable: Clerk session verification is not configured, no API-key pepper is enrolled, or bounded API-key verification is temporarily overloaded. Retryable. | application/json HttpErrorResponse |
200 response fields
Section titled “200 response fields”| Field | Type | Required | Description |
|---|---|---|---|
cancel_at_period_end |
boolean | yes | |
caps |
object | yes | |
current_period_end |
string or null | yes | |
current_service_period_end |
string or null | yes | |
current_service_period_start |
string or null | yes | |
id |
string | yes | |
plan |
string | yes | |
plan_display_name |
string or null | yes | |
portal_available |
boolean | yes | |
provider_customer_provisioned |
boolean | yes | |
renewal_at |
string or null | yes | |
status |
string | yes |
GET /v1/billing/charges
Section titled “GET /v1/billing/charges”Operation ID: listBillingCharges
Read immutable processing charges for explicitly enrolled tenant pricing.
Authentication: Authorization: Bearer <API key or console session> (Authentication).
Parameters
Section titled “Parameters”| Name | In | Type | Required | Description |
|---|---|---|---|---|
limit |
query | integer | no | Minimum 1. Maximum 100. Default 50. |
before |
query | string or null | no |
Responses
Section titled “Responses”| Status | Description | Body |
|---|---|---|
| 200 | Successful Response | application/json ProcessingChargesResponse |
| 401 | The bearer credential is missing, malformed, expired, revoked, or otherwise invalid. Clerk sessions and scoped API keys fail identically and the body never reveals which credential was presented or whether it exists. | application/json HttpErrorResponse |
| 403 | The provider deleted this identity, or the account is deactivated. A valid session cannot authorize a tombstoned identity back into use; an API key must also grant the scope required by the operation, and an operation is not classified by the route/scope policy and is denied by default. An API key restricted to client networks is refused from any other network with the API_KEY_IP_NOT_ALLOWED envelope. |
application/json HttpErrorResponse or ErrorResponse |
| 409 | Just-in-time provisioning conflicted: the verified email belongs to another provisioned account. | application/json HttpErrorResponse |
| 422 | The pagination limit or before identifier is invalid, or account provisioning lacks a verified email. | application/json HttpErrorResponse |
| 429 | The API key’s own request rate limit was exceeded (API_KEY_RATE_LIMITED). Only keys configured with a rate limit can receive this. Retryable after Retry-After seconds; the refused request consumed no capacity. |
application/json ErrorResponse |
| 503 | Credential verification is unavailable: Clerk session verification is not configured, no API-key pepper is enrolled, or bounded API-key verification is temporarily overloaded. Retryable. | application/json HttpErrorResponse |
200 response fields
Section titled “200 response fields”| Field | Type | Required | Description |
|---|---|---|---|
currency |
const “USD” | no | Default "USD". |
items |
array of ProcessingChargeResponse | yes | |
next_before |
string or null | yes | |
provider_charge_created |
const false | no | Default false. |
POST /v1/billing/checkout-intents
Section titled “POST /v1/billing/checkout-intents”Operation ID: createBillingCheckoutIntent
Create a short-lived provider checkout redirect intent.
Authentication: Authorization: Bearer <API key or console session> (Authentication).
Request body
Section titled “Request body”application/json: CheckoutIntentRequest (required)
| Field | Type | Required | Description |
|---|---|---|---|
amount_usd |
number or string or null | no | A wallet_top_up amount in whole cents, USD 10 to 10,000. |
cancel_url |
string | yes | |
plan |
BillingPlanId or null | no | The plan a subscription checkout buys, from GET /v1/billing/plans. Required whenever the provider returns a real checkout redirect. |
purpose |
enum | no | What the checkout buys. subscription starts a plan; wallet_top_up adds amount_usd to the prepaid wallet (the account must have opted in). One of: subscription, wallet_top_up. Default "subscription". |
success_url |
string | yes |
Responses
Section titled “Responses”| Status | Description | Body |
|---|---|---|
| 201 | Successful Response | application/json BillingIntentResponse |
| 401 | The bearer credential is missing, malformed, expired, revoked, or otherwise invalid. Clerk sessions and scoped API keys fail identically and the body never reveals which credential was presented or whether it exists. | application/json HttpErrorResponse |
| 403 | The provider deleted this identity, or the account is deactivated. A valid session cannot authorize a tombstoned identity back into use; an API key must also grant the scope required by the operation, and an operation is not classified by the route/scope policy and is denied by default. An API key restricted to client networks is refused from any other network with the API_KEY_IP_NOT_ALLOWED envelope. |
application/json HttpErrorResponse or ErrorResponse |
| 409 | Just-in-time provisioning conflicted: the verified email belongs to another provisioned account. | application/json HttpErrorResponse |
| 422 | The request failed validation, a redirect URL is not on a configured console origin (redirect_url_not_allowed), or a verified email is unavailable for account provisioning. |
application/json HttpErrorResponse |
| 429 | BILLING_INTENT_RATE_LIMITED: the account created checkout and portal sessions faster than 10 a minute. Or API_KEY_RATE_LIMITED: the API key’s own request rate limit was exceeded. Retryable after Retry-After seconds; a refused request creates nothing. |
application/json ErrorResponse |
| 502 | The configured billing provider rejected its credentials or response. | application/json HttpErrorResponse |
| 503 | Credential verification is unavailable, no production billing-provider capability is composed, the provider is temporarily unreachable, or the requested plan has no matching provider price. The stable detail distinguishes these cases. Retryable. Restore the unavailable capability before retrying. | application/json HttpErrorResponse |
201 response fields
Section titled “201 response fields”| Field | Type | Required | Description |
|---|---|---|---|
actionable |
boolean | yes | |
expires_at |
string | yes | |
id |
string | yes | |
mode |
enum | yes | One of: simulation, sandbox, provider. |
url |
string or null | yes |
GET /v1/billing/plans
Section titled “GET /v1/billing/plans”Operation ID: getBillingPlans
List the plans a checkout can buy and whether checkout is actionable.
Plans a checkout can buy, from the current catalog; a read with no provider call.
Authentication: Authorization: Bearer <API key or console session> (Authentication).
Responses
Section titled “Responses”| Status | Description | Body |
|---|---|---|
| 200 | Successful Response | application/json BillingPlansResponse |
| 401 | The bearer credential is missing, malformed, expired, revoked, or otherwise invalid. Clerk sessions and scoped API keys fail identically and the body never reveals which credential was presented or whether it exists. | application/json HttpErrorResponse |
| 403 | The provider deleted this identity, or the account is deactivated. A valid session cannot authorize a tombstoned identity back into use; an API key must also grant the scope required by the operation, and an operation is not classified by the route/scope policy and is denied by default. An API key restricted to client networks is refused from any other network with the API_KEY_IP_NOT_ALLOWED envelope. |
application/json HttpErrorResponse or ErrorResponse |
| 409 | Just-in-time provisioning conflicted: the verified email belongs to another provisioned account. | application/json HttpErrorResponse |
| 422 | A verified email is unavailable for account provisioning. | application/json HttpErrorResponse |
| 429 | The API key’s own request rate limit was exceeded (API_KEY_RATE_LIMITED). Only keys configured with a rate limit can receive this. Retryable after Retry-After seconds; the refused request consumed no capacity. |
application/json ErrorResponse |
| 503 | Credential verification is unavailable: Clerk session verification is not configured, no API-key pepper is enrolled, or bounded API-key verification is temporarily overloaded. Retryable. | application/json HttpErrorResponse |
200 response fields
Section titled “200 response fields”| Field | Type | Required | Description |
|---|---|---|---|
currency |
const “USD” | no | Default "USD". |
plans |
array of BillingPlanResponse | yes | |
pricing_version |
string | yes | |
provider_mode |
enum or null | yes | The composed billing provider: provider is live Stripe (real money), sandbox is Stripe test mode, simulation the inert local adapter, null when none is composed. |
POST /v1/billing/portal-intents
Section titled “POST /v1/billing/portal-intents”Operation ID: createBillingPortalIntent
Create a short-lived provider billing-portal redirect intent.
Authentication: Authorization: Bearer <API key or console session> (Authentication).
Request body
Section titled “Request body”application/json: PortalIntentRequest (required)
| Field | Type | Required | Description |
|---|---|---|---|
return_url |
string | yes |
Responses
Section titled “Responses”| Status | Description | Body |
|---|---|---|
| 201 | Successful Response | application/json BillingIntentResponse |
| 401 | The bearer credential is missing, malformed, expired, revoked, or otherwise invalid. Clerk sessions and scoped API keys fail identically and the body never reveals which credential was presented or whether it exists. | application/json HttpErrorResponse |
| 403 | The provider deleted this identity, or the account is deactivated. A valid session cannot authorize a tombstoned identity back into use; an API key must also grant the scope required by the operation, and an operation is not classified by the route/scope policy and is denied by default. An API key restricted to client networks is refused from any other network with the API_KEY_IP_NOT_ALLOWED envelope. |
application/json HttpErrorResponse or ErrorResponse |
| 409 | Just-in-time provisioning conflicted: the verified email belongs to another provisioned account. | application/json HttpErrorResponse |
| 422 | The request failed validation, a redirect URL is not on a configured console origin (redirect_url_not_allowed), or a verified email is unavailable for account provisioning. |
application/json HttpErrorResponse |
| 429 | BILLING_INTENT_RATE_LIMITED: the account created checkout and portal sessions faster than 10 a minute. Or API_KEY_RATE_LIMITED: the API key’s own request rate limit was exceeded. Retryable after Retry-After seconds; a refused request creates nothing. |
application/json ErrorResponse |
| 502 | The configured billing provider rejected its credentials or response. | application/json HttpErrorResponse |
| 503 | Credential verification is unavailable, no production billing-provider capability is composed, the provider is temporarily unreachable, or the requested plan has no matching provider price. The stable detail distinguishes these cases. Retryable. Restore the unavailable capability before retrying. | application/json HttpErrorResponse |
201 response fields
Section titled “201 response fields”| Field | Type | Required | Description |
|---|---|---|---|
actionable |
boolean | yes | |
expires_at |
string | yes | |
id |
string | yes | |
mode |
enum | yes | One of: simulation, sandbox, provider. |
url |
string or null | yes |
GET /v1/billing/pricing
Section titled “GET /v1/billing/pricing”Operation ID: getBillingPricing
Read the versioned USD rate catalog without activating customer billing.
Authentication: Authorization: Bearer <API key or console session> (Authentication).
Responses
Section titled “Responses”| Status | Description | Body |
|---|---|---|
| 200 | Successful Response | application/json PricingResponse |
| 401 | The bearer credential is missing, malformed, expired, revoked, or otherwise invalid. Clerk sessions and scoped API keys fail identically and the body never reveals which credential was presented or whether it exists. | application/json HttpErrorResponse |
| 403 | The provider deleted this identity, or the account is deactivated. A valid session cannot authorize a tombstoned identity back into use; an API key must also grant the scope required by the operation, and an operation is not classified by the route/scope policy and is denied by default. An API key restricted to client networks is refused from any other network with the API_KEY_IP_NOT_ALLOWED envelope. |
application/json HttpErrorResponse or ErrorResponse |
| 409 | Just-in-time provisioning conflicted: the verified email belongs to another provisioned account. | application/json HttpErrorResponse |
| 422 | A verified email is unavailable for account provisioning. | application/json HttpErrorResponse |
| 429 | The API key’s own request rate limit was exceeded (API_KEY_RATE_LIMITED). Only keys configured with a rate limit can receive this. Retryable after Retry-After seconds; the refused request consumed no capacity. |
application/json ErrorResponse |
| 503 | Credential verification is unavailable: Clerk session verification is not configured, no API-key pepper is enrolled, or bounded API-key verification is temporarily overloaded. Retryable. | application/json HttpErrorResponse |
200 response fields
Section titled “200 response fields”| Field | Type | Required | Description |
|---|---|---|---|
activation |
const “requires_explicit_tenant_enrollment” | no | Default "requires_explicit_tenant_enrollment". |
currency |
const “USD” | no | Default "USD". |
pricing_version |
string | yes | |
processing_credits_included |
const false | no | Default false. |
rates |
object | yes |
POST /v1/billing/quotes
Section titled “POST /v1/billing/quotes”Operation ID: createBillingQuote
Estimate processing from supplied facts; no payment or ledger write occurs.
Authentication: Authorization: Bearer <API key or console session> (Authentication).
Request body
Section titled “Request body”application/json: PricingQuoteRequest (required)
| Field | Type | Required | Description |
|---|---|---|---|
duration_seconds |
number or string or null | no | |
frames_per_second |
number or string or null | no | |
height |
integer or null | no | |
media_family |
enum | yes | One of: image, audio, video, document, text, model, live. |
operation |
enum | yes | One of: sign, watermark, watermark_then_sign. |
width |
integer or null | no |
Responses
Section titled “Responses”| Status | Description | Body |
|---|---|---|
| 200 | Successful Response | application/json PricingQuoteResponse |
| 401 | The bearer credential is missing, malformed, expired, revoked, or otherwise invalid. Clerk sessions and scoped API keys fail identically and the body never reveals which credential was presented or whether it exists. | application/json HttpErrorResponse |
| 403 | The provider deleted this identity, or the account is deactivated. A valid session cannot authorize a tombstoned identity back into use; an API key must also grant the scope required by the operation, and an operation is not classified by the route/scope policy and is denied by default. An API key restricted to client networks is refused from any other network with the API_KEY_IP_NOT_ALLOWED envelope. |
application/json HttpErrorResponse or ErrorResponse |
| 409 | Just-in-time provisioning conflicted: the verified email belongs to another provisioned account. | application/json HttpErrorResponse |
| 422 | Required inspected-media facts are missing, invalid, or outside the versioned pricing envelope; or account provisioning lacks a verified email. | application/json HttpErrorResponse |
| 429 | The API key’s own request rate limit was exceeded (API_KEY_RATE_LIMITED). Only keys configured with a rate limit can receive this. Retryable after Retry-After seconds; the refused request consumed no capacity. |
application/json ErrorResponse |
| 503 | Credential verification is unavailable: Clerk session verification is not configured, no API-key pepper is enrolled, or bounded API-key verification is temporarily overloaded. Retryable. | application/json HttpErrorResponse |
200 response fields
Section titled “200 response fields”| Field | Type | Required | Description |
|---|---|---|---|
currency |
const “USD” | no | Default "USD". |
estimate_only |
const true | no | Default true. |
excludes |
array of string | no | Default ["subscription","storage","egress","tax"]. |
final_facts_source |
const “server_validated_media_inspection” | no | Default "server_validated_media_inspection". |
lines |
array of PricingLineResponse | yes | |
pricing_version |
string | yes | |
total_usd |
string | yes | Pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$. |
GET /v1/billing/wallet
Section titled “GET /v1/billing/wallet”Operation ID: getBillingWallet
Read the prepaid wallet balance, settings and recent ledger.
Authentication: Authorization: Bearer <API key or console session> (Authentication).
Responses
Section titled “Responses”| Status | Description | Body |
|---|---|---|
| 200 | Successful Response | application/json WalletResponse |
| 401 | The bearer credential is missing, malformed, expired, revoked, or otherwise invalid. Clerk sessions and scoped API keys fail identically and the body never reveals which credential was presented or whether it exists. | application/json HttpErrorResponse |
| 403 | The provider deleted this identity, or the account is deactivated. A valid session cannot authorize a tombstoned identity back into use; an API key must also grant the scope required by the operation, and an operation is not classified by the route/scope policy and is denied by default. An API key restricted to client networks is refused from any other network with the API_KEY_IP_NOT_ALLOWED envelope. |
application/json HttpErrorResponse or ErrorResponse |
| 409 | Just-in-time provisioning conflicted: the verified email belongs to another provisioned account. | application/json HttpErrorResponse |
| 422 | A verified email is unavailable for account provisioning. | application/json HttpErrorResponse |
| 429 | The API key’s own request rate limit was exceeded (API_KEY_RATE_LIMITED). Only keys configured with a rate limit can receive this. Retryable after Retry-After seconds; the refused request consumed no capacity. |
application/json ErrorResponse |
| 503 | Credential verification is unavailable: Clerk session verification is not configured, no API-key pepper is enrolled, or bounded API-key verification is temporarily overloaded. Retryable. | application/json HttpErrorResponse |
200 response fields
Section titled “200 response fields”| Field | Type | Required | Description |
|---|---|---|---|
auto_recharge |
WalletAutoRecharge | yes | |
balance_usd |
string | yes | Pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$. |
currency |
const “USD” | no | Default "USD". |
enabled |
boolean | yes | Whether the account is opted into prepaid wallet billing (and not out). |
month_to_date_spend_usd |
string | yes | Pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$. |
monthly_spend_limit_usd |
string or null | yes | |
recharge_pending |
boolean | yes | |
reserved_usd |
string | yes | The quoted cost of admitted, not yet published work. New work is admitted only while its quote fits within balance_usd minus this. Pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$. |
top_up_max_usd |
string | yes | Pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$. |
top_up_min_usd |
string | yes | Pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$. |
transactions |
array of WalletTransactionResponse | yes | |
version |
integer | yes |
PUT /v1/billing/wallet/settings
Section titled “PUT /v1/billing/wallet/settings”Operation ID: setBillingWalletSettings
Opt into prepaid wallet billing or change auto-recharge and the monthly limit.
Authentication: Authorization: Bearer <API key or console session> (Authentication).
Request body
Section titled “Request body”application/json: WalletSettingsRequest (required)
| Field | Type | Required | Description |
|---|---|---|---|
auto_recharge |
WalletAutoRechargeRequest | yes | Turning auto-recharge on, or changing its threshold or amount while it is on, needs a signed-in console session; an API key with billing:write may only turn it off or leave it unchanged. |
enabled |
boolean | no | false opts the account out of wallet billing: new work is no longer admitted against the wallet and auto-recharge stops; the balance and ledger are kept. Refused while the balance is negative or admitted work is still reserved. true on an opted-out wallet opts back in. Default true. |
expected_version |
integer | yes | The wallet version last read. 0 opts the account into prepaid wallet billing, which also assigns the current rate catalog if none is assigned. Minimum 0. |
monthly_spend_limit_usd |
number or string or null | no | New work is refused once this month’s wallet charges reach it. |
Responses
Section titled “Responses”| Status | Description | Body |
|---|---|---|
| 200 | Successful Response | application/json WalletResponse |
| 401 | The bearer credential is missing, malformed, expired, revoked, or otherwise invalid. Clerk sessions and scoped API keys fail identically and the body never reveals which credential was presented or whether it exists. | application/json HttpErrorResponse |
| 403 | The provider deleted this identity, or the account is deactivated. A valid session cannot authorize a tombstoned identity back into use; an API key must also grant the scope required by the operation, and an operation is not classified by the route/scope policy and is denied by default. An API key restricted to client networks is refused from any other network with the API_KEY_IP_NOT_ALLOWED envelope. An API key is also refused opting the account into (or back into) wallet billing (wallet_opt_in_requires_console_session) and turning auto-recharge on or changing its terms (auto_recharge_requires_console_session): only a signed-in console session may make the wallet the account’s billing authority or authorize off-session card charges. |
application/json HttpErrorResponse or ErrorResponse |
| 409 | expected_version is not the wallet’s current version; read and retry (wallet_settings_version_conflict). Or an opt-out was refused while the balance is negative or admitted work is still reserved (wallet_opt_out_refused), or there is no wallet to opt out of (billing_wallet_not_enabled). |
application/json HttpErrorResponse |
| 422 | A setting is outside its bounds, or the request failed validation. | application/json HttpErrorResponse |
| 429 | The API key’s own request rate limit was exceeded (API_KEY_RATE_LIMITED). Only keys configured with a rate limit can receive this. Retryable after Retry-After seconds; the refused request consumed no capacity. |
application/json ErrorResponse |
| 503 | Credential verification is unavailable, or the wallet cannot be opted into (expected_version 0) because no billing provider is composed to fund it (billing_provider_unavailable). Retryable. |
application/json HttpErrorResponse |
200 response fields
Section titled “200 response fields”| Field | Type | Required | Description |
|---|---|---|---|
auto_recharge |
WalletAutoRecharge | yes | |
balance_usd |
string | yes | Pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$. |
currency |
const “USD” | no | Default "USD". |
enabled |
boolean | yes | Whether the account is opted into prepaid wallet billing (and not out). |
month_to_date_spend_usd |
string | yes | Pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$. |
monthly_spend_limit_usd |
string or null | yes | |
recharge_pending |
boolean | yes | |
reserved_usd |
string | yes | The quoted cost of admitted, not yet published work. New work is admitted only while its quote fits within balance_usd minus this. Pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$. |
top_up_max_usd |
string | yes | Pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$. |
top_up_min_usd |
string | yes | Pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$. |
transactions |
array of WalletTransactionResponse | yes | |
version |
integer | yes |
GET /v1/usage
Section titled “GET /v1/usage”Operation ID: getUsage
Read authoritative itemized usage and hard-cap availability.
Authentication: Authorization: Bearer <API key or console session> (Authentication).
Parameters
Section titled “Parameters”| Name | In | Type | Required | Description |
|---|---|---|---|---|
period |
query | string or null | no | |
item_limit |
query | integer | no | Minimum 1. Maximum 200. Default 50. |
Responses
Section titled “Responses”| Status | Description | Body |
|---|---|---|
| 200 | Successful Response | application/json UsageResponse |
| 401 | The bearer credential is missing, malformed, expired, revoked, or otherwise invalid. Clerk sessions and scoped API keys fail identically and the body never reveals which credential was presented or whether it exists. | application/json HttpErrorResponse |
| 403 | The provider deleted this identity, or the account is deactivated. A valid session cannot authorize a tombstoned identity back into use; an API key must also grant the scope required by the operation, and an operation is not classified by the route/scope policy and is denied by default. An API key restricted to client networks is refused from any other network with the API_KEY_IP_NOT_ALLOWED envelope. |
application/json HttpErrorResponse or ErrorResponse |
| 409 | Just-in-time provisioning conflicted: the verified email belongs to another provisioned account. | application/json HttpErrorResponse |
| 422 | A verified email is unavailable for account provisioning. | application/json HttpErrorResponse |
| 429 | The API key’s own request rate limit was exceeded (API_KEY_RATE_LIMITED). Only keys configured with a rate limit can receive this. Retryable after Retry-After seconds; the refused request consumed no capacity. |
application/json ErrorResponse |
| 503 | Credential verification is unavailable: Clerk session verification is not configured, no API-key pepper is enrolled, or bounded API-key verification is temporarily overloaded. Retryable. | application/json HttpErrorResponse |
200 response fields
Section titled “200 response fields”| Field | Type | Required | Description |
|---|---|---|---|
cost_estimate |
null | no | |
items |
array of UsageItemResponse | yes | |
meters |
array of MeterQuotaResponse | yes | |
period |
string | yes | |
pricing_version |
null | no |
