Visibility

Get visibility trend

Daily GEO score and visibility per engine — one point per engine per day that had answers.
GEThttps://api.vidrys.com/v1/projects/{project_id}/visibility/trend
Plan
Grow and above
Key
read
Rate cost
2 units

Points carry the score_version that produced them. Never trend across versions: when the scoring changes, the numbers are not comparable.

Authorization

Sent as a header on every request.

Authorizationstringrequired

A Vidrys API key, sent as Bearer vidrys_sk_…. A read key is enough. See Authentication.

Path parameters

project_idstringrequired

The project's id, from List projects.

Query parameters

rangeenum<string>default 30d

How far back to measure, counted from the newest run.

Values:7d30d90d

Response · 200

application/json

rangestring

The window covered.

Values:7d30d90d

pointsobject[]

Oldest first, by date then engine.

+Show child attributes
datestring

Day, as YYYY-MM-DD.

platformstring

Engine label (not the id), e.g. AI Overviews.

Values:ChatGPTPerplexityGeminiCopilotAI OverviewsClaude

geo_scorenumbernullable

The engine's GEO score that day, 0–100.

visibilitynumbernullable

The engine's visibility that day, 0–100.

score_versionstringnullable

The scoring version that produced the point, e.g. 2.0.0+r3. Compare only points that share a version — the dashboard charts the current version alone.

Errors

404 not_foundThe project or item doesn't exist in this workspace. A project from another workspace also returns 404, never 403.
422 invalid_requestA parameter or body field is missing or has the wrong type or value. The message names the field. Also returned when a write would pass the plan's prompt limit.
401 unauthorizedNo key was sent, or the key is unknown, revoked or expired, or the member who created it has left the workspace or been deactivated.
402 plan_requiredThe workspace's plan doesn't include API access. It's included on Grow, Scale and Custom.
403 workspace_not_approvedThe workspace is still waiting for approval, or wasn't approved.
429 rate_limitedToo many requests this minute. Wait for the number of seconds in the `Retry-After` header, then retry.

Every code, and what to retry, is in Errors.