Shift fulfilment aggregated
The shift fulfilment aggregated endpoint returns shift fulfilment data grouped by time period and optional dimensions. Use this when you need summarised metrics rather than individual shift records.
For the full request/response specification, see the API reference.
Time grouping
Every request requires a time_grouping parameter that controls how data is bucketed:
| Value | Description |
|---|---|
DAY | One row per day. |
WEEK | One row per week. Week start day varies by region (Sunday in US, Monday in UK). |
MONTH | One row per calendar month. |
YEAR | One row per calendar year. |
DAY_OF_WEEK | Groups all data by day of week (e.g. all Mondays together). Week start day varies by region. |
OVERALL | A single row aggregating the entire date range. |
All time bucketing uses the shift's local timezone.
The parameter that controls time bucketing is named time_grouping on this endpoint. The worker turnover historical endpoint uses a different parameter name, period_granularity, for the equivalent concept.
Metrics
The aggregated endpoint returns the same core metrics as the shift fulfilment endpoint, computed at the group level:
- Counts:
shifts_posted,shifts_booked,shifts_unfilled,shifts_worked,no_shows,overbook_shifts - Percentages:
shifts_worked_percentageand others, recomputed asSUM(numerator) / SUM(denominator) * 100at the group level (not averaged from individual shift percentages)
This recomputation avoids skew from averaging percentages across shifts of different sizes.
How aggregation works
- Totals are sums across all shifts in the group.
- Percentages are recomputed at the group level using summed numerators and denominators. If the denominator is zero, the percentage is returned as
0.0. - Each row is grouped by
employer_id,venue_id, androle_idin addition to the time period. If you need a single row per time period across all venues and roles, apply an outer aggregation in your own query.
Request parameters
| Parameter | Required | Description |
|---|---|---|
employer_id | Yes | me (recommended) or your numeric employer ID (path parameter). me resolves to the employer associated with your OAuth credentials. |
time_grouping | Yes | Time period for aggregation (see table above). |
from_date | Yes | Start date in ISO 8601 format (YYYY-MM-DD). |
to_date | Yes | End date in ISO 8601 format (YYYY-MM-DD). |
Venue and area filtering is not available to external clients. Send an empty JSON array (-d '[]') as the request body; any filter content is ignored and the request is always treated as empty.
Example request
curl -X POST "https://client-api.indeedflex.com/v1/reporting/me/reports/shift_fulfilment/aggregated?time_grouping=WEEK&from_date=2026-01-01&to_date=2026-03-31" \ -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \ -H "Content-Type: application/json" \ -d '[]'