---
title: "AI visibility"
method: GET
path: "/sites/{site}/ai-visibility"
tags: ["Analytics"]
---

# AI visibility

`GET /sites/{site}/ai-visibility`

## Request

- Base URL: `https://api.onelence.com/v1`
- URL: `https://api.onelence.com/v1/sites/{site}/ai-visibility`
- Auth: one of:
  - OAuth 2 (authorization code, authorization URL `https://api.onelence.com/oauth/authorize`, token URL `https://api.onelence.com/oauth/token`, scopes: `analytics:read`)
  - HTTP bearer

How AI assistants (ChatGPT, Claude, Perplexity, Gemini and others) read the site and send visitors: a score, platforms, top pages, the previous period and suggested actions with steps. With AI answers set up, also what the engines answer for the questions the site tracks: which brands they name before or instead of it, and the pages they cite.

## Path parameters

- `site` string, required

## Query parameters

- `start` string
- `end` string

## Response `200`

Success.

- object
  - `object` 'ai_visibility', required
  - `site` object, required
    - `id` string, required
    - `domain` string, required
  - `window` object, required
    - `start` string, required
    - `end` string, required
  - `has_data` boolean, required
  - `crawler_coverage` 'observed' | 'not_recorded', required
  - `bot_pool` object, nullable, required
    - `used_up` boolean, required
    - `renews_at` string, nullable, required
    - `note` string, nullable, required
  - `ai_crawlers_not_kept` string[], nullable, required
  - `score` object, required
    - `value` number, nullable, required
    - `max` number, required
    - `grade` 'leading' | 'strong' | 'emerging' | 'weak' | 'barely_visible', nullable, required
    - `early` boolean, required
  - `totals` object, required
    - `answer_fetches` number, required
    - `ai_search_crawls` number, required
    - `training_crawls` number, required
    - `ai_visitors` number, required
    - `ai_conversions` number, required
    - `ai_visitor_share` number, nullable, required
    - `pages_fetched_for_answers` number, required
    - `active_platforms` number, required
  - `platforms` object[], required
    - `id` string, required
    - `name` string, required
    - `company` string, nullable, required
    - `status` string, nullable, required
    - `answer_fetches` number, required
    - `ai_search_crawls` number, required
    - `training_crawls` number, required
    - `visitors` number, required
    - `conversions` number, required
    - `last_seen` string, nullable, required
  - `top_pages` object[], required
    - `path` string, required
    - `status` string, nullable, required
    - `answer_fetches` number, required
    - `ai_visitors` number, required
    - `conversions` number, required
  - `actions` object[], required
    - `id` string, required
    - `kind` string, required
    - `title` string, required
    - `confidence` 'high' | 'medium' | 'low', nullable, required
    - `effort` 'low' | 'medium' | 'high', nullable, required
    - `observed` string[], required
    - `interpretation` string, nullable, required
    - `steps` string[], required
    - `check` string, nullable, required
    - `pages` string[], required
    - `robots_txt` string, nullable, required
  - `previous` object, required
    - `window` object, required
      - `start` string, required
      - `end` string, required
    - `score` object, required
      - `value` number, nullable, required
      - `max` number, required
      - `grade` 'leading' | 'strong' | 'emerging' | 'weak' | 'barely_visible', nullable, required
      - `early` boolean, required
    - `totals` object, required
      - `answer_fetches` number, required
      - `ai_search_crawls` number, required
      - `training_crawls` number, required
      - `ai_visitors` number, required
      - `ai_conversions` number, required
      - `ai_visitor_share` number, nullable, required
      - `pages_fetched_for_answers` number, required
      - `active_platforms` number, required
  - `answers` object, required
    - `state` 'ready' | 'waiting_for_first_run' | 'not_set_up' | 'not_available' | 'not_readable', required
    - `run` object, nullable, required
      - `started_at` string, required
      - `week_of` string, required
      - `engines` object[], required
        - `id` string, required
        - `name` string, required
      - `status` 'completed' | 'partial', required
    - `totals` object, nullable, required
      - `answered` number, required
      - `named` number, required
      - `linked` number, required
      - `no_answer` number, required
    - `engines` object[], required
      - `id` string, required
      - `name` string, required
      - `answered` number, required
      - `named` number, required
      - `linked` number, required
      - `no_answer` number, required
    - `trend` object[], required
      - `week_of` string, required
      - `started_at` string, required
      - `answered` number, required
      - `named` number, required
      - `linked` number, required
      - `no_answer` number, required
    - `share_of_voice` object[], required
      - `name` string, required
      - `role` 'site' | 'competitor' | 'other', required
      - `answers` number, required
      - `first_place` number, required
    - `questions` object[], required
      - `question` string, required
      - `page_path` string, nullable, required
      - `names_brand` boolean, required
      - `recent` object, required
        - `answered` number, required
        - `named` number, required
        - `linked` number, required
        - `no_answer` number, required
      - `answers` object[], required
        - `engine` string, required
        - `engine_name` string, required
        - `status` 'answered' | 'no_answer' | 'failed' | 'skipped', required
        - `named` boolean, nullable, required
        - `position` number, nullable, required
        - `linked` boolean, nullable, required
        - `brands_ahead` string[], required
    - `cited_domains` object[], required
      - `domain` string, required
      - `role` 'site' | 'competitor' | 'third_party', required
      - `answers` number, required
      - `answers_naming_competitors_only` number, required
      - `pages` object[], required
        - `url` string, required
        - `title` string, nullable, required
        - `answers` number, required
    - `note` string, required
    - `next_step` string, nullable, required

## Other responses

- `400`: Invalid input; `error.param` names the field.
- `401`: Missing, expired or revoked token. WWW-Authenticate points to the resource metadata.
- `402`: subscription_required or upgrade_required; the error carries billing_url.
- `403`: insufficient_scope or admin_required.
- `404`: Unknown endpoint, site, source or record.
- `429`: Rate limited. Retry after Retry-After seconds.
- `500`: OneLence could not complete the request.

---

[API](https://skmtc.dev/onelence/apis/onelence-api.md) · [All operations](https://skmtc.dev/onelence/apis/onelence-api/llms.txt) · [OpenAPI document](https://skmtc.dev/onelence/apis/onelence-api/revisions/971c72fe9a42?raw)
