api-referenceGET
GET
https://analytics.flowsery.com/analytics/api/v1/timeseriesFetch time series analytics data grouped by hour, day, week, or month.
Bearer Token (workspace token or website API key)
Workspace Tokens Need a Website Selector
Workspace API tokens can access every website in the workspace. Pass either <code>websiteId</code> or <code>domain</code> so Flowsery knows which website to query or mutate. Website API keys are already scoped to one website, so the selector can be omitted.Website Selector
| Parameter | Type | Description |
|---|---|---|
websiteId | string | Website ID to use with a workspace API token. Omit when authenticating with a website API key. |
domain | string | Website domain to use with a workspace API token when websiteId is not provided. Omit when authenticating with a website API key. |
Optional Parameters
| Parameter | Type | Description |
|---|---|---|
interval | string | Aggregation interval. Accepted values: hour, day, week, month. |
startAt | string | ISO 8601 start date/time. Defaults to the last 30 days when omitted. |
endAt | string | ISO 8601 end date/time. Defaults to now when omitted. |
timezone | string | Timezone for aggregation (e.g., UTC, America/New_York). Falls back to the site's configured timezone. |
limit | number | Echoed back in the response pagination object. It does not slice the returned series. |
offset | number | Echoed back in the response pagination object. It does not slice the returned series. |
Filter Parameters
| Parameter | Type | Description |
|---|---|---|
filter_country | string | Country name as returned by /countries, e.g. United States. Use | for several values, ! to exclude and ~ to match part of the value. |
filter_region | string | Region or state name as returned by /regions, e.g. California. |
filter_city | string | City name. |
filter_device | string | Device type: Desktop, Mobile or Tablet. Values are case-sensitive. |
filter_browser | string | Browser name (Chrome, Safari, Firefox, Edge). Safari includes Mobile Safari automatically. |
filter_os | string | Operating system (Mac OS, Windows, iOS, Android). |
filter_referrer | string | Referrer as returned by /referrers: a source name such as Google for recognized sites, otherwise the domain. |
filter_ref | string | The ref URL parameter value. |
filter_source | string | The source URL parameter value. |
filter_via | string | The via URL parameter value. |
filter_utm_source | string | UTM source. |
filter_utm_medium | string | UTM medium. |
filter_utm_campaign | string | UTM campaign. |
filter_utm_term | string | UTM term. |
filter_utm_content | string | UTM content. |
filter_page | string | Page path or URL. |
filter_entry_page | string | Entry page path or URL. |
filter_hostname | string | Hostname/domain. |
filter_channel | string | Marketing channel. |
filter_goal | string | Goal name. |
Notes
The API returns status, interval, timezone, currency, data rows, totals, and a pagination echo. Data rows include timestamp, name, visitors, sessions, revenue, newRevenue, renewalRevenue, refundedRevenue, conversionRate, and kpiValue. Whatever the interval, the window defaults to the last 30 days, so pass startAt and endAt for anything else and keep hour to ranges of a few days.Example Request (Curl)
curl --request GET \
--url 'https://analytics.flowsery.com/analytics/api/v1/timeseries?interval=day&limit=30' \
--header 'Authorization: Bearer <api-key>'200
{
"status": "success",
"interval": "day",
"timezone": "Asia/Calcutta",
"currency": "USD",
"data": [
{
"timestamp": "2025-12-17T00:00:00+05:30",
"name": "17 Dec",
"visitors": 528,
"sessions": 604,
"revenue": 1540,
"newRevenue": 1220,
"renewalRevenue": 320,
"refundedRevenue": 40,
"conversionRate": 1.42,
"kpiValue": 1540
}
],
"totals": {
"visitors": 14213,
"sessions": 20181,
"revenue": 27351
},
"pagination": { "limit": 30, "offset": 0, "total": 30 }
}