List privacy-bounded session summaries
curl --request GET \
--url https://api.aws53.cloud/v1/data/visitors/{visitorId}/sessions \
--header 'X-API-Key: <api-key>'import requests
url = "https://api.aws53.cloud/v1/data/visitors/{visitorId}/sessions"
headers = {"X-API-Key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-API-Key': '<api-key>'}};
fetch('https://api.aws53.cloud/v1/data/visitors/{visitorId}/sessions', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.aws53.cloud/v1/data/visitors/{visitorId}/sessions",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-API-Key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.aws53.cloud/v1/data/visitors/{visitorId}/sessions"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-API-Key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.aws53.cloud/v1/data/visitors/{visitorId}/sessions")
.header("X-API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.aws53.cloud/v1/data/visitors/{visitorId}/sessions")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-API-Key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"data": [
{
"sessionId": "ses_1vR8zPqY2dV5hJ3mK7nB9cF4sT6wX0aL8eG2uN5iQ1o",
"version": "sv_8sH2mN6qR1vY5cJ9kP3tW7xF0aD4eG8uL2bC6iQ1oZ5",
"startTime": "2023-11-07T05:31:56Z",
"endTime": "2023-11-07T05:31:56Z",
"durationSeconds": 1,
"pageViews": 1,
"entryPage": "/pricing",
"exitPage": "/thank-you",
"updatedAt": "2023-11-07T05:31:56Z"
}
],
"meta": {
"limit": 123,
"hasMore": true,
"nextCursor": "<string>",
"asOf": "2023-11-07T05:31:56Z",
"timeframe": "30d"
}
}Visitors
List privacy-bounded session summaries
Returns deterministic, cursor-paginated session summaries without detailed events, page sequences, full URLs, query strings, or fragments. visitorId is the lowercase SHA-256 value returned as emailHash by the visitor list and qualification endpoints. The signed cursor is bound to the organization, visitor, and timeframe. Sessions are ordered by start time and canonical session key, both descending.
GET
/
v1
/
data
/
visitors
/
{visitorId}
/
sessions
List privacy-bounded session summaries
curl --request GET \
--url https://api.aws53.cloud/v1/data/visitors/{visitorId}/sessions \
--header 'X-API-Key: <api-key>'import requests
url = "https://api.aws53.cloud/v1/data/visitors/{visitorId}/sessions"
headers = {"X-API-Key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-API-Key': '<api-key>'}};
fetch('https://api.aws53.cloud/v1/data/visitors/{visitorId}/sessions', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.aws53.cloud/v1/data/visitors/{visitorId}/sessions",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-API-Key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.aws53.cloud/v1/data/visitors/{visitorId}/sessions"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-API-Key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.aws53.cloud/v1/data/visitors/{visitorId}/sessions")
.header("X-API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.aws53.cloud/v1/data/visitors/{visitorId}/sessions")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-API-Key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"data": [
{
"sessionId": "ses_1vR8zPqY2dV5hJ3mK7nB9cF4sT6wX0aL8eG2uN5iQ1o",
"version": "sv_8sH2mN6qR1vY5cJ9kP3tW7xF0aD4eG8uL2bC6iQ1oZ5",
"startTime": "2023-11-07T05:31:56Z",
"endTime": "2023-11-07T05:31:56Z",
"durationSeconds": 1,
"pageViews": 1,
"entryPage": "/pricing",
"exitPage": "/thank-you",
"updatedAt": "2023-11-07T05:31:56Z"
}
],
"meta": {
"limit": 123,
"hasMore": true,
"nextCursor": "<string>",
"asOf": "2023-11-07T05:31:56Z",
"timeframe": "30d"
}
}Authorizations
Organization API key (sk_...). Get yours from Settings > API Keys in the dashboard.
Path Parameters
Visitor SHA-256 identifier from DataApiVisitor.emailHash
Pattern:
^[A-Fa-f0-9]{64}$Query Parameters
Time window fixed when the first cursor page is requested
Available options:
24h, 7d, 14d, 30d, 90d, all Required range:
1 <= x <= 100Opaque signed nextCursor from the previous response. Do not construct or modify it
Required string length:
1 - 1024Was this page helpful?