AI visibility
API vs ChatGPT screen: why citations differ
An API response is not the screen a person sees. Here is how to log a citation that appears on screen but not through the API, without flattening it into a single yes or no.
No. When you query an engine through an API, what comes back is the API response, not the screen a person sees. Picture opening ChatGPT in a browser, asking a question, and watching your product name appear in a passage. The same prompt sent through the API can return an answer without that citation. Treat the two as separate observations: the screen is what the user sees, the API is what the program receives. RankAI does not merge them and does not infer one from the other.
Why the gap should be logged, not flattened
People working on AI visibility tend to treat "cited" as a single yes or no. But when a citation shows up on screen and not through the API, nothing has gone wrong: you have two observations that do not match. The point is not to decide which one is "true," but to keep track of both without averaging them into a figure that hides what happened. The gap is information, not noise to clean up.
The N/A rule, kept apart from the gap
RankAI applies one firm rule: when a visibility figure is unavailable, the product shows it as N/A, never as zero. Zero means "measured and absent." N/A means "not available." They are different states and should not be confused. Logging a gap between API and screen is a third thing again: it is not a missing measurement, it is a comparison between two surfaces you observed. Keeping these two levels separate stops you from attributing to an engine an absence that is really a figure you never collected.
RankAI's working proposal: an observation sheet where each row puts the same question in two columns, "screen" and "API," with three possible values for each: cited, not cited, N/A. A filled-in example: question "best tool for AI visibility"; screen = cited (the name appears in the passage); API = not cited (the answer does not contain the name); gap status = "divergent," recorded as its own entry, not as zero and not as N/A. If the API returns no usable answer at all, the API column goes to N/A and the gap is not declared, because there is nothing to compare against. This way the sheet separates three cases that often collapse into one: matching citation, divergent citation, missing observation. The sheet is our working proposal, not a shared standard, and its job is to make readable what would otherwise look like inconsistent data.
What this comparison leaves out
RankAI's public pages name ChatGPT, Perplexity, Gemini, Grok and Google AI. Claude and Grok are named but measured only after you connect them. Gemini and Google AI Overviews are not the same observation and should not be treated as a single source. These boundaries hold when you compare API and screen too: the comparison only makes sense between surfaces of the same engine, not across different engines.
Verifiable limit: the sheet describes what was observed in one session on one question. It says nothing about how often the citation appears over time or how stable it is, and it does not replace an aggregated measurement. For the full picture of surfaces and how to read them, see the deep-dive page.