Developers
Authentication
Use the API without a key, or create a free key for a bigger allowance.
Without a key
Every read endpoint works without a key, up to 60 requests an hour per IP address. That is enough to try things out or check a game now and then.
API keys
Create keys on Account, Developer. A key starts with cck_ and is shown once, when you create it. CCUCheck keeps only a fingerprint of it, so it cannot show it to you again: copy it somewhere safe. If you lose a key, revoke it and make a new one.
- Free accounts: up to 3 keys and 1,000 requests a day.
- Pro: up to 10 keys, 20,000 requests a day and full history.
- A key always gets its account's current plan. Upgrading takes effect within a minute, with no new key needed.
- The CLI can make a key for you with
ccucheck login. See CLI.
Sending your key
Send it in the Authorization header. X-API-Key: cck_... works too.
curl -A "my-app/1.0 ([email protected])" \
-H "Authorization: Bearer $CCUCHECK_API_KEY" \
"https://ccucheck.com/api/v1/me"import https from "node:https";
https.get("https://ccucheck.com/api/v1/me", {
headers: {
"User-Agent": "my-app/1.0 ([email protected])",
Authorization: `Bearer ${process.env.CCUCHECK_API_KEY}`,
},
}, (res) => {
let body = "";
res.on("data", (chunk) => (body += chunk));
res.on("end", () => {
const { data, as_of } = JSON.parse(body);
console.log(data, as_of);
});
});import os
import requests
res = requests.get(
"https://ccucheck.com/api/v1/me",
headers={
"User-Agent": "my-app/1.0 ([email protected])",
"Authorization": f"Bearer {os.environ['CCUCHECK_API_KEY']}",
},
timeout=10,
)
body = res.json()
print(body["data"], body["as_of"])?api_key= or similar are refused with key_in_url, because URLs end up in logs and browser history. Keep keys out of front-end code that ships to browsers.Check your key
GET /api/v1/me tells you which plan a request counts as and how much of the allowance is left.
{
"data": {
"signed_in": true,
"email": "[email protected]",
"plan": "free",
"plan_name": "Free",
"key_id": 12,
"allowance": {
"limit": 1000,
"window": "day",
"remaining": 987,
"reset_at": "2026-10-28T00:00:00.000Z",
"burst_per_minute": 60
},
"history_days": 30,
"features": [
"api.read",
"api.keys"
]
},
"link": "https://ccucheck.com/account/developer",
"as_of": "2026-10-27T09:12:00.000Z"
}User agent
Send a User-Agent that names your app, for example my-app/1.0 ([email protected]). Requests with a bare library default (curl, python-requests, axios, Go and similar) or no user agent are refused before they reach the API.
In Node.js, use node:https as in the samples (or the CLI). Node's built-in fetch is refused at the moment, whatever headers it sends.