Aggregated analytics for the integration
https://api.isnotai.comAuthenticate with Authorization: Bearer aik_v1_... (preferred) or the x-api-key header. Keys are region-bound. Authentication
The window is selected ONLY by the period parameter (24h, 7d, 30d, 90d; default 7d); groupBy selects the time-series bucket (hour, day, week; default day). The startDate and endDate fields in the response are echoes of the window resolved from period - they are NOT request parameters, and sending startDate/endDate on this route has no effect. For a custom window, filter GET /v1/sessions with startDate/endDate instead.
Query Parameters
Time window: 24h, 7d (default), 30d, 90d.
Time-series bucket size: hour, day (default), week.
Responses
Any authenticated route can also return 401 (missing or invalid key), 429 RATE_LIMITED (edge rate limit; Retry-After is an integer number of seconds), and 5xx errors, even where not listed below. See Error Handling and Rate Limits.
Payload of AnalyticsResponse
Payload of ErrorEnvelope
Payload of ErrorEnvelope
curl --request GET \
--url https://api.isnotai.com/v1/analytics \
--header 'Authorization: Bearer aik_v1_YOUR_API_KEY'
import requests
url = "https://api.isnotai.com/v1/analytics"
headers = {"Authorization": "Bearer aik_v1_YOUR_API_KEY"}
response = requests.get(url, headers=headers)
print(response.json())
const fetch = require('node-fetch');
const url = 'https://api.isnotai.com/v1/analytics';
const options = {method: 'GET', headers: {Authorization: 'Bearer aik_v1_YOUR_API_KEY'}};
try {
const response = await fetch(url, options);
const data = await response.json();
console.log(data);
} catch (error) {
console.error(error);
}
using System.Net.Http.Headers;
var client = new HttpClient();
var request = new HttpRequestMessage
{
Method = HttpMethod.Get,
RequestUri = new Uri("https://api.isnotai.com/v1/analytics"),
Headers =
{
{ "Authorization", "Bearer aik_v1_YOUR_API_KEY" },
},
};
using (var response = await client.SendAsync(request))
{
response.EnsureSuccessStatusCode();
var body = await response.Content.ReadAsStringAsync();
Console.WriteLine(body);
}
Sent to the API as Authorization: Bearer aik_v1_.... Held only in this tab's input element; re-enter on each browser tab. The docs site never receives or stores it.
{
"data": {
"period": "string",
"groupBy": "string",
"startDate": "2024-01-01T00:00:00Z",
"endDate": "2024-01-01T00:00:00Z",
"generatedAt": "2024-01-01T00:00:00Z",
"summary": {
"totalSessions": 0,
"totalEvents": 0,
"uniqueBots": 0,
"uniqueUsers": 0,
"averageBotScore": 0,
"averageEventsPerSession": 0
},
"timeSeries": [
{
"timestamp": "2024-01-01T00:00:00Z",
"sessionCount": 0,
"eventCount": 0,
"botCount": 0,
"userMatchedCount": 0
}
],
"botDetection": {
"highConfidenceBots": 0,
"mediumConfidenceBots": 0,
"lowConfidenceBots": 0,
"likelyHumans": 0
},
"userMatching": {
"totalMatched": 0,
"totalUnmatched": 0,
"matchRate": 0,
"averageCorrelationConfidence": 0
},
"topOrigins": [
{
"origin": "string",
"sessionCount": 0,
"botPercentage": 0
}
],
"deviceBreakdown": {
"mobile": 0,
"tablet": 0,
"desktop": 0,
"browserCounts": {}
}
}
}
{
"error": {
"code": "string",
"message": "string",
"details": {}
}
}
{
"error": {
"code": "string",
"message": "string",
"details": {}
}
}