Overview
The SentinelPro API provides programmatic access to your analytics data. Use it to build custom dashboards, automate reports, or integrate analytics into your applications.
Base Configuration
- Base URL:
https://{AccountName}.sentinelpro.com/api/v1/
- Authorization: API Key (passed via SENTINEL-API-KEY header)
- Content-Type: JSON (via data query parameter, URL-encoded)
- Rate limit: 1 request per second
- API Version: v1
Authentication
Include your API key in the request headers for all API calls:
SENTINEL-API-KEY: your_api_key_here
Endpoints
1. Events Endpoint
Fetch aggregated event data based on dimensions, metrics, and filters.
Method
GET
Endpoint
/api/v1/events/
Query Param
data=<url_encoded_json>
Example Request (cURL):
curl -G "https://{AccountName}.sentinelpro.com/api/v1/events/" \ --data-urlencode 'data={ "filters": { "date": {"gt": "2025-04-29 21:00:00", "lt": "2025-05-02 23:00:00"}, "device": {"in": ["Mobile", "Desktop"]}, "propertyId": {"in": ["www.domain1.com", "www.domain2.com"]}, "eventName": {"eq": "loadedLandingPage"}, "intent": {"in": ["Evergreen", "Feed"]} }, "metrics": ["events"], "dimensions": ["date", "device"], "granularity": "hourly", "orderBy": {"date": "asc"}, "pagination": { "pageSize": 1000, "pageNumber": 1 } }' \ -H "SENTINEL-API-KEY: your_api_key_here"
2. Traffic Endpoint
Retrieve traffic insights like sessions, visits, page views, and engagement metrics.
Method
GET
Endpoint
/api/v1/traffic/
Query Param
data=<url_encoded_json>
Common Request Body Structure:
{ "filters": { "dimension": { "operator": "value" } }, "metrics": ["metric1", "metric2"], "dimensions": ["dimension1", "dimension2"], "granularity": "hourly|daily", "orderBy": { "dimensionOrMetric": "asc|desc" }, "pagination": { "pageSize": 100, "pageNumber": 1 } }
Supported Metrics
Events Endpoint
Metric | Description |
---|---|
events |
Total event count |
Traffic Endpoint
Metric | Description |
---|---|
sessions |
Total session count |
visits |
Total visits |
views |
Total pageviews |
pagesPerSession |
Views divided by sessions |
averageEngagedDuration |
Avg engaged time (seconds) |
averageEngagedDepth |
Avg scroll depth (%) |
averageConnectionSpeed |
Avg connection speed (Mbps) |
Supported Dimensions
Common Dimensions
- date
- propertyId
- pagePath (Traffic Endpoint only)
- geo
- device
- referrer
- os
- browser
- plan
- loginStatus
- utmCampaign
- utmMedium
- utmSource
- subdomain
- {Custom dimensions}
Events-specific Dimensions
- eventCategory
- eventName
- eventValue
Supported Granularity
- hourly
- daily
- fiveMinutes
Filter Operators
Operator | Description |
---|---|
eq |
Equals |
neq |
Not equals |
in |
In list |
notIn |
Not in list |
gt |
Greater than |
gte |
Greater than or equal |
lt |
Less than |
lte |
Less than or equal |
contains |
Substring match |
startsWith |
Begins with |
endsWith |
Ends with |
Example PHP Request
<?php $json = '{ "filters": { "date": {"gt": "2025-01-01 00:00:00", "lt": "2025-02-01 00:00:00"}, "device": {"in": ["Mobile", "Desktop"]} }, "granularity": "hourly", "metrics": ["events"], "dimensions": ["date", "device", "eventName"], "orderBy": {"date": "asc", "events": "asc"}, "pagination": { "pageSize": 100, "pageNumber": 1 } }'; $encodedData = urlencode($json); $curl = curl_init(); curl_setopt_array($curl, [ CURLOPT_URL => "https://{AccountName}.sentinelpro.com/api/v1/events/?data=" . $encodedData, CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => [ "SENTINEL-API-KEY: your_api_key_here" ], ]); $response = curl_exec($curl); curl_close($curl); echo $response;
Response Structure
{ "totalCount": 146, "totalPage": 1, "currentPage": 1, "extraData": [], "totals": [], "data": [ { "date": "2025-04-29 22:00:00", "device": "Desktop", "events": "53" }, ... ] }
Response Fields:
Field | Description |
---|---|
totalCount |
Total rows matching the query |
totalPage |
Total number of pages available |
currentPage |
Current page number |
data |
Array of metric breakdowns by dimensions |
totals |
Reserved for future total aggregations |
extraData |
Reserved for additional metadata |