Statistics API
Base URL: https://api-app.eu-captcha.eu
All endpoints require a valid Authorization: Bearer <token> header. See API Authentication.
Get aggregate statistics
Returns aggregated EU CAPTCHA action counts for the authenticated user, across all sitekeys or for a specific sitekey, over a configurable time window.
GET /captcha-stats-user?max_days={n}
Query parameters:
| Parameter | Type | Default | Description |
|---|---|---|---|
max_days |
integer | 30 |
Number of days of history to return (max 30) |
per_day |
integer | — | Set to 1 to return per-day breakdown instead of aggregate |
sitekey |
string | — | Filter to a specific sitekey |
start_date |
string | — | Start date in YYYY-MM-DD format; if set, the window runs from start_date to start_date + max_days instead of ending today |
Response (aggregate):
[
{ "action_type": "ACC", "count": 1520 },
{ "action_type": "BLK", "count": 83 },
{ "action_type": "VFC", "count": 1603 },
{ "action_type": "ASC", "count": 1510 }
]
Response (per_day=1):
[
{ "action_type": "ACC", "count": 52, "date_at": "2026-02-17" },
{ "action_type": "BLK", "count": 3, "date_at": "2026-02-17" },
{ "action_type": "ACC", "count": 48, "date_at": "2026-02-16" }
]
Action type codes
| Code | Description |
|---|---|
ACC |
Access accepted — challenge passed |
VFC |
Verification challenge — challenge generated |
ASC |
Automatic challenge solved |
VSC |
Visitor challenge solved |
B* |
Any code starting with B — request blocked |
Computing summary metrics
The following metrics can be derived from the action type data:
verified = sum of count where action_type == "ACC"
blocked = sum of count where action_type starts with "B"
challenges_generated = sum of count where action_type == "VFC"
challenges_solved = sum of count where action_type in ["ASC", "VSC"]
total_verifications = verified + blocked
block_rate = round(blocked / total_verifications * 100)
Get challenges per day
Returns the daily count of challenges generated, for graph display.
GET /captcha-challenges-per-user?max_days={n}
Query parameters:
| Parameter | Type | Default | Description |
|---|---|---|---|
max_days |
integer | 14 |
Number of days to return |
sitekey |
string | — | Filter to a specific sitekey |
start_date |
string | — | Start date in YYYY-MM-DD format; if set, the window runs from start_date to start_date + max_days instead of ending today |
Response:
[
{ "date_at": "2026-02-17", "count": 312 },
{ "date_at": "2026-02-16", "count": 289 },
{ "date_at": "2026-02-15", "count": 401 }
]
Results are ordered from newest to oldest.
Notes
- All timestamps use ISO 8601 date format (
YYYY-MM-DD). - Statistics reflect the last complete day. The current partial day is not included.
- Data is retained for a minimum of 30 days.