Drill into report rows
Returns the paginated row-level records behind a metric — either the whole reporting window, or one specific data point from a previous POST /v2/reports/query response.
Send the same metric, date range, granularity, filters, groupBy / segmentBy and view as the query you’re drilling into, plus dataPointFilters selecting the data point:
timeBucket— adatefrom the time seriesgroupValue/segmentValue— agroup/segmentvalue from grouped datadayOfWeek+hourOfDay— a heatmap cell (hourly_heatmapview)flowPathIdorsourceNodeId+targetNodeId— a flow edge (sankeyview)
Pass dataPointFilters: {} to list all rows behind the metric for the window.
Results are paginated with page / pageSize (max 200 per page); availableColumns describes every column the dataset can return and defaultColumnIds the recommended subset. Rows are keyed by column ID; identity cells (teammates, contacts) are objects with id + label.
Version Availability
This endpoint is only available in API version 2026-01-01.nova and newer, and only for workspaces with the Reports product enabled (404 otherwise).
Body ParametersJSON
End of the reporting window (ISO 8601 date or datetime, inclusive). Windows ending before 2026-07-12 are rejected.
Start of the reporting window (ISO 8601 date or datetime, inclusive). Reporting data is available from 2026-07-12; crossing windows are clamped to that boundary.
Stable editor ID of the saved chart that launched this drill-in.
Column IDs to include in each returned row. Omit for legacy full-width static rows; pass an empty array to use defaultColumnIds.
A metric ID from the datasets catalog. Use when the originating chart aggregates several metrics to pick which one the drill-in follows. Defaults to metric.
Drill into report rows
curl https://do.featurebase.app/v2/reports/drill-in \
-H 'Content-Type: application/json' \
-H "Authorization: Bearer $FEATUREBASE_API_KEY" \
-d '{
"endDate": "2026-07-15",
"granularity": "day",
"metric": "new_conversations",
"startDate": "2026-07-12",
"view": "standard"
}'{
"availableColumns": [
{
"id": "id",
"name": "name",
"supportsSort": true,
"valueType": "valueType",
"category": "category"
}
],
"defaultColumnIds": [
"string"
],
"meta": {
"datasetId": "datasetId",
"metricId": "metricId",
"rawMetricId": "rawMetricId",
"reconciliation": {
"kind": "rows",
"rowCount": 0,
"status": "not_applicable",
"denominatorHours": 0,
"displayedRate": 0,
"eligibleDenominatorTotal": 0,
"rawNumeratorTotal": 0
},
"rowGrain": "rowGrain",
"rowSemantics": "metric_rows",
"sourceFact": "sourceFact",
"emptyReason": "no_matching_rows",
"metricRowId": "metricRowId"
},
"object": "report_drill_in_result",
"page": 0,
"pageSize": 0,
"rows": [
{
"foo": "string"
}
],
"timezone": "timezone",
"total": 0
}Returns Examples
{
"availableColumns": [
{
"id": "id",
"name": "name",
"supportsSort": true,
"valueType": "valueType",
"category": "category"
}
],
"defaultColumnIds": [
"string"
],
"meta": {
"datasetId": "datasetId",
"metricId": "metricId",
"rawMetricId": "rawMetricId",
"reconciliation": {
"kind": "rows",
"rowCount": 0,
"status": "not_applicable",
"denominatorHours": 0,
"displayedRate": 0,
"eligibleDenominatorTotal": 0,
"rawNumeratorTotal": 0
},
"rowGrain": "rowGrain",
"rowSemantics": "metric_rows",
"sourceFact": "sourceFact",
"emptyReason": "no_matching_rows",
"metricRowId": "metricRowId"
},
"object": "report_drill_in_result",
"page": 0,
"pageSize": 0,
"rows": [
{
"foo": "string"
}
],
"timezone": "timezone",
"total": 0
}