curl "https://platform.streampixel.io/api/v1/analytics/projects/664f1a2b3c4d5e6f7a8b9c0d/sessions?startDate=2026-09-25T00:00:00Z&endDate=2026-09-26T00:00:00Z&limit=100" \
-H "x-api-key: $STREAMPIXEL_API_KEY"
// Walk every page of yesterday's sessions.
const base = 'https://platform.streampixel.io/api/v1/analytics/projects/664f1a2b3c4d5e6f7a8b9c0d/sessions';
const all = [];
for (let skip = 0; ; skip += 100) {
const u = new URL(base);
u.search = new URLSearchParams({ startDate: '2026-09-25T00:00:00Z', endDate: '2026-09-26T00:00:00Z', limit: '100', skip: String(skip) });
const { data } = await (await fetch(u, { headers: { 'x-api-key': process.env.STREAMPIXEL_API_KEY } })).json();
all.push(...data.sessions);
if (!data.pagination.hasMore) break;
}
const failed = all.filter((s) => s.crashType && s.crashType !== 'General' || [4002, 4003, 4005, 4006].includes(s.disconnectCode));
import os, requests
r = requests.get(
"https://platform.streampixel.io/api/v1/analytics/projects/664f1a2b3c4d5e6f7a8b9c0d/sessions",
params={"startDate": "2026-09-25T00:00:00Z", "endDate": "2026-09-26T00:00:00Z", "limit": 100},
headers={"x-api-key": os.environ["STREAMPIXEL_API_KEY"]},
)
data = r.json()["data"]
print(data["summary"])
{
"success": true,
"data": {
"sessions": [
{
"sessionId": "session_1790294409382_3035",
"streamingId": "st_7f3a",
"projectId": "664f1a2b3c4d5e6f7a8b9c0d",
"status": "Terminated",
"statusInferred": false,
"region": "Europe",
"startTime": "2026-09-25T14:02:11.000Z",
"endTime": "2026-09-25T14:31:40.000Z",
"durationMinutes": 29.5,
"disconnectCode": 1000,
"crashType": null,
"clientInfo": { "os": "Windows", "browser": "Chrome", "device": "desktop", "country": "DE" }
}
],
"pagination": { "total": 143, "skip": 0, "limit": 100, "hasMore": true },
"summary": { "totalSessions": 143, "liveSessions": 2, "terminatedSessions": 141, "sessionsWithIssues": 6, "sessionsWithCrashes": 1 }
}
}
List Sessions
Sessions of a project in a time window, with duration, disconnect code, crash flag and viewer client.
GET
/
api
/
v1
/
analytics
/
projects
/
{projectId}
/
sessions
curl "https://platform.streampixel.io/api/v1/analytics/projects/664f1a2b3c4d5e6f7a8b9c0d/sessions?startDate=2026-09-25T00:00:00Z&endDate=2026-09-26T00:00:00Z&limit=100" \
-H "x-api-key: $STREAMPIXEL_API_KEY"
// Walk every page of yesterday's sessions.
const base = 'https://platform.streampixel.io/api/v1/analytics/projects/664f1a2b3c4d5e6f7a8b9c0d/sessions';
const all = [];
for (let skip = 0; ; skip += 100) {
const u = new URL(base);
u.search = new URLSearchParams({ startDate: '2026-09-25T00:00:00Z', endDate: '2026-09-26T00:00:00Z', limit: '100', skip: String(skip) });
const { data } = await (await fetch(u, { headers: { 'x-api-key': process.env.STREAMPIXEL_API_KEY } })).json();
all.push(...data.sessions);
if (!data.pagination.hasMore) break;
}
const failed = all.filter((s) => s.crashType && s.crashType !== 'General' || [4002, 4003, 4005, 4006].includes(s.disconnectCode));
import os, requests
r = requests.get(
"https://platform.streampixel.io/api/v1/analytics/projects/664f1a2b3c4d5e6f7a8b9c0d/sessions",
params={"startDate": "2026-09-25T00:00:00Z", "endDate": "2026-09-26T00:00:00Z", "limit": 100},
headers={"x-api-key": os.environ["STREAMPIXEL_API_KEY"]},
)
data = r.json()["data"]
print(data["summary"])
{
"success": true,
"data": {
"sessions": [
{
"sessionId": "session_1790294409382_3035",
"streamingId": "st_7f3a",
"projectId": "664f1a2b3c4d5e6f7a8b9c0d",
"status": "Terminated",
"statusInferred": false,
"region": "Europe",
"startTime": "2026-09-25T14:02:11.000Z",
"endTime": "2026-09-25T14:31:40.000Z",
"durationMinutes": 29.5,
"disconnectCode": 1000,
"crashType": null,
"clientInfo": { "os": "Windows", "browser": "Chrome", "device": "desktop", "country": "DE" }
}
],
"pagination": { "total": 143, "skip": 0, "limit": 100, "hasMore": true },
"summary": { "totalSessions": 143, "liveSessions": 2, "terminatedSessions": 141, "sessionsWithIssues": 6, "sessionsWithCrashes": 1 }
}
}
Return the project’s sessions in a window, newest first, with everything needed to spot trouble without opening each one: status, region, start and end, duration, the disconnect code it ended with, whether a crash was detected in its Unreal log, and the viewer’s browser, OS, device and country.
Scope:
read. Default window: the last 7 days. Page size is capped at 100; the summary covers the whole window regardless of paging.Path parameters
string
required
The project.
Query parameters
string
ISO 8601 start of the window. Default: 7 days ago.
string
ISO 8601 end of the window. Default: now.
string
default:"all"
all, live, terminated or queued.integer
default:"50"
Page size, at most 100.
integer
default:"0"
Offset for paging.
string
default:"startTime"
startTime, endTime or durationMinutes.string
default:"desc"
asc or desc.Headers
string
required
Your Streampixel API key.
Response
array
Show Session fields
Show Session fields
string
Session id, e.g.
session_1790294409382_3035. Use it with Session Detail, Session Telemetry and Session Logs.string | null
The streamer instance id.
string
Last recorded status:
Enqueued, Starting, Running, Terminating, Terminated.boolean
true when the record never received a final status and is reported as ended at the runtime cap. Its duration is an upper bound.string
Region the session ran in.
string
ISO 8601.
string | null
ISO 8601,
null while live.number | null
Minutes between start and end.
number | null
The close code the session ended with. See Disconnect codes.
string | null
GPU, LowLevelFatal or General when the Unreal log matched a crash pattern. General is usually a clean engine exit, not a crash.object | null
os, browser, device, country, city when reported by the player.object
total, skip, limit, hasMore.object
For the whole window:
totalSessions, liveSessions, terminatedSessions, sessionsWithIssues, sessionsWithCrashes.curl "https://platform.streampixel.io/api/v1/analytics/projects/664f1a2b3c4d5e6f7a8b9c0d/sessions?startDate=2026-09-25T00:00:00Z&endDate=2026-09-26T00:00:00Z&limit=100" \
-H "x-api-key: $STREAMPIXEL_API_KEY"
// Walk every page of yesterday's sessions.
const base = 'https://platform.streampixel.io/api/v1/analytics/projects/664f1a2b3c4d5e6f7a8b9c0d/sessions';
const all = [];
for (let skip = 0; ; skip += 100) {
const u = new URL(base);
u.search = new URLSearchParams({ startDate: '2026-09-25T00:00:00Z', endDate: '2026-09-26T00:00:00Z', limit: '100', skip: String(skip) });
const { data } = await (await fetch(u, { headers: { 'x-api-key': process.env.STREAMPIXEL_API_KEY } })).json();
all.push(...data.sessions);
if (!data.pagination.hasMore) break;
}
const failed = all.filter((s) => s.crashType && s.crashType !== 'General' || [4002, 4003, 4005, 4006].includes(s.disconnectCode));
import os, requests
r = requests.get(
"https://platform.streampixel.io/api/v1/analytics/projects/664f1a2b3c4d5e6f7a8b9c0d/sessions",
params={"startDate": "2026-09-25T00:00:00Z", "endDate": "2026-09-26T00:00:00Z", "limit": 100},
headers={"x-api-key": os.environ["STREAMPIXEL_API_KEY"]},
)
data = r.json()["data"]
print(data["summary"])
{
"success": true,
"data": {
"sessions": [
{
"sessionId": "session_1790294409382_3035",
"streamingId": "st_7f3a",
"projectId": "664f1a2b3c4d5e6f7a8b9c0d",
"status": "Terminated",
"statusInferred": false,
"region": "Europe",
"startTime": "2026-09-25T14:02:11.000Z",
"endTime": "2026-09-25T14:31:40.000Z",
"durationMinutes": 29.5,
"disconnectCode": 1000,
"crashType": null,
"clientInfo": { "os": "Windows", "browser": "Chrome", "device": "desktop", "country": "DE" }
}
],
"pagination": { "total": 143, "skip": 0, "limit": 100, "hasMore": true },
"summary": { "totalSessions": 143, "liveSessions": 2, "terminatedSessions": 141, "sessionsWithIssues": 6, "sessionsWithCrashes": 1 }
}
}
Errors
| Status | Cause |
|---|---|
403 | The key lacks read, or the project belongs to another account. |
404 | No project with that id. |