Developer docs

Get AI visibility

GET/sites/{siteId}/ai-visibility
Scope
ai:read

AI answers to the tracked questions, per week Per sampling week (newest first), per question and model: whether the answer named the website, linked it, and which sites it pointed to. Read from the stored weekly samples (no model is asked on request); the answer text and failed answers are left out.

Parameters

NameInDetails
siteIdRequiredpathstringWebsite id, from GET /sites.
weeksqueryintegerdefault 4, min 1, max 12Sampling weeks back from the current one, 1 to 12.
limitqueryintegerdefault 50, min 1, max 1000Questions per week, 1 to 1,000.

Response

200 · application/json

FieldDetails
weekslist of object · required
weeks[].weekdate (YYYY-MM-DD) · required; Monday of the sampling week
weeks[].answersinteger · required; Answers read this week
weeks[].mentionRateinteger · required; Percent of answers that named the website
weeks[].citationRateinteger · required; Percent of answers that linked the website
weeks[].promptsAskedinteger · required; Questions asked this week
weeks[].truncatedtrue or false · required; More questions than limit; the rest are left out
weeks[].promptslist of object · required
weeks[].prompts[].promptIdstring · required; Question id
weeks[].prompts[].promptstring · required; The question
weeks[].prompts[].localestring · required; Language the question was asked in
weeks[].prompts[].activetrue or false · required; Still asked every week
weeks[].prompts[].answerslist of object · required
weeks[].prompts[].answers[].modelstring · required; Model id, without vendor prefix or date suffix
weeks[].prompts[].answers[].modelNamestring · required; Model name as people know it
weeks[].prompts[].answers[].provideranthropic | openai | google | fixture | other · required; The company that makes the model
weeks[].prompts[].answers[].namedUstrue or false · required; The answer names the website or its brand
weeks[].prompts[].answers[].citedUstrue or false · required; The answer links a page of the website
weeks[].prompts[].answers[].citedUrlslist of string · required; Pages of the website the answer links
weeks[].prompts[].answers[].sourceUrlslist of string · required; Every page the answer cites, on any website
weeks[].prompts[].answers[].sourceslist of string · required; Websites the answer names or links, this one first when cited
weeks[].prompts[].answers[].answeredAtstring or null · required; When the model answered
notestring · required; How to read the numbers
linkaddress (URL) · required; The AI visibility screen in the app

Errors

StatusMeaning
400Bad request. Codes: bad_weeks, bad_limit.
401Missing, unknown or revoked key. Codes: missing_key, invalid_key.
403The key lacks the scope, covers another website, or its owner lost access. Codes: missing_scope, other_site, owner_left, no_owner, forbidden.
404Not found. Codes: not_found.
429Too many requests this hour for this key. Codes: rate_limited.
503Switched off for now. Codes: feature_off.

Example request

curl \
  -H "Authorization: Bearer mr_ws_…" \
  "https://app.monoranks.com/api/v1/sites/SITE_ID/ai-visibility"

Example response

{
  "weeks": [
    {
      "week": "2026-10-05",
      "answers": 6,
      "mentionRate": 50,
      "citationRate": 33,
      "promptsAsked": 2,
      "truncated": false,
      "prompts": [
        {
          "promptId": "3e5a7c9e-1a3c-4e5a-8c7e-1a3c5e7a9c1e",
          "prompt": "Best place to buy a gravel bike online in the US?",
          "locale": "en",
          "active": true,
          "answers": [
            {
              "model": "gpt-5.2",
              "modelName": "GPT-5.2",
              "provider": "openai",
              "namedUs": true,
              "citedUs": true,
              "citedUrls": [
                "https://acmebikes.com/gravel-bikes/"
              ],
              "sourceUrls": [
                "https://acmebikes.com/gravel-bikes/",
                "https://www.rei.com/c/gravel-bikes"
              ],
              "sources": [
                "acmebikes.com",
                "rei.com"
              ],
              "answeredAt": "2026-10-05T04:12:09.000Z"
            },
            {
              "model": "claude-sonnet-4-6",
              "modelName": "Claude Sonnet 4.6",
              "provider": "anthropic",
              "namedUs": false,
              "citedUs": false,
              "citedUrls": [],
              "sourceUrls": [
                "https://www.rei.com/c/gravel-bikes"
              ],
              "sources": [
                "rei.com",
                "competitivecyclist.com"
              ],
              "answeredAt": "2026-10-05T04:12:31.000Z"
            }
          ]
        }
      ]
    }
  ],
  "note": "Sampled weekly from the configured AI models; each answer is one observation. Answer text is not included. Failed answers are left out.",
  "link": "https://app.monoranks.com/sites/3f6c2a1e-8b4d-4c7a-9e21-5d0b7a6f4c13/visibility"
}

The MCP server does the same with the tool ai_visibility.