Spoar
All projects

Sessions across projects

GET
/v2/sessions

Newest first.

Authorization

AuthorizationBearer <token>

An API token from POST /v2/tokens (at_live_...), or a project's secret key (sk_...) for server-side ingest.

In: header

Query Parameters

from?string

Start of the range; send with to.

Formatdate-time
to?string

End of the range, exclusive.

Formatdate-time
period?string

A 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"
traffic?string

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"
environment?string

production (the default) leaves preview deployments out, preview keeps only them, all keeps both.

Value in

  • "production"
  • "preview"
  • "all"
filter?

Sent as filter[<dimension>]=value, or !value to exclude; repeatable across dimensions.

limit?|

Rows per page, 1 to 100 (default 20), or up to 1000 with format.

Range1 <= value <= 1000
cursor?string

The opaque nextCursor of the previous page.

Length1 <= length
format?string

Returns 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/sessions"
{  "data": [    {      "id": "f1a2b3c4-d5e6-4f70-8a91-b2c3d4e5f607",      "visitorId": "8c4e1f0a-2b3c-4d5e-8f60-718293a4b5c6",      "startedAt": "2026-09-27T16:38:10.000Z",      "lastEventAt": "2026-09-27T16:39:59.901Z",      "durationMs": 109901,      "pageviews": 3,      "events": 4,      "isBounce": false,      "entryPath": "/",      "exitPath": "/blog/rebuilding-analytics",      "entryRoute": "/",      "exitRoute": "/blog/[slug]",      "source": {        "referrer": "https://news.ycombinator.com/",        "referrerDomain": "news.ycombinator.com",        "channel": "social",        "utm": {          "source": "hn",          "medium": null,          "campaign": null,          "term": null,          "content": null        }      },      "geo": {        "country": "NL",        "region": "Friesland",        "city": "Leeuwarden",        "postalCode": null,        "timezone": null,        "latitude": null,        "longitude": null      },      "device": {        "type": "desktop",        "browser": "Firefox",        "browserVersion": "143",        "os": "Linux",        "osVersion": null,        "screen": null,        "viewport": null,        "language": null,        "connection": null      },      "bot": {        "score": 0,        "reasons": []      },      "isInternal": false    }  ],  "nextCursor": null}