AI Overview Response Details
const url = 'https://sitechecker.pro/api/v1/ai-visibility/google-ai-overview/analysis?project_id=12345&tracked_keyword_id=1&date=2026-04-15';const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request GET \ --url 'https://sitechecker.pro/api/v1/ai-visibility/google-ai-overview/analysis?project_id=12345&tracked_keyword_id=1&date=2026-04-15' \ --header 'Authorization: Bearer <token>'Returns AI Overview response details for one tracked keyword, including cited sources and attribution data; the response snippet is included when requested. This is an on-demand check made live against the upstream source rather than read from stored data, so expect it to be slower than the reports around it.
Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Query Parameters
Section titled “Query Parameters”Example
12345Project ID.
The tracked keyword to check, from the Rank Tracker keyword set.
The date to check, as YYYY-MM-DD.
Set to “snippet” to include the full AI Overview snippet text.
Pass snippet to include the full AI Overview answer text. It is heavy, so it is omitted by default.
Responses
Section titled “Responses”AI Overview analysis
object
On-demand per-keyword AI Overview check (live upstream call, not stored). empty_reason is no_ai_overview when there is no AI Overview for the keyword+date, no_sources when there is an overview without a source list, otherwise null. snippet_text is present only with fields=snippet.
object
Rank Tracker keyword the check was run for.
Keyword text.
Search engine the keyword is tracked on.
Device the keyword is tracked on.
Country the keyword is tracked for.
Language the keyword is tracked for.
Date the check was run for.
Whether the SERP returned an AI Overview for this keyword and date.
Whether that AI Overview listed any sources.
Why the result is empty, or null when it is not.
Position of the first project citation in the source list. Null when the project is not cited.
How many of the sources belong to the project.
Sources listed by the AI Overview, including repeats of the same domain.
Distinct source domains among them.
Project sources as a percentage of all sources.
Mentions of the brand in the AI Overview text.
The AI Overview source list, in the order it was shown.
object
Position in the source list, starting at 1.
Cited URL.
Anchor text the source was shown under.
Excerpt attributed to this source, when the upstream response carries one.
Whether the source belongs to the project.
Only with fields=snippet. Full AI Overview snippet text.
Meta block for the AI Visibility detail endpoints, which return one stored record rather than a date-scoped aggregate: the project echo plus source availability and data freshness.
object
Project the response was built for.
Whether the underlying source is connected and usable for this project.
object
Latest data date available per source, null when there is none.
object
Example
{ "data": { "tracked_keyword_id": 123456, "keyword": "ai overview checker", "search_engine": "google", "device": "desktop", "country": "US", "language": "en", "check_date": "2026-05-22", "has_ai_overview": true, "has_sources": true, "empty_reason": "no_ai_overview", "owner_citation_position": 2, "your_citations_count": 1, "sources_total": 8, "unique_sources_count": 7, "your_citation_share": 12.5, "brand_mention_count": 0, "sources": [ { "position": 1, "url": "https://example.com/page", "anchor": "Example page", "is_yours": false } ] }, "meta": { "project_id": 12345, "source_status": { "ai_chat": "connected" }, "data_freshness": { "ai_chat_date": "2026-06-30" } }}Missing or invalid API key
Returned as INVALID_API_KEY when the key is missing or unknown, and as REVOKED_API_KEY when the key exists but was revoked — the latter needs a new key.
object
object
Example
{ "error": { "code": "INVALID_API_KEY", "message": "Invalid or missing API key." }}No active API entitlement for the account, or the project belongs to another account
Returned as MISSING_PUBLIC_API_ACCESS when the account has no active API entitlement, and as ACCESS_DENIED when the requested project belongs to another account.
object
object
Example
{ "error": { "code": "MISSING_PUBLIC_API_ACCESS", "message": "API access is not available: the account has no active API entitlement." }}Project or keyword not found
The exact missing resource is in error.code: PROJECT_NOT_FOUND, SEGMENT_NOT_FOUND, CRAWL_NOT_FOUND, KEYWORD_NOT_FOUND, OPPORTUNITY_NOT_FOUND, SNAPSHOT_UNAVAILABLE or NOT_FOUND.
object
object
Example
{ "error": { "code": "PROJECT_NOT_FOUND", "message": "Project not found." }}Google AI Overview data is not available for this project yet
object
object
Example
{ "error": { "code": "AI_OVERVIEW_DATA_UNAVAILABLE", "message": "Google AI Overview data is not available for this project yet. Try again after the next SERP sync." }}Validation error
Rejected query parameters. error.code is VALIDATION_ERROR for parameter validation (including a query parameter the endpoint does not accept), or INVALID_DATE_RANGE / INVALID_FILTER / INVALID_EVENT_TYPE / UNSUPPORTED_FILTER / UNSUPPORTED_DIMENSION / UNSUPPORTED_METRIC / UNSUPPORTED_SCOPE / SEGMENT_FILTER_UNSUPPORTED for module-specific rules.
object
object
Example
{ "error": { "code": "VALIDATION_ERROR", "message": "project_id is required." }}Rate limit exceeded — retry after the interval in the Retry-After header
object
object
Example
{ "error": { "code": "RATE_LIMIT_EXCEEDED", "message": "Rate limit exceeded. Try again later." }}Internal server error
object
object
Example
{ "error": { "code": "INTERNAL_ERROR", "message": "Internal server error." }}Upstream SERP data service error
object
object
Example
{ "error": { "code": "UPSTREAM_ERROR", "message": "The upstream SERP data service is temporarily unavailable. Try again later." }}