Hitsteps API documentation
Read Hitsteps analytics from software you run. This page is the index: it names every Hitsteps API we document, explains what each one is for, how it authenticates, what limits apply, and where the full reference lives.
Start a free Hitsteps accountSee analytics features
Choose the API you need
Two public APIs and one account-gated reference cover everything Hitsteps exposes. Start with the Analytics API if you are not sure which one applies to you.
Reports API
Read one saved report as JSON from your own server. You create the key inside the report, so the integration only ever sees that report and nothing else from your account.
Not yet available on every account: if your saved report has no Reports API section, use the Analytics API.
POST /api/reports-v2.php
Read the Reports API guide
Analytics API
The original website-level API. Returns account details, connected sites, visitor traffic, referrers, pages, campaigns, goals and live counts for a site you already track.
POST /api/callback/<action>
Open the Analytics API reference · OpenAPI spec
White-label API
Account and site provisioning for resellers. The reference lives inside the product and is limited to existing white-label accounts, so it is not part of the public documentation.
POST /api/whitelabel/<action>
Sign in to open the reference
Grafana setup
Pull Hitsteps numbers into Grafana with the Infinity data source and our ready-made dashboard. No custom plugin to install.
See the Grafana setup guide
Find your tracking code or API key · Where do I find my API key? · Reports API guide · Analytics API reference
Which one fits your integration?
The two public APIs use different credentials and different request formats. Pick by what you need to read, not by which page you landed on first.
Get a credential
Each API takes a different credential, and they are not interchangeable.
- Reports API key. Not yet available on every account: if your saved report has no Reports API section, use the Analytics API. Where it is available, open a saved report in your dashboard, expand the Reports API section, choose an expiry of 1, 7, 30 or 90 days and create the key. It is shown once, so store it in your server's secret manager. The key belongs to that one report and its current revision; editing the report invalidates it.
- Analytics API code. Open the tracking code and API key page. This is the website key your plugins and apps already ask for, and it works differently from a Reports API key.
- White-label access. Sign in to an account that already has white-label history. There is no public key signup for this reference.
Not sure which key you are holding? The API key FAQ shows where each one lives, step by step.
Example: read one saved report
This is the whole request for the Reports API. It asks for one complete day and returns that saved report as JSON. Replace the timestamps with days inside your own retained history.
Not yet available on every account: if your saved report has no Reports API section, use the Analytics API instead. This example assumes the section is there.
Configure HITSTEPS_REPORT_API_KEY in your server environment before running it. Passing the header through standard input keeps the key out of the command line, where process listings could read it.
printf 'Authorization: Bearer %s\n' "$HITSTEPS_REPORT_API_KEY" |
curl --silent --show-error --include \
'https://www.hitsteps.com/api/reports-v2.php' \
-H @- \
-H 'Content-Type: application/json' \
--data '{"from":1788645600,"until":1788732000}'
Those two timestamps are 6 and 7 September 2026 for an account at UTC+02:00. --include prints the status line and headers, so you can see a Retry-After value when the rate limit answers. Always branch on the HTTP status: an error response still carries a JSON body. The full Reports API guide covers the response shape, the error table and how to handle days that are still processing.
Authentication and limits at a glance
| |
Reports API |
Analytics API |
| Endpoint |
POST /api/reports-v2.php |
POST /api/callback/<action> |
| Credential |
Authorization: Bearer report key |
apicode form field, plus website_id for most actions |
| Request body |
JSON, two integer timestamps, up to 4096 bytes |
multipart/form-data |
| Rate limit |
20 requests per 60-second window per key |
No published request quota; repeated failed API-code attempts are throttled (HTTP 429 with Retry-After) |
| Full reference |
Reports API guide |
Analytics API reference |
Keep credentials server-side. Never place a password, API code, report key or visitor data in browser JavaScript, public repositories, URLs, screenshots or support messages. These reference pages document the APIs only; they do not accept credentials or make authenticated requests for you.