Skip to main content
The Kelviq API is available in two environments. Use the sandbox while building and testing your integration, then switch to production when you are ready to accept live payments.

Base URLs

Production

Use for live customers, production data, and real payments.

Sandbox

Use for development, integration testing, and test payments. The Core API manages resources such as products, plans, customers, subscriptions, and checkout sessions. The Edge API serves latency-sensitive features such as entitlements and promotions.
Sandbox and production are isolated. API keys and data created in one environment do not work or appear in the other.
Learn how the sandbox works →

Authentication

Kelviq uses API keys. Send your Server API Key as a Bearer token when calling the API from your backend:
Use a Client API Key for supported browser and distributed-app integrations. For example, the license activation, validation, and deactivation endpoints accept either a Client API Key or a Server API Key. Never expose a Server API Key in client-side code. Read the authentication guide →

Switching environments

For direct API calls, change the base URL and use the matching environment’s API key. Official Kelviq SDKs accept an environment option:
Omit environment or set it to production for live traffic.

Pagination

List endpoints that support pagination use the page and page_size query parameters. Pagination defaults depend on the resource: You can request fewer results by setting page_size. Values above 100 are capped at 100.
Paginated responses contain the total result count, links to adjacent pages, and the current page of results:

Filtering

Search and filter parameters vary by endpoint and can be combined with pagination when supported. Use the search query parameter for free-text search and endpoint-specific query parameters for filtering.
Consult the endpoint reference before adding a query parameter; unsupported parameters may be ignored or rejected.

Rate limits

To keep the API responsive for everyone, requests are rate limited per organization. The limit applies to all endpoints authenticated with a Server or Client API Key, and differs by environment: The limit applies to your whole organization, not to an individual API key — Server and Client API Key requests share the same quota. Sandbox and production are isolated environments, so each maintains its own limit. If you exceed the limit, the API returns a 429 Too Many Requests response with a Retry-After header indicating how many seconds to wait before retrying:
Honor the Retry-After header and back off before retrying. If your integration regularly approaches the limit, batch or cache requests where possible rather than polling.

Error handling

The API uses standard HTTP status codes and returns detailed error information in the response body.