curl --request POST \
--url https://api.cloud.corbado.io/v1/observe/trackingEventLowSearch \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"sessionIDs": [
"<string>"
],
"batchIDs": [
"<string>"
],
"types": [],
"createdAfterMs": 123,
"createdBeforeMs": 123,
"limit": 100
}
'import requests
url = "https://api.cloud.corbado.io/v1/observe/trackingEventLowSearch"
payload = {
"sessionIDs": ["<string>"],
"batchIDs": ["<string>"],
"types": [],
"createdAfterMs": 123,
"createdBeforeMs": 123,
"limit": 100
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
sessionIDs: ['<string>'],
batchIDs: ['<string>'],
types: [],
createdAfterMs: 123,
createdBeforeMs: 123,
limit: 100
})
};
fetch('https://api.cloud.corbado.io/v1/observe/trackingEventLowSearch', 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.cloud.corbado.io/v1/observe/trackingEventLowSearch",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'sessionIDs' => [
'<string>'
],
'batchIDs' => [
'<string>'
],
'types' => [
],
'createdAfterMs' => 123,
'createdBeforeMs' => 123,
'limit' => 100
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.cloud.corbado.io/v1/observe/trackingEventLowSearch"
payload := strings.NewReader("{\n \"sessionIDs\": [\n \"<string>\"\n ],\n \"batchIDs\": [\n \"<string>\"\n ],\n \"types\": [],\n \"createdAfterMs\": 123,\n \"createdBeforeMs\": 123,\n \"limit\": 100\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.cloud.corbado.io/v1/observe/trackingEventLowSearch")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"sessionIDs\": [\n \"<string>\"\n ],\n \"batchIDs\": [\n \"<string>\"\n ],\n \"types\": [],\n \"createdAfterMs\": 123,\n \"createdBeforeMs\": 123,\n \"limit\": 100\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.cloud.corbado.io/v1/observe/trackingEventLowSearch")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"sessionIDs\": [\n \"<string>\"\n ],\n \"batchIDs\": [\n \"<string>\"\n ],\n \"types\": [],\n \"createdAfterMs\": 123,\n \"createdBeforeMs\": 123,\n \"limit\": 100\n}"
response = http.request(request)
puts response.read_body{
"trackingEventLows": [
{
"id": "<string>",
"sessionID": "<string>",
"batchID": "<string>",
"type": "focus",
"createdMs": 123,
"durationMs": 123,
"captureSeq": 2147483647,
"captureVersion": 123,
"clientEventID": "<string>",
"subflowStartEventId": "<string>",
"pageID": "<string>",
"sourceKind": "<string>",
"fieldRole": "<string>",
"initiator": "<string>",
"inputEffect": "<string>"
}
]
}{
"error": {
"message": "Validation failed",
"details": [
{
"field": "projectID",
"message": "required"
}
]
}
}Search low-level tracking events by filter criteria
Finds low-level tracking events (raw UI interaction signals) as they were ingested.
Provide at least one of sessionIDs or batchIDs; types, createdAfterMs and
createdBeforeMs further narrow the results but cannot be used on their own.
Results are ordered as a stable timeline, oldest first (by client capture time), and
capped at limit.
Required API key permission: observe:events:read.
curl --request POST \
--url https://api.cloud.corbado.io/v1/observe/trackingEventLowSearch \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"sessionIDs": [
"<string>"
],
"batchIDs": [
"<string>"
],
"types": [],
"createdAfterMs": 123,
"createdBeforeMs": 123,
"limit": 100
}
'import requests
url = "https://api.cloud.corbado.io/v1/observe/trackingEventLowSearch"
payload = {
"sessionIDs": ["<string>"],
"batchIDs": ["<string>"],
"types": [],
"createdAfterMs": 123,
"createdBeforeMs": 123,
"limit": 100
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
sessionIDs: ['<string>'],
batchIDs: ['<string>'],
types: [],
createdAfterMs: 123,
createdBeforeMs: 123,
limit: 100
})
};
fetch('https://api.cloud.corbado.io/v1/observe/trackingEventLowSearch', 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.cloud.corbado.io/v1/observe/trackingEventLowSearch",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'sessionIDs' => [
'<string>'
],
'batchIDs' => [
'<string>'
],
'types' => [
],
'createdAfterMs' => 123,
'createdBeforeMs' => 123,
'limit' => 100
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.cloud.corbado.io/v1/observe/trackingEventLowSearch"
payload := strings.NewReader("{\n \"sessionIDs\": [\n \"<string>\"\n ],\n \"batchIDs\": [\n \"<string>\"\n ],\n \"types\": [],\n \"createdAfterMs\": 123,\n \"createdBeforeMs\": 123,\n \"limit\": 100\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.cloud.corbado.io/v1/observe/trackingEventLowSearch")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"sessionIDs\": [\n \"<string>\"\n ],\n \"batchIDs\": [\n \"<string>\"\n ],\n \"types\": [],\n \"createdAfterMs\": 123,\n \"createdBeforeMs\": 123,\n \"limit\": 100\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.cloud.corbado.io/v1/observe/trackingEventLowSearch")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"sessionIDs\": [\n \"<string>\"\n ],\n \"batchIDs\": [\n \"<string>\"\n ],\n \"types\": [],\n \"createdAfterMs\": 123,\n \"createdBeforeMs\": 123,\n \"limit\": 100\n}"
response = http.request(request)
puts response.read_body{
"trackingEventLows": [
{
"id": "<string>",
"sessionID": "<string>",
"batchID": "<string>",
"type": "focus",
"createdMs": 123,
"durationMs": 123,
"captureSeq": 2147483647,
"captureVersion": 123,
"clientEventID": "<string>",
"subflowStartEventId": "<string>",
"pageID": "<string>",
"sourceKind": "<string>",
"fieldRole": "<string>",
"initiator": "<string>",
"inputEffect": "<string>"
}
]
}{
"error": {
"message": "Validation failed",
"details": [
{
"field": "projectID",
"message": "required"
}
]
}
}Authorizations
Use an Observe API key from the management console. The key selects the project and must grant the permission listed on the operation. Keep this key on your server.
Body
Public session UUIDs to fetch low-level tracking events for.
Tracking event batch IDs to fetch low-level tracking events for (format teb-<number>).
Optional low-level tracking event types to include.
Type of a low-level tracking event.
focus, blur, click, pointerdown, pointerup, keyup-escape, input, input-idle, big-input-add, big-input-paste, input-prefill, input-clear, input-paste, window-navigate-back, big-input-rem, window-focus, window-blur, visualviewport-resize, visualviewport-scroll, document-visibilitychange-hidden, document-visibilitychange-visible, pwm-1pwd-button, pwm-1pwd-menu, pwm-1pwd-notification, pwm-lastpass, pwm-bitwarden, pwm-icloud-passwords, page-ready Inclusive lower bound on client capture time in milliseconds since epoch.
Exclusive upper bound on client capture time in milliseconds since epoch.
Maximum number of low-level tracking events to return. Defaults to 100, maximum 10000.
1 <= x <= 10000Response
Matching low-level tracking events.
Matching low-level tracking events in stable timeline order, oldest first, capped at limit.
Show child attributes
Show child attributes
Was this page helpful?