Skip to main content
GET
Get event count time-series
Returns total event counts per day. Combine with filters to scope to a specific event, source, or location. Set group_by to a breakdown dimension (channel_type, device, browser, os, location, referrer, ref, builder_codes, or any UTM column) to split the series by that dimension. When set, event_key carries the dimension’s value (empty → Direct) instead of the event type/name; the response keeps the top 100 values and buckets the rest as Others. filters supports the string operators startsWith, endsWith, and contains (substring matches on text columns such as referrer, ref, utm_*) alongside the standard comparison operators. An unsupported operator now returns 400 Invalid query parameters rather than silently matching everything.

Authorizations

Authorization
string
header
required

Workspace API key (e.g. formo_xxx). Create one in the Formo dashboard under Team Settings > API.

Query Parameters

date_from
string<date>

Inclusive start date (YYYY-MM-DD). Defaults to 7 days before date_to.

date_to
string<date>

Inclusive end date (YYYY-MM-DD). Defaults to today.

filters
string

Array of filter conditions, JSON-encoded in the query string. Entries use { field, op, value } and are combined with implicit AND. For example, filter traffic referred by Google with [{"field":"referrer","op":"contains","value":"google"}], or filter a page with [{"field":"page","op":"eq","value":"/pricing"}]. For in / nin, pass a non-empty array value such as ["chrome","firefox"] or a pipe-delimited string such as "chrome|firefox". Array string members cannot contain a literal |, which is reserved as the Tinybird membership separator. Optional one-level nested filters use the same canonical envelope and membership rule. On the user-aggregate endpoints (lifecycle, frequency) the same array also carries profile-family entries: profile metrics (net_worth_usd, volume, revenue, points), social identity fields, a lifecycle entry ({"field":"lifecycle","op":"in","value":"New|Power user"}), and resource entries using the stable fields chains.balance, apps.balance, tokens.balance, and labels.value with named qualifier properties (chain_id, app_id, token_address, scope, tag_id). The retired per-family parameters (socials, chain_filters, app_filters, token_filters, label_filters, profile_filters, lifecycle_filter) are rejected. Overview also accepts raw Data source filters with field set to channel, ops eq/neq/in/nin, and values web, mobile, api, import, server, onchain; this is distinct from acquisition Channel (channel_type) and the two can be combined.

exclude
string

Comma-separated list of event types to exclude from results (e.g. identify,detect).

group_by
enum<string>

Optional breakdown dimension. When set, event_key carries the dimension's value (empty → Direct) instead of the event type/name, so the series splits by that dimension. Top 100 values + Others.

Available options:
channel_type,
device,
browser,
os,
location,
referrer,
ref,
utm_source,
utm_medium,
utm_campaign,
utm_content,
utm_term,
builder_codes

Response

Event time-series

Analytics endpoint response. The data array contains the rows; the exact row shape depends on the endpoint. meta carries column type information for rendering, rows is the row count, and statistics holds query timing metadata.

data
object[]
meta
object[]
rows
integer
rows_before_limit_at_least
integer
statistics
object