Skip to main content
POST
Get Brands Report

Authorizations

X-API-Key
string
header
required

Query Parameters

project_id
string

Required if using a company api key

Example:

"or_f45b94ba-5e35-4982-93ed-285e72ee14eb"

Body

project_id
string

Required if using a company api key

Example:

"or_f45b94ba-5e35-4982-93ed-285e72ee14eb"

limit
integer
default:1000
Required range: 1 <= x <= 10000
offset
integer
default:0
Required range: 0 <= x <= 500000
start_date
string<date>
default:2026-01-01

full-date notation as defined by RFC 3339, section 5.6, for example, 2017-07-21

Pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))$
Example:

"2025-09-22"

end_date
string<date>
default:2026-01-01

full-date notation as defined by RFC 3339, section 5.6, for example, 2017-07-21

Pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))$
Example:

"2025-09-22"

previous_start_date
string<date>

Start of an explicit comparison window for deltas. Provide together with previous_end_date, or omit both to auto-derive an equal-length window immediately before [start_date, end_date].

Pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))$
previous_end_date
string<date>

End of the explicit comparison window. Provide together with previous_start_date, or omit both to auto-derive.

Pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))$
dimensions
enum<string>[]

Dimensions to break down the report by.

Available options:
prompt_id,
model_id,
model_channel_id,
tag_id,
topic_id,
date,
week,
month,
country_code,
chat_id
Example:
filters
object[]

Pre-aggregation row filters (applied as WHERE before grouping). Shrinks both the numerator and the denominator of ratio metrics. Allowed fields: model_id (deprecated), model_channel_id, country_code, prompt_id, tag_id, topic_id, chat_id, brand_id. Filtering by brand_id here also shrinks share_of_voice's denominator — so SoV collapses to 1.0 when scoping to a single brand. If you want SoV preserved (X's share against all in-scope brands), put brand_id in having instead. Multiple filters are AND'd.

Deprecated: use model_channel_id filter instead

Example:
having
object[]

Post-aggregation row filters (applied as HAVING after grouping). Selects which aggregated rows are returned without shrinking ratio-metric denominators. Multiple filters are AND'd together.

Population fields — model_id (deprecated), model_channel_id, country_code, prompt_id, tag_id, topic_id, chat_id — and brand_id take {field, operator, values} with operator in or not_in. Population fields require the matching value in dimensions so the column appears in GROUP BY.

Metric fields — visibility, share_of_voice, win_rate, sentiment, position — take {field, operator, value} with operator gt, gte, lt or lte, and need no matching dimensions entry. Each compares against the metric in the unit this endpoint returns it: visibility, share_of_voice and win_rate as a 0-1 ratio, sentiment as a 0-100 score, position as a rank where 1 is best. Values are validated against that unit, so a percentage where a ratio belongs is rejected rather than silently matching nothing. Two predicates on one field make a range; stating the same edge of a field twice, or a range no row could satisfy, is rejected. A row whose metric is undefined — no position or sentiment samples in the window — matches neither.

A metric predicate tests whichever row the grouping produces, so the same predicate asks a different question at each grouping: with dimensions: ["prompt_id"] it selects the prompts that individually pass, and with no dimensions it tests the brand's rolled-up totals.

Deprecated: use model_channel_id filter instead

Example:
order_by
object[]

Sort results by one or more fields. Multiple entries create a multi-key sort. Direction defaults to desc. When omitted, a default ordering is applied.

Example:
include_previous_period
boolean

Legacy comparison switch. When true without explicit comparison dates, each row gains a previous object computed over the adjacent equal-length window. Supplying previous_start_date and previous_end_date enables comparison over that exact window without this flag.

Response

200 - application/json

Success

Success

data
object[]
required