Scoped AI Traffic time-series.
const url = 'https://sitechecker.pro/api/v1/ai-visibility/ai-traffic/history?project_id=12345&date_from=2026-02-19&date_to=2026-05-19&scope=overview&dimension=none&metric=sessions&history_grouping=daily&include_comparison=false';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-traffic/history?project_id=12345&date_from=2026-02-19&date_to=2026-05-19&scope=overview&dimension=none&metric=sessions&history_grouping=daily&include_comparison=false' \ --header 'Authorization: Bearer <token>'Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Query Parameters
Section titled “Query Parameters”Example
12345Project ID.
Example
2026-02-19Start of the monitoring period (inclusive), ISO date (UTC).
Example
2026-05-19End of the monitoring period (inclusive), ISO date (UTC).
Engagement_rate not available for scope=overview
Adds previous_series[] (previous same-length period).
Overview only: ai_chats,organic_search,other_channels,total
Ai_sources+ai_source only: chatgpt,perplexity,…
Pages scope only
Pages scope only (alpha-2)
Pages scope only
Pages scope: top-N pages cap
Responses
Section titled “Responses”AI Traffic time-series
object
AI Traffic time-series for one requested metric. previous_series appears only when include_comparison=true (previous same-length period).
object
One time-series line. series_type is dimension_value for a real dimension value, synthetic for the overview Total series, or aggregate for the all-AI-sources total.
object
object
One time-series line. series_type is dimension_value for a real dimension value, synthetic for the overview Total series, or aggregate for the all-AI-sources total.
object
object
object
Example
{ "data": { "scope": "overview", "dimension": "none", "metric": "sessions", "series": [ { "series_key": "chatgpt", "series_label": "chatgpt", "series_type": "dimension_value", "points": [ { "date": "2026-05-02", "value": 1240 } ] } ], "previous_series": [ { "series_key": "chatgpt", "series_label": "chatgpt", "series_type": "dimension_value", "points": [ { "date": "2026-05-02", "value": 1240 } ] } ] }}Missing or invalid API key
object
object
Example
{ "error": { "code": "unauthorized", "message": "Invalid or missing API key." }}No active API entitlement for the account, or the project belongs to another account
Returned as api_access_denied when the account has no active API entitlement, and as forbidden when the requested project belongs to another account.
object
object
Example
{ "error": { "code": "api_access_denied", "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." }}GA4 is not connected
object
object
Example
{ "error": { "code": "ga4_not_connected", "message": "Google Analytics 4 is not connected for this project." }}Validation error, unsupported scope / dimension / metric
Rejected query parameters. error.code is validation_error for parameter validation, or invalid_date_range / invalid_filter / invalid_event_type / unsupported_filter / unsupported_dimension / 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." }}