Query Events
curl --request POST \
--url https://api.example.com/v1/query \
--header 'Content-Type: <content-type>' \
--data '
{
"id": "<string>",
"parameters": [
{}
],
"preset": "<string>",
"startDate": "<string>",
"endDate": "<string>",
"granularity": "<string>",
"filters": [
{}
],
"limit": 123,
"page": 123
}
'{
"success": true,
"requestId": "<string>",
"queryId": "<string>",
"data": [
{}
],
"meta": {}
}Events API
Query Events
Query and analyze event data with flexible filtering and aggregation
POST
/
v1
/
query
Query Events
curl --request POST \
--url https://api.example.com/v1/query \
--header 'Content-Type: <content-type>' \
--data '
{
"id": "<string>",
"parameters": [
{}
],
"preset": "<string>",
"startDate": "<string>",
"endDate": "<string>",
"granularity": "<string>",
"filters": [
{}
],
"limit": 123,
"page": 123
}
'{
"success": true,
"requestId": "<string>",
"queryId": "<string>",
"data": [
{}
],
"meta": {}
}The query endpoint provides powerful analytics capabilities for querying event data with support for multiple metrics, date ranges, filters, and time-based aggregations.
Common query types include:
Authentication
This endpoint requires authentication via:- API Key: Include in the
Authorizationheader. The API key must have theread:datascope. - Session: User must be authenticated and have access to the specified project.
Request
Headers
Bearer token with your API key (if using API key authentication)
Must be
application/jsonQuery Parameters
UUID of the website to query data for
UUID of the uptime monitor schedule to query
UUID of the short link to query
UUID of the organization for org-level queries
Timezone for date calculations (e.g., “America/New_York”, “UTC”). Defaults to UTC.
Body Parameters
Unique identifier for this query request
Array of query types to execute. Can be strings (e.g.,
"page_views") or objects with additional config:name(string, required): Query type nameid(string, optional): Custom identifier for this parameterstart_date(string, optional): Override start date for this parameterend_date(string, optional): Override end date for this parametergranularity(string, optional): Time granularity (“hourly” or “daily”)
Date range preset. Options:
today, yesterday, last_7_days, last_30_days, last_90_days, this_month, last_month, this_yearStart date in YYYY-MM-DD format or ISO datetime. Required if no preset provided.
End date in YYYY-MM-DD format or ISO datetime. Required if no preset provided.
Time granularity for aggregation:
"hourly" or "daily". Hourly limited to 30 days max.Array of filter objects to apply:
field(string): Field to filter on (e.g., “path”, “country”, “browser”)operator(string): Filter operator (“eq”, “ne”, “contains”, “not_contains”, etc.)value(string | number | array): Filter value
Maximum number of results per parameter (1-10000). Default: 100
Page number for pagination (1-based). Default: 1
Response
Whether the query executed successfully
Unique identifier for this request
Query ID from the request (if provided)
Array of result objects, one per parameter:
parameter(string): Parameter name or IDsuccess(boolean): Whether this specific query succeededdata(array): Result rowserror(string, optional): Error message if failed
Query metadata:
parameters(array): Original parameters from requesttotal_parameters(number): Number of parameters queriedpage(number): Current page numberlimit(number): Results per pagefilters_applied(number): Number of filters applied
Available Query Types
To get a list of all available query types and their configurations:curl https://api.databuddy.io/v1/query/types
page_views- Total page viewsvisitors- Unique visitorssessions- Session countbounce_rate- Bounce rate percentagepages- Top pagesreferrers- Top referrerscountries- Traffic by countrybrowsers- Browser distributiondevices- Device typesevents- Custom event tracking
Examples
Single Query with Preset
curl -X POST 'https://api.databuddy.io/v1/query?website_id=550e8400-e29b-41d4-a716-446655440000' \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"parameters": ["page_views", "visitors"],
"preset": "last_7_days"
}'
Response
{
"success": true,
"requestId": "req_abc123",
"queryId": "",
"data": [
{
"parameter": "page_views",
"success": true,
"data": [
{
"date": "2024-03-01",
"value": 1250
},
{
"date": "2024-03-02",
"value": 1430
}
]
},
{
"parameter": "visitors",
"success": true,
"data": [
{
"date": "2024-03-01",
"value": 845
},
{
"date": "2024-03-02",
"value": 923
}
]
}
],
"meta": {
"parameters": ["page_views", "visitors"],
"total_parameters": 2,
"page": 1,
"limit": 100,
"filters_applied": 0
}
}
Custom Date Range with Filters
curl -X POST 'https://api.databuddy.io/v1/query?website_id=550e8400-e29b-41d4-a716-446655440000&timezone=America/New_York' \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"parameters": ["pages"],
"startDate": "2024-03-01",
"endDate": "2024-03-07",
"filters": [
{
"field": "country",
"operator": "eq",
"value": "US"
}
],
"limit": 10
}'
Response
{
"success": true,
"requestId": "req_xyz789",
"queryId": "",
"data": [
{
"parameter": "pages",
"success": true,
"data": [
{
"path": "/home",
"views": 4523,
"visitors": 3201
},
{
"path": "/pricing",
"views": 2341,
"visitors": 1876
},
{
"path": "/features",
"views": 1987,
"visitors": 1543
}
]
}
],
"meta": {
"parameters": ["pages"],
"total_parameters": 1,
"page": 1,
"limit": 10,
"filters_applied": 1
}
}
Hourly Granularity
curl -X POST 'https://api.databuddy.io/v1/query?website_id=550e8400-e29b-41d4-a716-446655440000' \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"parameters": ["page_views"],
"startDate": "2024-03-01",
"endDate": "2024-03-02",
"granularity": "hourly"
}'
Batch Query with Multiple Requests
curl -X POST 'https://api.databuddy.io/v1/query?website_id=550e8400-e29b-41d4-a716-446655440000' \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '[
{
"id": "query_1",
"parameters": ["page_views"],
"preset": "today"
},
{
"id": "query_2",
"parameters": ["visitors"],
"preset": "yesterday"
}
]'
Response
{
"success": true,
"requestId": "req_batch123",
"batch": true,
"results": [
{
"queryId": "query_1",
"data": [
{
"parameter": "page_views",
"success": true,
"data": [...]
}
],
"meta": {...}
},
{
"queryId": "query_2",
"data": [
{
"parameter": "visitors",
"success": true,
"data": [...]
}
],
"meta": {...}
}
]
}
Error Responses
Authentication Required
{
"success": false,
"error": "Authentication required",
"code": "AUTH_REQUIRED",
"requestId": "req_abc123"
}
Access Denied
{
"success": false,
"error": "Access denied to this website",
"code": "ACCESS_DENIED",
"requestId": "req_abc123"
}
Validation Error
{
"success": false,
"error": "Unknown query type: pageviews. Did you mean 'page_views'?",
"code": "VALIDATION_ERROR",
"requestId": "req_abc123",
"details": [
{
"field": "parameters[0]",
"message": "Unknown query type: pageviews",
"suggestion": "Did you mean 'page_views'?"
}
]
}
Missing Project ID
{
"success": false,
"error": "Missing project identifier (website_id, schedule_id, link_id, or organization_id)",
"code": "MISSING_PROJECT_ID",
"requestId": "req_abc123"
}
Related Endpoints
GET /v1/query/websites- List accessible websitesGET /v1/query/types- Get available query types and configurationsPOST /v1/query/compile- Compile a query to SQL without executingPOST /v1/query/custom- Execute custom SQL-like queries
⌘I