Skip to main content
Most read endpoints share a small set of query parameters. Learn these four — range, region, engines and brand_slug — and the rest of the API follows the same shape.

Value scales

Two fields express visibility on different scales. citation_rate on /brands/{slug}/snapshots is a fraction from 0 to 1, and so is the per_engine map beside it. score on /model runs from 0 to 100. Multiply the snapshot values by 100 when you chart the two together.
Treat the scale as part of the endpoint contract. Visibility Score explains what the number itself means.

range — the time window

Send one of these four and you’ll get identical behaviour everywhere: 7d · 30d · 90d · 365d Leave it off and you get 30 days. Some endpoints accept extra aliases beyond the four: Stick to 7d, 30d, 90d or 365d and every endpoint answers the same way. /brands/{slug}/attribution and /brands/{slug}/search-performance reject anything outside that set with 400 range must be one of 7d/30d/90d/365d. Windows are computed in UTC. The brand, portfolio and industry endpoints use whole days ending today, inclusive. The citation endpoints use a rolling window from exactly N × 24 hours ago, so counts can differ slightly from a whole-day view of the same period. /model takes no range at all. It’s always the last 30 days, and it echoes "range": "30d" back so you can see that.

engines — filtering by AI engine

Nine engine slugs exist. Send them exactly as written: Matching is exact against the stored value, so use the slug rather than a vendor name like openai or a display name like AI Overviews. Where each one goes:
  • /citations takes engines as a comma-separated list — engines=chatgpt,perplexity.
  • /industry/ranking takes engines (comma-separated) or the singular engine. The plural wins if you send both.
  • /industry/metrics takes a single engine only.
You’ll only have data for engines your plan actually scans. Lite and Growth scan six; claude, grok and deepseek are Enterprise. Filtering by an engine you don’t scan returns an empty result, not an error. See Plans and limits.

region and language

region is a lowercase ISO 3166-1 alpha-2 country code — us, gb, de, in. language is a lowercase ISO 639-1 code — en, de, es. They aren’t wired up identically: /portfolio defaults to us and en rather than to your brand’s own region. If you track brands outside the US, send region and language explicitly — region=de&language=de, for example. /brands/{slug}/snapshots takes no region parameter. It resolves the brand’s primary active region for you, which is why its numbers line up with the dashboard.

brand_slug — picking a brand

Account-wide endpoints don’t carry a brand in the path. They default to your newest tracked brand, and accept brand_slug to choose another: /topics · /model · /citations · /industry/metrics · /industry/ranking · /industry/gap · /industry/competitors/{name}/citations · /industry/competitors/{name}/prompts
Read your slugs from GET /brands rather than composing them by hand. A slug that matches nothing resolves to the default scope instead of raising an error, so a typo returns a valid-looking answer for the wrong brand.
Slugs are lowercase and hyphenated, and GET /brands lists yours.

Endpoint-specific filters

/brands/{slug}/mentions takes sentiment, one of pos, neu or neg. Anything else returns 400 invalid sentiment filter. The endpoint returns up to 100 mentions per call, so narrow with sentiment and region to get the set you want. /industry/ranking needs at least one of topics, engines or regions. Call it with only a range and you get 400 at least one of topics, engines, or regions is required. Topics cap at 50 per request and 100 characters each. The agent endpoints (/brands/{slug}/agents and /agents/pages) share three crawler filters, which combine with AND:
  • bot — exact bot name, like GPTBot.
  • vendor — exact operator, like OpenAI. Covers every bot that company runs.
  • kind — one of training_crawler, browsing_agent, agentic_browser, mcp_client.
Agent analytics explains what those four kinds mean in practice. /agents/pages adds list controls: search (substring on the path, truncated at 200 characters), folder, limit (default 10), offset, sort (hits, path, errors or uniques) and dir (asc or desc). dir is only honoured when you also send sort. status on that endpoint accepts ok, error, or a bare three-digit code like 404.

A worked example

Perplexity citations for one brand in the UK, last quarter:

Customer API

Base URL, the 21 paths, and the error table.

Rate limits

Why a wider range beats a loop over days.

Authentication

Creating and rotating the key these calls need.

MCP tools

The same filters, as arguments on 14 read-only tools.