curl --request GET \
--url https://api.getdecipher.com/api/v1/monitoring/issue-collections/{collectionId}/sessions \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.getdecipher.com/api/v1/monitoring/issue-collections/{collectionId}/sessions"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.getdecipher.com/api/v1/monitoring/issue-collections/{collectionId}/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.getdecipher.com/api/v1/monitoring/issue-collections/{collectionId}/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 => [
"Authorization: Bearer <token>"
],
]);
$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.getdecipher.com/api/v1/monitoring/issue-collections/{collectionId}/sessions"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
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.getdecipher.com/api/v1/monitoring/issue-collections/{collectionId}/sessions")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.getdecipher.com/api/v1/monitoring/issue-collections/{collectionId}/sessions")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"object": "list",
"collection": {
"id": 123,
"type": "<string>",
"rootCause": "<string>",
"shortenedPath": "<string>",
"createdAt": "<string>",
"isResolved": true,
"errorCount": 123,
"sessionCount": 123,
"estimatedUsers": 123
},
"data": [
{
"object": "session",
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"url": "<string>",
"createdAt": "<string>",
"duration": 123,
"userEmail": "<string>",
"userId": "<string>",
"userAccount": "<string>",
"userUsername": "<string>",
"userPlan": "<string>",
"userRole": "<string>",
"browser": "<string>",
"device": "<string>",
"countryCode": "<string>",
"hasTimeline": true,
"representativeIssue": {
"errorId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"latestIssueAt": "<string>",
"shortenedPath": "<string>",
"fullPath": "<string>",
"aiSummary": {
"category": "<string>",
"behavior": "<string>",
"productFeature": "<string>",
"errorText": "<string>",
"reasoning": "<string>"
}
},
"timeline": {
"overview": "<string>",
"tags": [
{
"tag": "<string>",
"reasoning": "<string>"
}
],
"pages": [
{
"page": "<string>",
"startTime": 123,
"endTime": 123,
"clickCount": 123,
"featuresUsed": [
"<string>"
],
"activities": [
{
"startTime": "<string>",
"endTime": "<string>",
"summary": "<string>",
"userAction": "<string>",
"userBehavior": "<string>"
}
]
}
],
"loadingIssues": [
{
"description": "<string>",
"longDescription": "<string>",
"durationInSeconds": 123,
"timestamp": 123
}
]
},
"clicks": [
{
"id": 123,
"type": "<string>",
"timestamp": 123,
"clickCount": 123,
"navigationTo": "<string>",
"screenshots": {
"before": "<string>",
"after": "<string>"
}
}
],
"errorScreenshots": {
"main": "<string>",
"after": "<string>"
}
}
],
"includes": [],
"hasMore": true,
"nextCursor": "<string>",
"window": {
"since": "<string>",
"until": "<string>"
},
"screenshotsExpiresAt": "<string>"
}{
"error": {
"code": "<string>",
"message": "<string>",
"field": "<string>"
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"field": "<string>"
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"field": "<string>"
}
}List collection sessions
Retrieve a paginated list of sessions associated with an issue collection. Returns lightweight session summaries by default, with optional includes for timeline, clicks, and screenshots.
curl --request GET \
--url https://api.getdecipher.com/api/v1/monitoring/issue-collections/{collectionId}/sessions \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.getdecipher.com/api/v1/monitoring/issue-collections/{collectionId}/sessions"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.getdecipher.com/api/v1/monitoring/issue-collections/{collectionId}/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.getdecipher.com/api/v1/monitoring/issue-collections/{collectionId}/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 => [
"Authorization: Bearer <token>"
],
]);
$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.getdecipher.com/api/v1/monitoring/issue-collections/{collectionId}/sessions"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
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.getdecipher.com/api/v1/monitoring/issue-collections/{collectionId}/sessions")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.getdecipher.com/api/v1/monitoring/issue-collections/{collectionId}/sessions")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"object": "list",
"collection": {
"id": 123,
"type": "<string>",
"rootCause": "<string>",
"shortenedPath": "<string>",
"createdAt": "<string>",
"isResolved": true,
"errorCount": 123,
"sessionCount": 123,
"estimatedUsers": 123
},
"data": [
{
"object": "session",
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"url": "<string>",
"createdAt": "<string>",
"duration": 123,
"userEmail": "<string>",
"userId": "<string>",
"userAccount": "<string>",
"userUsername": "<string>",
"userPlan": "<string>",
"userRole": "<string>",
"browser": "<string>",
"device": "<string>",
"countryCode": "<string>",
"hasTimeline": true,
"representativeIssue": {
"errorId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"latestIssueAt": "<string>",
"shortenedPath": "<string>",
"fullPath": "<string>",
"aiSummary": {
"category": "<string>",
"behavior": "<string>",
"productFeature": "<string>",
"errorText": "<string>",
"reasoning": "<string>"
}
},
"timeline": {
"overview": "<string>",
"tags": [
{
"tag": "<string>",
"reasoning": "<string>"
}
],
"pages": [
{
"page": "<string>",
"startTime": 123,
"endTime": 123,
"clickCount": 123,
"featuresUsed": [
"<string>"
],
"activities": [
{
"startTime": "<string>",
"endTime": "<string>",
"summary": "<string>",
"userAction": "<string>",
"userBehavior": "<string>"
}
]
}
],
"loadingIssues": [
{
"description": "<string>",
"longDescription": "<string>",
"durationInSeconds": 123,
"timestamp": 123
}
]
},
"clicks": [
{
"id": 123,
"type": "<string>",
"timestamp": 123,
"clickCount": 123,
"navigationTo": "<string>",
"screenshots": {
"before": "<string>",
"after": "<string>"
}
}
],
"errorScreenshots": {
"main": "<string>",
"after": "<string>"
}
}
],
"includes": [],
"hasMore": true,
"nextCursor": "<string>",
"window": {
"since": "<string>",
"until": "<string>"
},
"screenshotsExpiresAt": "<string>"
}{
"error": {
"code": "<string>",
"message": "<string>",
"field": "<string>"
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"field": "<string>"
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"field": "<string>"
}
}Authorizations
API key authentication. Use your Decipher API key as the bearer token.
Path Parameters
The ID of the issue collection Collection ID
"123"
Query Parameters
1 <= x <= 50Cursor for pagination. Use the nextCursor value from a previous response.
ISO 8601 datetime. Only return sessions with issues after this time. Defaults to 24 hours ago.
ISO 8601 datetime. Only return sessions with issues before this time. Defaults to now.
Comma-separated list of optional fields to include: timeline, clicks, screenshots. Requesting screenshots automatically includes clicks.
"timeline,clicks"
Response
Paginated list of collection sessions
list Show child attributes
Show child attributes
Show child attributes
Show child attributes
Which optional fields were included in the request
timeline, clicks, screenshots Show child attributes
Show child attributes
ISO timestamp when included screenshot URLs expire (~3h). Null when no screenshot URLs are present.