AI Chats Citation Details
const url = 'https://sitechecker.pro/api/v1/ai-visibility/ai-chats/citation-detail?project_id=12345&domain=example&date_from=2026-02-19&date_to=2026-05-19&view=unique_citations&limit=100&offset=0';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/ai-chats/citation-detail?project_id=12345&domain=example&date_from=2026-02-19&date_to=2026-05-19&view=unique_citations&limit=100&offset=0' \ --header 'Authorization: Bearer <token>'Returns the cited pages, prompts, and response context associated with one selected citation source domain. On-demand, and one view per request — unique citations or prompts, not both.
Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Query Parameters
Section titled “Query Parameters”Example
12345Project ID.
The citation source domain to drill into.
Example
2026-02-19Start of the monitoring period (inclusive), ISO date (UTC).
Example
2026-05-19End of the monitoring period (inclusive), ISO date (UTC).
Filter by AI platform.
Which side of the drilldown to return: unique_citations for the cited pages, prompts for the prompts that produced them. One view per request — the other key is absent.
Page size.
Pagination offset.
Responses
Section titled “Responses”AI Chats citation detail
object
Per-domain citation drilldown. Returns unique_citations for view=unique_citations, prompts for view=prompts (the other key is absent).
object
Source domain this drilldown is for.
Single when the drilldown covers one AI platform, all when it is aggregated across platforms.
Public ai_model when model_scope=single, otherwise the literal “all”.
Citations of this domain in the selected period.
Present for view=unique_citations.
View=unique_citations row: one cited URL from the selected source domain.
object
Cited URL on the selected source domain.
Excerpt attributed to this URL.
Times this URL was cited.
Share of the domain citations that point at this URL.
AI platforms that cited it.
Present for view=prompts.
View=prompts row: a prompt where the selected domain was used as a citation source.
object
Tracked prompt id.
Prompt text.
Country the prompt was run for.
AI platform the prompt was run on.
Times the selected domain was cited in answers to this prompt.
Answers to this prompt that mentioned the brand.
Share of answers to this prompt mentioning the brand.
AI Chats meta block for the citation detail endpoint: the list block plus the view that produced the payload.
object
Project the response was built for.
Start of the period the response covers.
End of the period the response covers.
The ai_model filter that was applied, echoed back. all when the request did not narrow it down.
The country filter that was applied, echoed back. null when no country filter was sent.
Whether AI Chats tracking is connected and usable for this project.
object
Latest AI-chat data date available for this project, null when there is none.
object
Reusable OpenAPI response schemas for the Public REST API: the error/meta envelope and one item schema per resource. Property names come from the Field registry so the documented contract and the runtime response shapes stay in lock-step.
Page size that was applied.
Pagination offset that was applied.
Which view was rendered, echoed back from the request.
Example
{ "data": { "domain": "ahrefs.com", "model_scope": "single", "ai_model": "all", "total_citations": 45, "unique_citations": [ { "url": "https://ahrefs.com/seo-audit", "snippet": "Run a free SEO audit...", "num_citations": 12, "citation_share": 26.67, "ai_models": [ "chatgpt" ] } ], "prompts": [ { "prompt_id": 12345, "prompt": "best seo audit tool", "country": "US", "ai_model": "chatgpt", "domain_citations": 3, "your_mentions": 1, "your_visibility": 33.33 } ] }, "meta": { "project_id": 12345, "date_from": "2026-05-01", "date_to": "2026-05-31", "ai_model": "all", "country": null, "source_status": { "ai_chat": "connected" }, "data_freshness": { "ai_chat_date": "2026-06-30" }, "total": 137, "limit": 50, "offset": 0, "view": "prompts" }}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 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." }}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." }}