sparka home

API reference

Account & keys

Plan, limits, usage and secret-key management.

Plan, limits and usage

GET /v1/account

Credential: Secret key (Authorization: Bearer spk_live_…)

Responses

200 Account.

200 response of GET /v1/account
FieldTypeDescription
account_id requiredstringPattern ^acct_[0-9A-HJKMNP-TV-Z]{26}$.
email requiredstringFormat email.
plan requiredstringOne of free, pro.
limits requiredobject
limits.participants_per_session requiredinteger
limits.sessions_per_month requiredinteger
limits.presentations requiredinteger
limits.concurrent_live_sessions requiredinteger
usage requiredobject
usage.sessions_this_month requiredintegerAt least 0.
usage.presentations requiredintegerAt least 0.
usage.live_sessions requiredintegerAt least 0.
usage.period_start requiredstringFormat date-time. Example 2026-10-11T18:04:05Z.
usage.resets_at requiredstringFormat date-time. Example 2026-10-11T18:04:05Z.
billing requiredobject
billing.status requiredstring | nullStripe subscription status (e.g. active, trialing, past_due, canceled), or null with no subscription.
billing.current_period_end requiredstring | nullFormat date-time.
billing.cancel_at_period_end requiredboolean
warnings requiredarray of object
warnings[].code requiredstringPresentation saves and POST /v1/validate: defaulted, long_prompt, few_options, speed_bonus_unused, ids_removed, live_session_uses_previous_version. GET /v1/account: payment_past_due (Pro stays active while Stripe retries) and secret_key_in_browser (a key was sent from a browser and refused). Clients must accept codes not listed here. One of defaulted, long_prompt, few_options, speed_bonus_unused, ids_removed, live_session_uses_previous_version, payment_past_due, secret_key_in_browser.
warnings[].pathstring
warnings[].message requiredstring

List secret keys

GET /v1/keys

Credential: Secret key (Authorization: Bearer spk_live_…)

Responses

200 Active keys.

200 response of GET /v1/keys
FieldTypeDescription
data requiredarray of object
data[].key_id requiredstringPattern ^key_[0-9A-HJKMNP-TV-Z]{26}$.
data[].name requiredstring
data[].last4 requiredstringexactly 4 chars.
data[].created_at requiredstringFormat date-time. Example 2026-10-11T18:04:05Z.
data[].last_used_at requiredstring | nullFormat date-time.

Create a secret key

POST /v1/keys

Credential: Secret key (Authorization: Bearer spk_live_…)

The secret is returned once. At most 10 active keys (402 quota_exceeded, limit: keys).

Parameters

NameInTypeDescription
Idempotency-KeyheaderstringThe first response is stored 24 h per (account, key) and replayed verbatim. Same key with a different body → 409 idempotency_conflict. 1–64 chars.

Request body

application/json

Request body of POST /v1/keys
FieldTypeDescription
name requiredstring1–40 chars.

Responses

201 Created.

201 response of POST /v1/keys
FieldTypeDescription
key_id requiredstringPattern ^key_[0-9A-HJKMNP-TV-Z]{26}$.
name requiredstring
secret_key requiredstringPattern ^spk_live_[0-9A-Za-z]{32,}$.
created_at requiredstringFormat date-time. Example 2026-10-11T18:04:05Z.
StatusError codes
400invalid_json, validation_failed (see details), invalid_request.
401missing_credentials, invalid_credentials, not_signed_in (/v1/web/*).
402quota_exceeded with limit, used, max, resets_at, upgrade_url.
403wrong_credential_type, secret_key_in_browser, csrf_failed, recent_auth_required, session_full, nickname_rejected.
409session_ended, idempotency_conflict (same key, different body; or, retryable, the first request with that key is still in progress — retry the same request in a few seconds).
429rate_limited, with retry_after_s.
500internal_error.

Revoke a secret key

DELETE /v1/keys/{key_id}

Credential: Secret key (Authorization: Bearer spk_live_…)

Takes effect within 60 seconds. A key may revoke itself, including the last one.

Parameters

NameInTypeDescription
key_id requiredpathstringPattern ^key_[0-9A-HJKMNP-TV-Z]{26}$.

Responses

200 Revoked.

200 response of DELETE /v1/keys/{key_id}
FieldTypeDescription
revoked requiredtrue
key_id requiredstringPattern ^key_[0-9A-HJKMNP-TV-Z]{26}$.