Skip to main content
POST
Search subflows 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
savedFilterID
string

Saved filter to apply to the filters selector (format svf-<number>), through each subflow's parent flow: a subflow is kept when its flow matches, and subflows without a parent flow are left out. Omitted or none: unfiltered (the project's default saved filter does not apply here; pass its ID to filter like the dashboards do). The filters are combined with it (AND); totalCount, flowIDs and the aggregates count the filtered subflows. Not accepted with the userIDs, flowIDs or sessionIDs selectors. The response's savedFilter says which filter was applied.

Example:

"svf-123456"

condition
all · object

Filter on each subflow's parent flow, in the condition format of saved filters (saved-filter-v1, see observeSavedFilterCondition); combined (AND) with the saved filter and the filters. Like savedFilterID, only accepted with the filters selector, and subflows without a parent flow are left out. filters.osName, filters.browserName and filters.applicationID still read the subflow's own client environment and application. Together with those filters (the saved filter does not count), the limits of saved filter definitions apply (6 levels, 50 dimension or tag conditions, 200 values per list).

includeDetails
boolean

Include batched environment, error and tag details for userIDs, flowIDs or sessionIDs selectors. Filters retain their output setting.

userIDs
string[]

User IDs to fetch subflows for (format tus-<number>). Mutually exclusive with other selectors.

flowIDs
string[]

Flow IDs to fetch subflows for (format flw-<number>). Mutually exclusive with other selectors.

sessionIDs
string[]

Public session UUIDs to fetch subflows for. Mutually exclusive with other selectors.

filters
object

Time-window selector with optional narrowing filters. All narrowing filters are AND-combined; values within one filter are OR-combined. Filters targeting a column a subflow type does not have (e.g. cdaLikelihoods on anything but passkey-login) simply exclude that type from the result.

subFlowTypes
enum<string>[]

Optional subflow types to include.

Observe subflow type.

Available options:
passkeyLogin,
passwordLogin,
socialLogin,
ssoLogin,
provideIdentifier,
decision,
passkeyEnrollment,
emailOTP,
emailLink,
setPassword,
provideData,
reset,
passkeyDeletion,
smsOTP,
totp,
appConfirmation,
systemCredential,
trustedDeviceCheck,
trustedDeviceEnrollment,
keySigning,
keyRegistration,
form
limit
integer
default:100

Maximum number of subflows to return in total across all subflow types. Defaults to 100, maximum 10000.

Required range: 1 <= x <= 10000

Response

Matching subflows.

subFlows
object[]
required

Matching subflows, capped at limit. ID-based selectors order oldest first; the filters selector orders newest first.

savedFilter
object

The saved filter the subflows were selected with. Only set for the filters selector.

totalCount
integer<int64>

Total number of matching subflows before the limit cap. Only set for the filters selector — compare against the returned count to detect truncation (analytics over a truncated result cover the most recent totalCount-of-limit slice, not the whole window).

flowIDs
string[]

Deduplicated parent flow IDs (format flw-<number>) of the returned subflows, in result order. Only set for the filters selector. Store via POST /observe/idLists to hand the cohort to user-search or a funnel.

aggregates
object[]

Per-group counts of the matching subflows — only set for output=aggregate. Ordered by count descending and capped at 5000 cells (aggregateTruncated reports the cap firing; totalCount stays exact regardless). A value of "" means the dimension is not set on the subflow.

aggregateTruncated
boolean

True when the aggregate cell cap dropped long-tail groups.