API keys
An API key lets a script, a CI job or an AI agent run checks and read results without a browser. Keys are created and revoked on Account → API keys. The free tier allows 1 active key, Starter 3, Growth 5, Agency 10.
Creating a key
- Open Account → API keys and press Create key.
- Give it a name you will recognise later, such as "CI" or "Claude Desktop".
- Copy the key now. It is shown once; afterwards only its first characters (
checkoutbeat_live_3f9c…) are visible.
Keys starting with checkoutbeat_test_ come from a test deployment and only work there.
Using a key
Send it as a bearer token:
# Run a check now (waits for the result, about a minute at most)
curl https://checkoutbeat.com/api/v1/store-check \
-H "Authorization: Bearer checkoutbeat_live_…" \
-H "Content-Type: application/json" \
-d '{"storeUrl": "https://your-store.com"}'
# Your monitored stores, and the last 48 results of one of them
curl https://checkoutbeat.com/api/v1/stores -H "Authorization: Bearer checkoutbeat_live_…"
curl https://checkoutbeat.com/api/v1/stores/<id>/results -H "Authorization: Bearer checkoutbeat_live_…"
X-API-Key: <key> works as well. Every completed on-demand check counts one result against the account's monthly allowance, the same allowance the dashboard button uses; reading stores and results is free. The response's usage object tells you how many on-demand checks remain. Send an Idempotency-Key header to make a retried request return the same check instead of running another. The full reference is the OpenAPI document at /api/v1/openapi.json.
Rate limits
60 requests per minute per key by default. The X-RateLimit-Limit, X-RateLimit-Remaining and X-RateLimit-Reset headers are on every response; a 429 includes Retry-After in seconds.
Revoking a key
Press Revoke next to the key. Requests with a revoked key get HTTP 401 immediately. Revoke and recreate a key if it was ever pasted somewhere public.
Errors
Every error is JSON: {"error": {"code": "...", "message": "..."}}. Codes: unauthorized (401), invalid_input (400, with details; also when a store cannot be walked automatically), forbidden (403, a plan limit), not_found (404), payment_required (402, allowance used up), rate_limited (429), internal (500, retry with backoff).