Visitors
Visitors active in the range, most recently seen first.
An API token from POST /v2/tokens (at_live_...), or a project's secret key (sk_...) for server-side ingest.
In: header
Path Parameters
The project id, as listed by GET /v2/projects.
1 <= lengthQuery Parameters
Start of the range; send with to.
date-timeEnd of the range, exclusive.
date-timeA range ending at the start of today in UTC (24h ends at the start of this hour). Ignored when from and to are sent; 30d by default.
Value in
- "24h"
- "7d"
- "30d"
- "90d"
- "12mo"
- "all"
Which traffic is counted. human (the default) leaves out bot scores of 50 and up, your own visits and localhost; bots keeps only scores of 50 and up; internal keeps only your own visits; all keeps everything.
Value in
- "human"
- "bots"
- "internal"
- "all"
production (the default) leaves preview deployments out, preview keeps only them, all keeps both.
Value in
- "production"
- "preview"
- "all"
Sent as filter[<dimension>]=value, or !value to exclude; repeatable across dimensions.
Rows per page, 1 to 100 (default 20), or up to 1000 with format.
1 <= value <= 1000The opaque nextCursor of the previous page.
1 <= lengthReturns every row as one download instead of a page, up to 1,000,000 rows: csv with a header row and nested fields as dotted columns, json as the normal answer with all rows in data, sql as CREATE TABLE and INSERT statements for Postgres or SQLite. Accept: text/csv also asks for CSV.
Value in
- "csv"
- "json"
- "sql"
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
application/json
application/json
application/json
curl -X GET "https://example.com/v2/projects/string/visitors"{ "data": [ { "id": "8c4e1f0a-2b3c-4d5e-8f60-718293a4b5c6", "firstSeen": "2026-09-02T08:11:00.000Z", "lastSeen": "2026-09-27T16:39:59.901Z", "sessions": 6, "pageviews": 19, "country": "NL", "device": "desktop", "browser": "Firefox", "isInternal": false, "identified": true } ], "nextCursor": "eyJvIjoxfQ"}