Skip to main content
POST
Get per-entity visibility scores

Headers

x-project-id
string
required

Project ID to specify the project context

Body

application/json
startDate
string

Start date (inclusive)

Example:

"2025-01-01"

endDate
string

End date (exclusive)

Example:

"2025-02-01"

countries
string[]

Filter by country codes

Example:
languages
string[]

Filter by language codes

Example:
models
string[]

Filter by AI models

Example:
queryIds
string[]

Filter by query IDs

Example:
hasSources
enum<string>

Filter by source presence: "sources" (only with sources), "no_sources" (only without), "all" (no filter). Legacy true/false values are still accepted.

Available options:
all,
sources,
no_sources
hasShopping
enum<string>

Filter by shopping presence: "shopping" (only with shopping), "no_shopping" (only without), "all" (no filter). Legacy true/false values are still accepted.

Available options:
all,
shopping,
no_shopping
queryTagIds
string[]

Filter by query tag IDs (numeric — bigint column)

Example:
execTagIds
string[]

Filter by execution tag IDs

Example:
queryTagGroupIds
string[]

Filter by query tag group IDs — matches rows carrying any tag filed under a selected group. Combines with queryTagIds per queryTagMode.

Example:
execTagGroupIds
string[]

Filter by execution tag group IDs — matches rows carrying any tag filed under a selected group. Combines with execTagIds per execTagMode.

Example:
queryTypes
enum<string>[]

Filter by query type. Include "untyped" to also match queries without a type. Results from since-deleted queries are excluded when this filter is set.

Available options:
comparative,
informative,
perception,
untyped
queryTagMode
enum<string>
default:or

Query tag matching mode: "or" matches ANY tag (default), "and" matches ALL tags.

Available options:
and,
or
execTagMode
enum<string>
default:or

Execution tag matching mode: "or" matches ANY tag (default), "and" matches ALL tags.

Available options:
and,
or
timezone
string
default:UTC

IANA timezone for date bucketing and filtering (e.g. "Europe/Brussels"). Defaults to UTC.

Example:

"Europe/Brussels"

groupBy
enum<string>

Row grouping level for entity results. "none" = one row per entity, "division" = one row per division (entities not in a division get their own row), "group" = one row per top-level group (divisions roll up into their group). Defaults to "none".

Available options:
none,
division,
group
groupByEntityGroup
boolean
deprecated

Deprecated — use groupBy instead. true is equivalent to groupBy="group".

Example:

false

showAllEntities
boolean

Include entities that have only ever been seen in a single AI response. These are mostly one-off extraction noise and are hidden by default.

Example:

false

entityTypes
enum<string>[]

Filter which entity types to include in results. Accepted values: "owned", "primary", "competitor". Defaults to all types when omitted.

Available options:
owned,
primary,
competitor
Example:
entityIds
string[]

Limit the returned rows to these entity IDs. This narrows which entities appear without changing the total responses used to compute visibility.

Example:

Response

displayKey
string
required

Unique identifier for the entity or entity group. In per-entity mode this is the canonical entity ID; in grouped mode it is the entity group ID (or entity ID if ungrouped).

Example:

"550e8400-e29b-41d4-a716-446655440000"

displayName
string
required

Human-readable name of the entity or entity group.

Example:

"Acme Corp"

totalResponses
number
required

Total number of AI responses in the filtered date range (denominator for visibilityPct). Scoped by the request filters (project, date range, models, platforms, tags).

Example:

150

presentIn
number
required

Number of AI responses that mention this entity/group (numerator for visibilityPct). A response mentioning multiple variants of the same canonical entity is counted once.

Example:

42

visibilityPct
number | null
required

Visibility percentage — how often this entity/group appears across AI responses. Formula: (presentIn / totalResponses) × 100.

Example:

28

avgPositionRank
number
required

Weighted average position rank for this entity across all AI responses that mention it. Lower values mean the entity tends to appear higher/earlier in responses. Weighted by mention count to account for canonical entity merging.

Example:

2.5

isOwned
boolean
required

Whether this entity is owned by the project (i.e. the project's own brand or product).

Example:

true

isPrimary
boolean
required

Whether this entity is the primary (main) entity for the project.

Example:

true

isCompetitor
boolean
required

Whether this entity is a configured competitor of the project.

Example:

false

mentionCount
number
required

Total number of mention entries for this entity (raw count before dedup). Used to compute avgMentionsPerResult.

Example:

56

sentimentScore
number
required

Average sentiment score for this entity across all mentions. Scale: 0 (most negative) to 100 (most positive).

Example:

72.3

sentiment
object
required

Sentiment breakdown counts for this entity.

avgMentionsPerResult
number | null
required

Average number of times this entity is mentioned per AI response that mentions it. Formula: mentionCount / presentIn. Values > 1 indicate repeated prominence.

Example:

1.33