Analytics
The analytics endpoints provide pre-aggregated KPIs and time-series data for merchant dashboards. Data is computed from daily stats tables (populated by a nightly cron job) with live queries supplementing “today” numbers in real-time.
All monetary values are in cents (e.g. 4999 = $49.99). The currency field in each response indicates the store’s base currency.
Base URL: https://api.hydrajs.dev
Endpoints
| Method |
Path |
Auth |
Description |
GET |
/v1/analytics/summary |
Secret |
Get analytics summary |
GET |
/v1/analytics/revenue |
Secret |
Get revenue time series |
GET |
/v1/analytics/orders |
Secret |
Get orders time series |
GET |
/v1/analytics/top-products |
Secret |
Get top products |
GET |
/v1/analytics/action-items |
Secret |
Get action items |
Get analytics summary
GET /v1/analytics/summary
Returns aggregated KPIs for a date range with optional comparison to a previous period. Includes revenue, orders, average order value, items sold, refunds, new customers, and returning customer rate.
Query parameters
| Parameter |
Type |
Description |
from |
string |
Start date (YYYY-MM-DD). Defaults to 30 days ago. |
to |
string |
End date (YYYY-MM-DD). Defaults to today. |
compare |
string |
Comparison mode: previous_period (default), previous_year, none |
Request
curl "https://api.hydrajs.dev/v1/analytics/summary?from=2026-08-01&to=2026-08-31" \
-H "Authorization: Bearer sk_live_YOUR_KEY"
Response 200
{
"data": {
"period": { "from": "2026-08-01", "to": "2026-08-31" },
"comparison_period": { "from": "2026-07-01", "to": "2026-07-31" },
"metrics": {
"gross_revenue": { "value": 145000, "previous": 120000, "change": 20.83 },
"net_revenue": { "value": 140000, "previous": 118000, "change": 18.64 },
"orders": { "value": 42, "previous": 35, "change": 20 },
"average_order_value": { "value": 3452, "previous": 3429, "change": 0.67 },
"items_sold": { "value": 87, "previous": 70, "change": 24.29 },
"refunds": { "value": 5000, "previous": 2000, "change": 150 },
"new_customers": { "value": 18, "previous": 15, "change": 20 },
"returning_customer_rate": { "value": 35.71, "previous": 28.57, "change": 25 }
},
"currency": "usd"
}
}
Each metric includes value (current period), previous (comparison period, null if compare=none), and change (percentage change, null if previous is zero or comparison disabled).
Get revenue time series
GET /v1/analytics/revenue
Returns revenue time-series data at day, week, or month granularity. Days with no orders appear as zeros.
Query parameters
| Parameter |
Type |
Description |
from |
string |
Start date (YYYY-MM-DD). Defaults to 30 days ago. |
to |
string |
End date (YYYY-MM-DD). Defaults to today. |
interval |
string |
Aggregation interval: day (default), week, month |
Request
curl "https://api.hydrajs.dev/v1/analytics/revenue?from=2026-08-25&to=2026-08-31&interval=day" \
-H "Authorization: Bearer sk_live_YOUR_KEY"
Response 200
{
"data": {
"interval": "day",
"series": [
{ "date": "2026-08-25", "gross_revenue": 12500, "net_revenue": 12500, "orders": 3 },
{ "date": "2026-08-26", "gross_revenue": 0, "net_revenue": 0, "orders": 0 },
{ "date": "2026-08-27", "gross_revenue": 8900, "net_revenue": 8900, "orders": 2 }
],
"currency": "usd"
}
}
Get orders time series
GET /v1/analytics/orders
Returns order count, items sold, and average order value at day, week, or month granularity.
Query parameters
| Parameter |
Type |
Description |
from |
string |
Start date (YYYY-MM-DD). Defaults to 30 days ago. |
to |
string |
End date (YYYY-MM-DD). Defaults to today. |
interval |
string |
Aggregation interval: day (default), week, month |
Request
curl "https://api.hydrajs.dev/v1/analytics/orders?from=2026-08-01&to=2026-08-31" \
-H "Authorization: Bearer sk_live_YOUR_KEY"
Response 200
{
"data": {
"interval": "day",
"series": [
{ "date": "2026-08-01", "orders": 5, "items_sold": 12, "average_order_value": 3200 },
{ "date": "2026-08-02", "orders": 0, "items_sold": 0, "average_order_value": 0 }
],
"currency": "usd"
}
}
Get top products
GET /v1/analytics/top-products
Returns top products ranked by revenue or quantity sold for a date range.
Query parameters
| Parameter |
Type |
Description |
from |
string |
Start date (YYYY-MM-DD). Defaults to 30 days ago. |
to |
string |
End date (YYYY-MM-DD). Defaults to today. |
limit |
integer |
Number of products to return (1–20, default 5) |
sort_by |
string |
Sort by: revenue (default), quantity |
Request
curl "https://api.hydrajs.dev/v1/analytics/top-products?limit=3&sort_by=revenue" \
-H "Authorization: Bearer sk_live_YOUR_KEY"
Response 200
{
"data": [
{
"product_id": "prod_abc123",
"title": "Premium Cotton T-Shirt",
"image_src": "https://cdn.hydrajs.dev/store_123/img_456.webp",
"revenue": 89500,
"quantity_sold": 25,
"orders": 20
},
{
"product_id": "prod_def456",
"title": "Classic Denim Jacket",
"image_src": null,
"revenue": 45000,
"quantity_sold": 10,
"orders": 9
}
]
}
Get action items
GET /v1/analytics/action-items
Returns live counts of items requiring attention. No query parameters.
Request
curl "https://api.hydrajs.dev/v1/analytics/action-items" \
-H "Authorization: Bearer sk_live_YOUR_KEY"
Response 200
{
"data": {
"unfulfilled_orders": 5,
"low_stock_items": 3,
"pending_returns": 1
}
}
Object reference
Metric
| Field |
Type |
Description |
value |
integer/number |
Current period value |
previous |
integer/null |
Previous period value (null if comparison disabled) |
change |
number/null |
Percentage change (null if previous is 0 or N/A) |
Revenue series entry
| Field |
Type |
Description |
date |
string |
Date (YYYY-MM-DD) |
gross_revenue |
integer |
Total revenue in cents |
net_revenue |
integer |
Revenue minus refunds, cents |
orders |
integer |
Number of orders |
Orders series entry
| Field |
Type |
Description |
date |
string |
Date (YYYY-MM-DD) |
orders |
integer |
Number of orders |
items_sold |
integer |
Total items sold |
average_order_value |
integer |
Average order value in cents |
Top product
| Field |
Type |
Description |
product_id |
string |
Product ID |
title |
string |
Product title |
image_src |
string/null |
Primary image URL |
revenue |
integer |
Total revenue in cents |
quantity_sold |
integer |
Total quantity sold |
orders |
integer |
Number of orders |
Action items
| Field |
Type |
Description |
unfulfilled_orders |
integer |
Paid orders awaiting fulfillment |
low_stock_items |
integer |
Variants at or below low-stock threshold |
pending_returns |
integer |
Return requests awaiting approval |