Skip to main content
POST
Search flows by filter criteria

Authorizations

Authorization
string
header
required

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

application/json
userIDs
string[]

User IDs to filter flows by (format tus-<number>).

flowIDs
string[]

Flow IDs to filter by (format flw-<number>).

flowListIDs
string[]

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.

sessionIDs
string[]

Public session UUIDs to filter flows by.

fromDate
string

Optional start of date range (yyyy-MM-dd or yyyy-MM-ddTHH:mm:ss), interpreted in UTC. Requires toDate.

toDate
string

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.

flowType
string[]

Filter by built-in or project-specific custom flow type names.

Required string length: 1 - 50
touchpoint
(string | null)[]

Filter by touchpoint values; null includes flows with an absent or empty touchpoint.

outcome
enum<string>[]

Filter by outcome values

Available options:
complete,
incomplete,
skipped,
invisible,
visible-auto-skip
path
string[]

Filter by long_path values (the t2 dimension of *-flow-v1)

osName
(string | null)[]

Filter by OS name; null includes flows with an absent or empty OS name.

browserName
(string | null)[]

Filter by browser name; null includes flows with an absent or empty browser name.

osVersion
string[]

Filter by OS version (the maj.min.pat string, matching the error-flavour timeseries tag)

flavourIDs
string[]

Restrict to flows that carry an error occurrence of one of these error flavours (format erf-<number>).

applicationID
(string | null)[]

Filter by application ID; null includes flows with no application ID.

customTag1
(string | null)[]

Filter by first configured custom tag value; null includes absent or empty values.

customTag2
(string | null)[]

Filter by second configured custom tag value; null includes absent or empty values.

customTag3
(string | null)[]

Filter by third configured custom tag value; null includes absent or empty values.

customTag4
(string | null)[]

Filter by fourth configured custom tag value; null includes absent or empty values.

customTag5
(string | null)[]

Filter by fifth configured custom tag value; null includes absent or empty values.

customTag6
(string | null)[]

Filter by sixth configured custom tag value; null includes absent or empty values.

resetCount
integer[]

Filter by reset count

errorCount
integer[]

Filter by exact error count

durationBand
enum<string>[]

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.

Available options:
le3s,
le10s,
le30s,
le1m,
le5m,
g5m
minErrorCount
integer

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.

Required range: 0 <= x <= 255
experimentID
string

Restrict flows to those exposed to this experiment run (format exp-<number>). Enables joining variant attribution; each returned flow includes its variantID.

variantIDs
string[]

Restrict flows to these experiment variants (format exv-<number>). Requires experimentID.

limit
integer
default:100

Maximum number of flows to return. Defaults to 100, maximum 10000.

Required range: 1 <= x <= 10000

Response

Matching flows plus the total match count.

flows
object[]
required

Matching flows in stable timeline order, oldest first, capped at limit.

totalCount
integer
required

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).