curl --request POST \
--url https://api.cloud.corbado.io/v1/observe/flowSearch \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"userIDs": [
"<string>"
],
"flowIDs": [
"<string>"
],
"flowListIDs": [
"<string>"
],
"sessionIDs": [
"<string>"
],
"fromDate": "<string>",
"toDate": "<string>",
"flowType": [
"<string>"
],
"touchpoint": [
"<string>"
],
"outcome": [],
"path": [
"<string>"
],
"osName": [
"<string>"
],
"browserName": [
"<string>"
],
"osVersion": [
"<string>"
],
"flavourIDs": [
"<string>"
],
"applicationID": [
"<string>"
],
"customTag1": [
"<string>"
],
"customTag2": [
"<string>"
],
"customTag3": [
"<string>"
],
"customTag4": [
"<string>"
],
"customTag5": [
"<string>"
],
"customTag6": [
"<string>"
],
"resetCount": [
123
],
"errorCount": [
123
],
"durationBand": [],
"minErrorCount": 127,
"experimentID": "<string>",
"variantIDs": [
"<string>"
],
"limit": 100
}
'import requests
url = "https://api.cloud.corbado.io/v1/observe/flowSearch"
payload = {
"userIDs": ["<string>"],
"flowIDs": ["<string>"],
"flowListIDs": ["<string>"],
"sessionIDs": ["<string>"],
"fromDate": "<string>",
"toDate": "<string>",
"flowType": ["<string>"],
"touchpoint": ["<string>"],
"outcome": [],
"path": ["<string>"],
"osName": ["<string>"],
"browserName": ["<string>"],
"osVersion": ["<string>"],
"flavourIDs": ["<string>"],
"applicationID": ["<string>"],
"customTag1": ["<string>"],
"customTag2": ["<string>"],
"customTag3": ["<string>"],
"customTag4": ["<string>"],
"customTag5": ["<string>"],
"customTag6": ["<string>"],
"resetCount": [123],
"errorCount": [123],
"durationBand": [],
"minErrorCount": 127,
"experimentID": "<string>",
"variantIDs": ["<string>"],
"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({
userIDs: ['<string>'],
flowIDs: ['<string>'],
flowListIDs: ['<string>'],
sessionIDs: ['<string>'],
fromDate: '<string>',
toDate: '<string>',
flowType: ['<string>'],
touchpoint: ['<string>'],
outcome: [],
path: ['<string>'],
osName: ['<string>'],
browserName: ['<string>'],
osVersion: ['<string>'],
flavourIDs: ['<string>'],
applicationID: ['<string>'],
customTag1: ['<string>'],
customTag2: ['<string>'],
customTag3: ['<string>'],
customTag4: ['<string>'],
customTag5: ['<string>'],
customTag6: ['<string>'],
resetCount: [123],
errorCount: [123],
durationBand: [],
minErrorCount: 127,
experimentID: '<string>',
variantIDs: ['<string>'],
limit: 100
})
};
fetch('https://api.cloud.corbado.io/v1/observe/flowSearch', 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/flowSearch",
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([
'userIDs' => [
'<string>'
],
'flowIDs' => [
'<string>'
],
'flowListIDs' => [
'<string>'
],
'sessionIDs' => [
'<string>'
],
'fromDate' => '<string>',
'toDate' => '<string>',
'flowType' => [
'<string>'
],
'touchpoint' => [
'<string>'
],
'outcome' => [
],
'path' => [
'<string>'
],
'osName' => [
'<string>'
],
'browserName' => [
'<string>'
],
'osVersion' => [
'<string>'
],
'flavourIDs' => [
'<string>'
],
'applicationID' => [
'<string>'
],
'customTag1' => [
'<string>'
],
'customTag2' => [
'<string>'
],
'customTag3' => [
'<string>'
],
'customTag4' => [
'<string>'
],
'customTag5' => [
'<string>'
],
'customTag6' => [
'<string>'
],
'resetCount' => [
123
],
'errorCount' => [
123
],
'durationBand' => [
],
'minErrorCount' => 127,
'experimentID' => '<string>',
'variantIDs' => [
'<string>'
],
'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/flowSearch"
payload := strings.NewReader("{\n \"userIDs\": [\n \"<string>\"\n ],\n \"flowIDs\": [\n \"<string>\"\n ],\n \"flowListIDs\": [\n \"<string>\"\n ],\n \"sessionIDs\": [\n \"<string>\"\n ],\n \"fromDate\": \"<string>\",\n \"toDate\": \"<string>\",\n \"flowType\": [\n \"<string>\"\n ],\n \"touchpoint\": [\n \"<string>\"\n ],\n \"outcome\": [],\n \"path\": [\n \"<string>\"\n ],\n \"osName\": [\n \"<string>\"\n ],\n \"browserName\": [\n \"<string>\"\n ],\n \"osVersion\": [\n \"<string>\"\n ],\n \"flavourIDs\": [\n \"<string>\"\n ],\n \"applicationID\": [\n \"<string>\"\n ],\n \"customTag1\": [\n \"<string>\"\n ],\n \"customTag2\": [\n \"<string>\"\n ],\n \"customTag3\": [\n \"<string>\"\n ],\n \"customTag4\": [\n \"<string>\"\n ],\n \"customTag5\": [\n \"<string>\"\n ],\n \"customTag6\": [\n \"<string>\"\n ],\n \"resetCount\": [\n 123\n ],\n \"errorCount\": [\n 123\n ],\n \"durationBand\": [],\n \"minErrorCount\": 127,\n \"experimentID\": \"<string>\",\n \"variantIDs\": [\n \"<string>\"\n ],\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/flowSearch")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"userIDs\": [\n \"<string>\"\n ],\n \"flowIDs\": [\n \"<string>\"\n ],\n \"flowListIDs\": [\n \"<string>\"\n ],\n \"sessionIDs\": [\n \"<string>\"\n ],\n \"fromDate\": \"<string>\",\n \"toDate\": \"<string>\",\n \"flowType\": [\n \"<string>\"\n ],\n \"touchpoint\": [\n \"<string>\"\n ],\n \"outcome\": [],\n \"path\": [\n \"<string>\"\n ],\n \"osName\": [\n \"<string>\"\n ],\n \"browserName\": [\n \"<string>\"\n ],\n \"osVersion\": [\n \"<string>\"\n ],\n \"flavourIDs\": [\n \"<string>\"\n ],\n \"applicationID\": [\n \"<string>\"\n ],\n \"customTag1\": [\n \"<string>\"\n ],\n \"customTag2\": [\n \"<string>\"\n ],\n \"customTag3\": [\n \"<string>\"\n ],\n \"customTag4\": [\n \"<string>\"\n ],\n \"customTag5\": [\n \"<string>\"\n ],\n \"customTag6\": [\n \"<string>\"\n ],\n \"resetCount\": [\n 123\n ],\n \"errorCount\": [\n 123\n ],\n \"durationBand\": [],\n \"minErrorCount\": 127,\n \"experimentID\": \"<string>\",\n \"variantIDs\": [\n \"<string>\"\n ],\n \"limit\": 100\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.cloud.corbado.io/v1/observe/flowSearch")
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 \"userIDs\": [\n \"<string>\"\n ],\n \"flowIDs\": [\n \"<string>\"\n ],\n \"flowListIDs\": [\n \"<string>\"\n ],\n \"sessionIDs\": [\n \"<string>\"\n ],\n \"fromDate\": \"<string>\",\n \"toDate\": \"<string>\",\n \"flowType\": [\n \"<string>\"\n ],\n \"touchpoint\": [\n \"<string>\"\n ],\n \"outcome\": [],\n \"path\": [\n \"<string>\"\n ],\n \"osName\": [\n \"<string>\"\n ],\n \"browserName\": [\n \"<string>\"\n ],\n \"osVersion\": [\n \"<string>\"\n ],\n \"flavourIDs\": [\n \"<string>\"\n ],\n \"applicationID\": [\n \"<string>\"\n ],\n \"customTag1\": [\n \"<string>\"\n ],\n \"customTag2\": [\n \"<string>\"\n ],\n \"customTag3\": [\n \"<string>\"\n ],\n \"customTag4\": [\n \"<string>\"\n ],\n \"customTag5\": [\n \"<string>\"\n ],\n \"customTag6\": [\n \"<string>\"\n ],\n \"resetCount\": [\n 123\n ],\n \"errorCount\": [\n 123\n ],\n \"durationBand\": [],\n \"minErrorCount\": 127,\n \"experimentID\": \"<string>\",\n \"variantIDs\": [\n \"<string>\"\n ],\n \"limit\": 100\n}"
response = http.request(request)
puts response.read_body{
"flows": [
{
"flowID": "<string>",
"sessionID": "<string>",
"flowType": "<string>",
"outcome": "complete",
"visitorType": "user",
"errorCount": 123,
"resetCount": 123,
"durationMs": 123,
"previousTotalCount": 123,
"previousSameTouchpointCount": 123,
"createdMs": 123,
"parentFlowID": "<string>",
"clientEnvDataID": "<string>",
"longPath": "<string>",
"userID": "<string>",
"externalID": "<string>",
"clientEnvID": "<string>",
"previousFlowDiffMs": 123,
"osName": "<string>",
"browserName": "<string>",
"osVersion": "<string>",
"browserVersion": "<string>",
"model": "<string>",
"uvpaa": true,
"applicationID": "<string>",
"touchpoint": "<string>",
"customTag1": "<string>",
"customTag2": "<string>",
"customTag3": "<string>",
"customTag4": "<string>",
"customTag5": "<string>",
"customTag6": "<string>",
"variantID": "<string>"
}
],
"totalCount": 123
}{
"error": {
"message": "Validation failed",
"details": [
{
"field": "projectID",
"message": "required"
}
]
}
}Search flows by filter criteria
Finds Observe flows that match the provided filters. Provide at least one of
the following filters: userIDs, flowIDs, sessionIDs, or a complete
fromDate / toDate range.
When provided, the date range may span at most 366 days.
Results are ordered as a stable timeline, oldest first (by creation time),
and capped at limit.
Required API key permission: observe:flow:read.
curl --request POST \
--url https://api.cloud.corbado.io/v1/observe/flowSearch \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"userIDs": [
"<string>"
],
"flowIDs": [
"<string>"
],
"flowListIDs": [
"<string>"
],
"sessionIDs": [
"<string>"
],
"fromDate": "<string>",
"toDate": "<string>",
"flowType": [
"<string>"
],
"touchpoint": [
"<string>"
],
"outcome": [],
"path": [
"<string>"
],
"osName": [
"<string>"
],
"browserName": [
"<string>"
],
"osVersion": [
"<string>"
],
"flavourIDs": [
"<string>"
],
"applicationID": [
"<string>"
],
"customTag1": [
"<string>"
],
"customTag2": [
"<string>"
],
"customTag3": [
"<string>"
],
"customTag4": [
"<string>"
],
"customTag5": [
"<string>"
],
"customTag6": [
"<string>"
],
"resetCount": [
123
],
"errorCount": [
123
],
"durationBand": [],
"minErrorCount": 127,
"experimentID": "<string>",
"variantIDs": [
"<string>"
],
"limit": 100
}
'import requests
url = "https://api.cloud.corbado.io/v1/observe/flowSearch"
payload = {
"userIDs": ["<string>"],
"flowIDs": ["<string>"],
"flowListIDs": ["<string>"],
"sessionIDs": ["<string>"],
"fromDate": "<string>",
"toDate": "<string>",
"flowType": ["<string>"],
"touchpoint": ["<string>"],
"outcome": [],
"path": ["<string>"],
"osName": ["<string>"],
"browserName": ["<string>"],
"osVersion": ["<string>"],
"flavourIDs": ["<string>"],
"applicationID": ["<string>"],
"customTag1": ["<string>"],
"customTag2": ["<string>"],
"customTag3": ["<string>"],
"customTag4": ["<string>"],
"customTag5": ["<string>"],
"customTag6": ["<string>"],
"resetCount": [123],
"errorCount": [123],
"durationBand": [],
"minErrorCount": 127,
"experimentID": "<string>",
"variantIDs": ["<string>"],
"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({
userIDs: ['<string>'],
flowIDs: ['<string>'],
flowListIDs: ['<string>'],
sessionIDs: ['<string>'],
fromDate: '<string>',
toDate: '<string>',
flowType: ['<string>'],
touchpoint: ['<string>'],
outcome: [],
path: ['<string>'],
osName: ['<string>'],
browserName: ['<string>'],
osVersion: ['<string>'],
flavourIDs: ['<string>'],
applicationID: ['<string>'],
customTag1: ['<string>'],
customTag2: ['<string>'],
customTag3: ['<string>'],
customTag4: ['<string>'],
customTag5: ['<string>'],
customTag6: ['<string>'],
resetCount: [123],
errorCount: [123],
durationBand: [],
minErrorCount: 127,
experimentID: '<string>',
variantIDs: ['<string>'],
limit: 100
})
};
fetch('https://api.cloud.corbado.io/v1/observe/flowSearch', 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/flowSearch",
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([
'userIDs' => [
'<string>'
],
'flowIDs' => [
'<string>'
],
'flowListIDs' => [
'<string>'
],
'sessionIDs' => [
'<string>'
],
'fromDate' => '<string>',
'toDate' => '<string>',
'flowType' => [
'<string>'
],
'touchpoint' => [
'<string>'
],
'outcome' => [
],
'path' => [
'<string>'
],
'osName' => [
'<string>'
],
'browserName' => [
'<string>'
],
'osVersion' => [
'<string>'
],
'flavourIDs' => [
'<string>'
],
'applicationID' => [
'<string>'
],
'customTag1' => [
'<string>'
],
'customTag2' => [
'<string>'
],
'customTag3' => [
'<string>'
],
'customTag4' => [
'<string>'
],
'customTag5' => [
'<string>'
],
'customTag6' => [
'<string>'
],
'resetCount' => [
123
],
'errorCount' => [
123
],
'durationBand' => [
],
'minErrorCount' => 127,
'experimentID' => '<string>',
'variantIDs' => [
'<string>'
],
'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/flowSearch"
payload := strings.NewReader("{\n \"userIDs\": [\n \"<string>\"\n ],\n \"flowIDs\": [\n \"<string>\"\n ],\n \"flowListIDs\": [\n \"<string>\"\n ],\n \"sessionIDs\": [\n \"<string>\"\n ],\n \"fromDate\": \"<string>\",\n \"toDate\": \"<string>\",\n \"flowType\": [\n \"<string>\"\n ],\n \"touchpoint\": [\n \"<string>\"\n ],\n \"outcome\": [],\n \"path\": [\n \"<string>\"\n ],\n \"osName\": [\n \"<string>\"\n ],\n \"browserName\": [\n \"<string>\"\n ],\n \"osVersion\": [\n \"<string>\"\n ],\n \"flavourIDs\": [\n \"<string>\"\n ],\n \"applicationID\": [\n \"<string>\"\n ],\n \"customTag1\": [\n \"<string>\"\n ],\n \"customTag2\": [\n \"<string>\"\n ],\n \"customTag3\": [\n \"<string>\"\n ],\n \"customTag4\": [\n \"<string>\"\n ],\n \"customTag5\": [\n \"<string>\"\n ],\n \"customTag6\": [\n \"<string>\"\n ],\n \"resetCount\": [\n 123\n ],\n \"errorCount\": [\n 123\n ],\n \"durationBand\": [],\n \"minErrorCount\": 127,\n \"experimentID\": \"<string>\",\n \"variantIDs\": [\n \"<string>\"\n ],\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/flowSearch")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"userIDs\": [\n \"<string>\"\n ],\n \"flowIDs\": [\n \"<string>\"\n ],\n \"flowListIDs\": [\n \"<string>\"\n ],\n \"sessionIDs\": [\n \"<string>\"\n ],\n \"fromDate\": \"<string>\",\n \"toDate\": \"<string>\",\n \"flowType\": [\n \"<string>\"\n ],\n \"touchpoint\": [\n \"<string>\"\n ],\n \"outcome\": [],\n \"path\": [\n \"<string>\"\n ],\n \"osName\": [\n \"<string>\"\n ],\n \"browserName\": [\n \"<string>\"\n ],\n \"osVersion\": [\n \"<string>\"\n ],\n \"flavourIDs\": [\n \"<string>\"\n ],\n \"applicationID\": [\n \"<string>\"\n ],\n \"customTag1\": [\n \"<string>\"\n ],\n \"customTag2\": [\n \"<string>\"\n ],\n \"customTag3\": [\n \"<string>\"\n ],\n \"customTag4\": [\n \"<string>\"\n ],\n \"customTag5\": [\n \"<string>\"\n ],\n \"customTag6\": [\n \"<string>\"\n ],\n \"resetCount\": [\n 123\n ],\n \"errorCount\": [\n 123\n ],\n \"durationBand\": [],\n \"minErrorCount\": 127,\n \"experimentID\": \"<string>\",\n \"variantIDs\": [\n \"<string>\"\n ],\n \"limit\": 100\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.cloud.corbado.io/v1/observe/flowSearch")
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 \"userIDs\": [\n \"<string>\"\n ],\n \"flowIDs\": [\n \"<string>\"\n ],\n \"flowListIDs\": [\n \"<string>\"\n ],\n \"sessionIDs\": [\n \"<string>\"\n ],\n \"fromDate\": \"<string>\",\n \"toDate\": \"<string>\",\n \"flowType\": [\n \"<string>\"\n ],\n \"touchpoint\": [\n \"<string>\"\n ],\n \"outcome\": [],\n \"path\": [\n \"<string>\"\n ],\n \"osName\": [\n \"<string>\"\n ],\n \"browserName\": [\n \"<string>\"\n ],\n \"osVersion\": [\n \"<string>\"\n ],\n \"flavourIDs\": [\n \"<string>\"\n ],\n \"applicationID\": [\n \"<string>\"\n ],\n \"customTag1\": [\n \"<string>\"\n ],\n \"customTag2\": [\n \"<string>\"\n ],\n \"customTag3\": [\n \"<string>\"\n ],\n \"customTag4\": [\n \"<string>\"\n ],\n \"customTag5\": [\n \"<string>\"\n ],\n \"customTag6\": [\n \"<string>\"\n ],\n \"resetCount\": [\n 123\n ],\n \"errorCount\": [\n 123\n ],\n \"durationBand\": [],\n \"minErrorCount\": 127,\n \"experimentID\": \"<string>\",\n \"variantIDs\": [\n \"<string>\"\n ],\n \"limit\": 100\n}"
response = http.request(request)
puts response.read_body{
"flows": [
{
"flowID": "<string>",
"sessionID": "<string>",
"flowType": "<string>",
"outcome": "complete",
"visitorType": "user",
"errorCount": 123,
"resetCount": 123,
"durationMs": 123,
"previousTotalCount": 123,
"previousSameTouchpointCount": 123,
"createdMs": 123,
"parentFlowID": "<string>",
"clientEnvDataID": "<string>",
"longPath": "<string>",
"userID": "<string>",
"externalID": "<string>",
"clientEnvID": "<string>",
"previousFlowDiffMs": 123,
"osName": "<string>",
"browserName": "<string>",
"osVersion": "<string>",
"browserVersion": "<string>",
"model": "<string>",
"uvpaa": true,
"applicationID": "<string>",
"touchpoint": "<string>",
"customTag1": "<string>",
"customTag2": "<string>",
"customTag3": "<string>",
"customTag4": "<string>",
"customTag5": "<string>",
"customTag6": "<string>",
"variantID": "<string>"
}
],
"totalCount": 123
}{
"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
User IDs to filter flows by (format tus-<number>).
Flow IDs to filter by (format flw-<number>).
Restrict the search to the flows held by these stored ID lists (format idl-<number>, from POST
/observe/idLists) — the same cohort handles GET /observe/timeSeries?flowListID= renders a funnel over.
Several lists are unioned, and the result is intersected with flowIDs when both are given. Counts as a
selector, so a cohort-scoped search needs no date range; all other filters (path, tags, outcome, …)
still narrow within the cohort.
Public session UUIDs to filter flows by.
Optional start of date range (yyyy-MM-dd or yyyy-MM-ddTHH:mm:ss), interpreted in UTC. Requires toDate.
Optional exclusive end of date range (yyyy-MM-dd or yyyy-MM-ddTHH:mm:ss), interpreted in UTC. Requires fromDate and must be at most 366 days after it.
Filter by built-in or project-specific custom flow type names.
1 - 50Filter by touchpoint values; null includes flows with an absent or empty touchpoint.
Filter by outcome values
complete, incomplete, skipped, invisible, visible-auto-skip Filter by long_path values (the t2 dimension of *-flow-v1)
Filter by OS name; null includes flows with an absent or empty OS name.
Filter by browser name; null includes flows with an absent or empty browser name.
Filter by OS version (the maj.min.pat string, matching the error-flavour timeseries tag)
Restrict to flows that carry an error occurrence of one of these error flavours (format erf-<number>).
Filter by application ID; null includes flows with no application ID.
Filter by first configured custom tag value; null includes absent or empty values.
Filter by second configured custom tag value; null includes absent or empty values.
Filter by third configured custom tag value; null includes absent or empty values.
Filter by fourth configured custom tag value; null includes absent or empty values.
Filter by fifth configured custom tag value; null includes absent or empty values.
Filter by sixth configured custom tag value; null includes absent or empty values.
Filter by reset count
Filter by exact error count
Filter by flow-duration band. Each token maps to a range on ob_flow.duration; multiple tokens are OR-combined. le3s=<=3s, le10s=<=10s, le30s=<=30s, le1m=<=60s, le5m=<=300s, g5m=>300s.
le3s, le10s, le30s, le1m, le5m, g5m Filter to flows whose error count is at least this value. Independent from errorCount (exact-value set); when both are supplied they are AND-combined. Pass 1 to match errored flows.
0 <= x <= 255Restrict flows to those exposed to this experiment run (format exp-<number>). Enables joining variant
attribution; each returned flow includes its variantID.
Restrict flows to these experiment variants (format exv-<number>). Requires experimentID.
Maximum number of flows to return. Defaults to 100, maximum 10000.
1 <= x <= 10000Response
Matching flows plus the total match count.
Matching flows in stable timeline order, oldest first, capped at limit.
Show child attributes
Show child attributes
Number of matching flows returned (equal to len(flows), capped at limit). This is the exact total when it is below limit; when it equals limit there may be more matches that were not counted (the endpoint runs no separate COUNT query, for efficiency).
Was this page helpful?