quotastack Docs
Docs / API / Account & provisioning

Account & provisioning

Sign up, get an API key, set your webhook URL, go live. Dashboard session, not your API key.

These calls use your dashboard session, not your API key. Your application does not call them. You call them once, while setting QuotaStack up.

You will normally do all of this in the dashboard. The calls are written down here so you can automate the setup instead, if you would rather.

Nine of them are yours. Sign up, confirm your email, make and revoke API keys, read and change your tenant settings, and rotate your webhook signing secret.

Five of them belong to QuotaStack. Those approve, refuse, or pause your access to the live environment. Your key cannot call them, whatever it holds.

Every other page in this reference is the product API, which your application does call, with your API key.

0 of 14 operations documented in full.

Start public self-serve signup.

POST/v1/admin/auth/signup
Idempotency-KeyRequired. Returns 422 without it.
EnvironmentSandbox and Live
AuthDashboard session
Fires No webhooks.
Not yet documented in full. The fields below come straight from the API spec. Try it in the explorer.
Header parameters
FieldTypeMeaning
Idempotency-Keyrequiredstring

Required idempotency key for this mutating admin/public operation. Reusing the same key with a different body returns 409 Conflict; successful 2xx and client 4xx responses are cached for 24 hours.

Body parameters
FieldTypeMeaning
namerequiredstring
emailrequiredstring (email)
passwordrequiredstring
company_namerequiredstring
captcha_tokenoptionalstring
Response fields
FieldTypeMeaning
messagerequiredstring

Errors

  • 400Malformed request.
  • 409State conflict (e.g., duplicate resource, stale version).
  • 422Request shape was valid but field validation failed.

Verify signup email and create an admin session.

POST/v1/admin/auth/verify-email
Idempotency-KeyNot required for this operation.
EnvironmentSandbox and Live
AuthDashboard session
Fires No webhooks.
Not yet documented in full. The fields below come straight from the API spec. Try it in the explorer.
Body parameters
FieldTypeMeaning
tokenrequiredstring
Response fields
FieldTypeMeaning
userrequiredobject
tenantrequiredobject
tokenrequiredstring

Errors

  • 400Malformed request.

Resend signup email verification when available.

POST/v1/admin/auth/resend-verification
Idempotency-KeyRequired. Returns 422 without it.
EnvironmentSandbox and Live
AuthDashboard session
Fires No webhooks.
Not yet documented in full. The fields below come straight from the API spec. Try it in the explorer.
Header parameters
FieldTypeMeaning
Idempotency-Keyrequiredstring

Required idempotency key for this mutating admin/public operation. Reusing the same key with a different body returns 409 Conflict; successful 2xx and client 4xx responses are cached for 24 hours.

Body parameters
FieldTypeMeaning
emailrequiredstring (email)
Response fields
FieldTypeMeaning
messagerequiredstring

Errors

  • 409State conflict (e.g., duplicate resource, stale version).
  • 422Request shape was valid but field validation failed.

List the tenant's API keys.

GET/v1/admin/api-keys
Idempotency-KeyNot used. This is a read.
EnvironmentSandbox and Live
AuthDashboard session
Fires No webhooks.
Not yet documented in full. The fields below come straight from the API spec. Try it in the explorer.
Response fields
FieldTypeMeaning
dataoptionalarray

Errors

  • 401Missing or invalid authentication.

Create a tenant API key from the admin dashboard.

POST/v1/admin/api-keys
Idempotency-KeyRequired. Returns 422 without it.
EnvironmentSandbox and Live
AuthDashboard session
Fires No webhooks.
Not yet documented in full. The fields below come straight from the API spec. Try it in the explorer.
Header parameters
FieldTypeMeaning
Idempotency-Keyrequiredstring

Required idempotency key for this mutating admin/public operation. Reusing the same key with a different body returns 409 Conflict; successful 2xx and client 4xx responses are cached for 24 hours.

Body parameters
FieldTypeMeaning
environmentrequiredstring
  • live
  • sandbox

Which environment this resource lives in. Determined by the API key prefix used (qs_live_… → live, qs_test_… → sandbox).

nameoptionalstring
scopesoptionalarray
Response fields
FieldTypeMeaning
idoptionalstring (uuid)
tenant_idoptionalstring (uuid)
environmentoptionalstring
  • live
  • sandbox

Which environment this resource lives in. Determined by the API key prefix used (qs_live_… → live, qs_test_… → sandbox).

key_prefixoptionalstring
nameoptionalstring
scopesoptionalarray
created_atoptionalstring (date-time)
keyoptionalstring

Errors

  • 403Authenticated but not permitted (insufficient scope).
  • 409State conflict (e.g., duplicate resource, stale version).
  • 422Request shape was valid but field validation failed.

Revoke a tenant API key from the admin dashboard.

POST/v1/admin/api-keys/{id}/revoke
Idempotency-KeyRequired. Returns 422 without it.
EnvironmentSandbox and Live
AuthDashboard session
Fires No webhooks.
Not yet documented in full. The fields below come straight from the API spec. Try it in the explorer.
Header parameters
FieldTypeMeaning
Idempotency-Keyrequiredstring

Required idempotency key for this mutating admin/public operation. Reusing the same key with a different body returns 409 Conflict; successful 2xx and client 4xx responses are cached for 24 hours.

Path parameters
FieldTypeMeaning
idrequiredstring (uuid)

Errors

  • 403Authenticated but not permitted (insufficient scope).
  • 404Resource not found.
  • 409State conflict (e.g., duplicate resource, stale version).
  • 422Request shape was valid but field validation failed.

Read the tenant's configuration.

GET/v1/admin/tenants/{tenant_id}/config
Idempotency-KeyNot used. This is a read.
EnvironmentSandbox and Live
AuthDashboard session
Fires No webhooks.
Not yet documented in full. The fields below come straight from the API spec. Try it in the explorer.
Path parameters
FieldTypeMeaning
tenant_idrequiredstring (uuid)
Response fields
FieldTypeMeaning
tenant_idoptionalstring (uuid)
webhook_urloptionalstring
webhook_secret_setoptionalboolean

True when a webhook signing secret exists for this tenant. The secret itself is never returned here. To get a secret, call POST /v1/admin/tenants/{tenant_id}/webhook-secret/rotate. That endpoint returns the new secret one time.

overage_policyoptionalstring
  • block
  • allow
  • notify
default_currencyoptionalstring
timezoneoptionalstring
data_regionoptionalstring
low_balance_threshold_mcoptionalinteger (int64)0–∞

Default threshold (millicredits) for credit.low_balance webhooks. 0 (default) disables low_balance for customers that inherit this value. Per-customer override via Customer.low_balance_threshold_mc. credit.exhausted is always on and ignores this field.

credit_expiring_soon_hoursoptionalinteger0–8760

Lead time in hours for credit.expiring_soon webhooks (per credit block). 0 (default) disables the alert. Recommended: 72 for packs / annual grants. Maximum: 8760 (1 year). No per-customer override in Phase 1.

updated_atoptionalstring (date-time)

Errors

  • 401Missing or invalid authentication.
  • 403Authenticated but not permitted (insufficient scope).
  • 404Resource not found.

Update the tenant's configuration (partial).

PATCH/v1/admin/tenants/{tenant_id}/config
Idempotency-KeyRequired. Returns 422 without it.
EnvironmentSandbox and Live
AuthDashboard session
Fires No webhooks.
Not yet documented in full. The fields below come straight from the API spec. Try it in the explorer.
Header parameters
FieldTypeMeaning
Idempotency-Keyrequiredstring

Required idempotency key for this mutating admin/public operation. Reusing the same key with a different body returns 409 Conflict; successful 2xx and client 4xx responses are cached for 24 hours.

Path parameters
FieldTypeMeaning
tenant_idrequiredstring (uuid)
Body parameters
FieldTypeMeaning
webhook_urloptionalstring
overage_policyoptionalstring
  • block
  • allow
  • notify
default_currencyoptionalstring
timezoneoptionalstring

IANA timezone name.

low_balance_threshold_mcoptionalinteger (int64)0–∞

Millicredits. 0 = low_balance alerts off (default).

credit_expiring_soon_hoursoptionalinteger0–8760

Hours before expires_at to emit credit.expiring_soon (0 = off). Recommended: 72. Maximum: 8760 (1 year).

Response fields
FieldTypeMeaning
tenant_idoptionalstring (uuid)
webhook_urloptionalstring
webhook_secret_setoptionalboolean

True when a webhook signing secret exists for this tenant. The secret itself is never returned here. To get a secret, call POST /v1/admin/tenants/{tenant_id}/webhook-secret/rotate. That endpoint returns the new secret one time.

overage_policyoptionalstring
  • block
  • allow
  • notify
default_currencyoptionalstring
timezoneoptionalstring
data_regionoptionalstring
low_balance_threshold_mcoptionalinteger (int64)0–∞

Default threshold (millicredits) for credit.low_balance webhooks. 0 (default) disables low_balance for customers that inherit this value. Per-customer override via Customer.low_balance_threshold_mc. credit.exhausted is always on and ignores this field.

credit_expiring_soon_hoursoptionalinteger0–8760

Lead time in hours for credit.expiring_soon webhooks (per credit block). 0 (default) disables the alert. Recommended: 72 for packs / annual grants. Maximum: 8760 (1 year). No per-customer override in Phase 1.

updated_atoptionalstring (date-time)

Errors

  • 401Missing or invalid authentication.
  • 403Authenticated but not permitted (insufficient scope).
  • 404Resource not found.
  • 409State conflict (e.g., duplicate resource, stale version).
  • 422Request shape was valid but field validation failed.

Rotate the tenant's webhook signing secret.

POST/v1/admin/tenants/{tenant_id}/webhook-secret/rotate
Idempotency-KeyRequired. Returns 422 without it.
EnvironmentSandbox and Live
AuthDashboard session
Fires No webhooks.
Not yet documented in full. The fields below come straight from the API spec. Try it in the explorer.
Header parameters
FieldTypeMeaning
Idempotency-Keyrequiredstring

Required idempotency key for this mutating admin/public operation. Reusing the same key with a different body returns 409 Conflict; successful 2xx and client 4xx responses are cached for 24 hours.

Path parameters
FieldTypeMeaning
tenant_idrequiredstring (uuid)
Response fields
FieldTypeMeaning
webhook_secretrequiredstring

New base64 signing secret. Store it now — it is not shown again.

Errors

  • 401Missing or invalid authentication.
  • 403Authenticated but not permitted (insufficient scope).
  • 404Resource not found.
  • 409State conflict (e.g., duplicate resource, stale version).
  • 422Request shape was valid but field validation failed.

Approve live access for a tenant.

POST/v1/tenants/{id}/live-access/approve
Idempotency-KeyRequired. Returns 422 without it.
EnvironmentSandbox and Live
AuthDashboard session
Fires No webhooks.
Not yet documented in full. The fields below come straight from the API spec. Try it in the explorer.
Header parameters
FieldTypeMeaning
Idempotency-Keyrequiredstring

Required idempotency key for this mutating admin/public operation. Reusing the same key with a different body returns 409 Conflict; successful 2xx and client 4xx responses are cached for 24 hours.

Path parameters
FieldTypeMeaning
idrequiredstring (uuid)

QuotaStack tenant UUID.

Response fields
FieldTypeMeaning
tenant_idrequiredstring (uuid)
live_access_statusrequiredstring
reviewed_atoptionalstring (date-time)

Errors

  • 403Authenticated but not permitted (insufficient scope).
  • 404Resource not found.
  • 409State conflict (e.g., duplicate resource, stale version).

Reject live access for a tenant.

POST/v1/tenants/{id}/live-access/reject
Idempotency-KeyRequired. Returns 422 without it.
EnvironmentSandbox and Live
AuthDashboard session
Fires No webhooks.
Not yet documented in full. The fields below come straight from the API spec. Try it in the explorer.
Header parameters
FieldTypeMeaning
Idempotency-Keyrequiredstring

Required idempotency key for this mutating admin/public operation. Reusing the same key with a different body returns 409 Conflict; successful 2xx and client 4xx responses are cached for 24 hours.

Path parameters
FieldTypeMeaning
idrequiredstring (uuid)

QuotaStack tenant UUID.

Body parameters
FieldTypeMeaning
reasonrequiredstring
Response fields
FieldTypeMeaning
tenant_idrequiredstring (uuid)
live_access_statusrequiredstring

Errors

  • 403Authenticated but not permitted (insufficient scope).
  • 404Resource not found.
  • 409State conflict (e.g., duplicate resource, stale version).

Suspend live access for a tenant.

POST/v1/tenants/{id}/live-access/suspend
Idempotency-KeyRequired. Returns 422 without it.
EnvironmentSandbox and Live
AuthDashboard session
Fires No webhooks.
Not yet documented in full. The fields below come straight from the API spec. Try it in the explorer.
Header parameters
FieldTypeMeaning
Idempotency-Keyrequiredstring

Required idempotency key for this mutating admin/public operation. Reusing the same key with a different body returns 409 Conflict; successful 2xx and client 4xx responses are cached for 24 hours.

Path parameters
FieldTypeMeaning
idrequiredstring (uuid)

QuotaStack tenant UUID.

Body parameters
FieldTypeMeaning
reasonrequiredstring
Response fields
FieldTypeMeaning
tenant_idrequiredstring (uuid)
live_access_statusrequiredstring

Errors

  • 403Authenticated but not permitted (insufficient scope).
  • 404Resource not found.
  • 409State conflict (e.g., duplicate resource, stale version).

Suspend sandbox access for a tenant.

POST/v1/tenants/{id}/sandbox-access/suspend
Idempotency-KeyRequired. Returns 422 without it.
EnvironmentSandbox and Live
AuthDashboard session
Fires No webhooks.
Not yet documented in full. The fields below come straight from the API spec. Try it in the explorer.
Header parameters
FieldTypeMeaning
Idempotency-Keyrequiredstring

Required idempotency key for this mutating admin/public operation. Reusing the same key with a different body returns 409 Conflict; successful 2xx and client 4xx responses are cached for 24 hours.

Path parameters
FieldTypeMeaning
idrequiredstring (uuid)

QuotaStack tenant UUID.

Body parameters
FieldTypeMeaning
reasonrequiredstring
Response fields
FieldTypeMeaning
tenant_idrequiredstring (uuid)
sandbox_access_statusrequiredstring

Errors

  • 403Authenticated but not permitted (insufficient scope).
  • 404Resource not found.
  • 409State conflict (e.g., duplicate resource, stale version).

Enable sandbox access for a tenant.

POST/v1/tenants/{id}/sandbox-access/enable
Idempotency-KeyRequired. Returns 422 without it.
EnvironmentSandbox and Live
AuthDashboard session
Fires No webhooks.
Not yet documented in full. The fields below come straight from the API spec. Try it in the explorer.
Header parameters
FieldTypeMeaning
Idempotency-Keyrequiredstring

Required idempotency key for this mutating admin/public operation. Reusing the same key with a different body returns 409 Conflict; successful 2xx and client 4xx responses are cached for 24 hours.

Path parameters
FieldTypeMeaning
idrequiredstring (uuid)

QuotaStack tenant UUID.

Response fields
FieldTypeMeaning
tenant_idrequiredstring (uuid)
sandbox_access_statusrequiredstring

Errors

  • 403Authenticated but not permitted (insufficient scope).
  • 404Resource not found.
  • 409State conflict (e.g., duplicate resource, stale version).