Dashboards
Combine saved Insights, Journeys, and Funnels in dashboards with shared dates, filters, layouts, and per-report results.
Dashboards bring up to 12 saved Insights, Journeys, and Funnels together under one set of dates and filters. Each tile keeps its report's own settings, and removing a tile or deleting a dashboard never deletes the reports. The Dashboards guide shows the same feature in the app.
Reading requires web-analytics:view and changing requires web-analytics:write. Tiles also respect the permissions of the report they show: Insights need variables:find-custom, and Journeys limited to specific sources need source:view. Your organization needs Analytics access.
Updates and deletes take the dashboard's current expectedRevision, and a stale one returns 409 so you never overwrite a teammate's edit. A PATCH replaces any reportContext or tiles you send in full, and null clears a description or filter. Tile results use one absolute UTC date range so every tile lines up. Include the dashboard's filter to apply it, or leave it out to use only each report's own filters. Comparison applies to Insight tiles. Structured query parameters are JSON-encoded.
GET/rest/v1/dashboards
Ours Privacy API key
In: header
Query Parameters
Maximum dashboards to return. Defaults to 20; values above 100 are capped at 100. Each page scans at most 100 configurations in stable ID order, so pages may be short even when more results exist.
Opaque pagination.nextCursor from the previous page, scoped to the account and search text. Continue while pagination.hasMore is true; changing the search requires starting without a cursor.
Case-insensitive substring search on Dashboard names.
length <= 200Response Body
application/json
application/json
application/json
application/json
application/json
application/json
curl -X GET "https://example.com/rest/v1/dashboards"{ "entities": [ { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "revision": "b587a570-d9a5-40c2-87da-edba28b3005f", "name": "string", "description": "string", "reportContext": { "dateRange": { "from": "string", "to": "string", "timeZone": "UTC" } }, "filter": { "version": 1, "filter": { "kind": "and", "children": [ { "kind": "and", "children": [] } ] } }, "tiles": [ { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "report": { "kind": "insight", "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08" }, "layout": { "width": 3, "height": 240 } } ], "createdAt": "2019-08-24T14:15:22Z", "updatedAt": "2019-08-24T14:15:22Z", "createdByUserId": "string", "updatedByUserId": "string" } ], "pagination": { "nextCursor": "string", "hasMore": true }, "unavailableCount": 0, "warnings": [ { "code": "string", "message": "string" } ]}POST/rest/v1/dashboards
Ours Privacy API key
In: header
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
curl -X POST "https://example.com/rest/v1/dashboards" \ -H "Content-Type: application/json" \ -d '{ "name": "string", "reportContext": { "dateRange": { "from": "string", "to": "string" } }, "tiles": [ { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "report": { "kind": "insight", "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08" }, "layout": { "width": 3, "height": 240 } } ] }'{ "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "revision": "b587a570-d9a5-40c2-87da-edba28b3005f", "name": "string", "description": "string", "reportContext": { "dateRange": { "from": "string", "to": "string", "timeZone": "UTC" } }, "filter": { "version": 1, "filter": { "kind": "and", "children": [ { "kind": "and", "children": [] } ] } }, "tiles": [ { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "report": { "kind": "insight", "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08" }, "layout": { "width": 3, "height": 240 } } ], "createdAt": "2019-08-24T14:15:22Z", "updatedAt": "2019-08-24T14:15:22Z", "createdByUserId": "string", "updatedByUserId": "string"}GET/rest/v1/dashboards/{id}
Ours Privacy API key
In: header
Path Parameters
Saved Dashboard identifier returned by list_dashboards or create_dashboard.
uuidResponse Body
application/json
application/json
application/json
application/json
application/json
application/json
curl -X GET "https://example.com/rest/v1/dashboards/497f6eca-6276-4993-bfeb-53cbbbba6f08"{ "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "revision": "b587a570-d9a5-40c2-87da-edba28b3005f", "name": "string", "description": "string", "reportContext": { "dateRange": { "from": "string", "to": "string", "timeZone": "UTC" } }, "filter": { "version": 1, "filter": { "kind": "and", "children": [ { "kind": "and", "children": [] } ] } }, "tiles": [ { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "report": { "kind": "insight", "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08" }, "layout": { "width": 3, "height": 240 } } ], "createdAt": "2019-08-24T14:15:22Z", "updatedAt": "2019-08-24T14:15:22Z", "createdByUserId": "string", "updatedByUserId": "string"}PATCH/rest/v1/dashboards/{id}
Ours Privacy API key
In: header
Path Parameters
Saved Dashboard identifier returned by list_dashboards or create_dashboard.
uuidRequest Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
application/json
curl -X PATCH "https://example.com/rest/v1/dashboards/497f6eca-6276-4993-bfeb-53cbbbba6f08" \ -H "Content-Type: application/json" \ -d '{ "expectedRevision": "01b5419f-7ce1-4016-a16c-802ea2b68a5e" }'{ "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "revision": "b587a570-d9a5-40c2-87da-edba28b3005f", "name": "string", "description": "string", "reportContext": { "dateRange": { "from": "string", "to": "string", "timeZone": "UTC" } }, "filter": { "version": 1, "filter": { "kind": "and", "children": [ { "kind": "and", "children": [] } ] } }, "tiles": [ { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "report": { "kind": "insight", "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08" }, "layout": { "width": 3, "height": 240 } } ], "createdAt": "2019-08-24T14:15:22Z", "updatedAt": "2019-08-24T14:15:22Z", "createdByUserId": "string", "updatedByUserId": "string"}DELETE/rest/v1/dashboards/{id}
Ours Privacy API key
In: header
Path Parameters
Saved Dashboard identifier returned by list_dashboards or create_dashboard.
uuidQuery Parameters
Current revision from get_dashboard, list_dashboards, or the last write. A stale revision returns 409; reload before retrying.
uuidResponse Body
application/json
application/json
application/json
application/json
application/json
application/json
application/json
curl -X DELETE "https://example.com/rest/v1/dashboards/497f6eca-6276-4993-bfeb-53cbbbba6f08?expectedRevision=497f6eca-6276-4993-bfeb-53cbbbba6f08"{ "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "deleted": true, "deletedRevision": "cb5c94d3-b0a8-48db-bf1e-b2828973ba39"}POST/rest/v1/dashboards/{id}/duplicate
Ours Privacy API key
In: header
Path Parameters
Saved Dashboard identifier returned by list_dashboards or create_dashboard.
uuidRequest Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
application/json
curl -X POST "https://example.com/rest/v1/dashboards/497f6eca-6276-4993-bfeb-53cbbbba6f08/duplicate" \ -H "Content-Type: application/json" \ -d '{ "expectedRevision": "01b5419f-7ce1-4016-a16c-802ea2b68a5e" }'{ "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "revision": "b587a570-d9a5-40c2-87da-edba28b3005f", "name": "string", "description": "string", "reportContext": { "dateRange": { "from": "string", "to": "string", "timeZone": "UTC" } }, "filter": { "version": 1, "filter": { "kind": "and", "children": [ { "kind": "and", "children": [] } ] } }, "tiles": [ { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "report": { "kind": "insight", "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08" }, "layout": { "width": 3, "height": 240 } } ], "createdAt": "2019-08-24T14:15:22Z", "updatedAt": "2019-08-24T14:15:22Z", "createdByUserId": "string", "updatedByUserId": "string"}GET/rest/v1/dashboards/preview
Ours Privacy API key
In: header
Query Parameters
Required preview input: tileId, report { kind, id }, and context { from, to, filter? }; comparison is optional. JSON-encode this object in the REST query string; maximum 16384 bytes before URL encoding. Preview does not save a Dashboard or change the report.
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
curl -X GET "https://example.com/rest/v1/dashboards/preview?input=%7B%22tileId%22%3A%2211111111-1111-4111-8111-111111111111%22%2C%22report%22%3A%7B%22kind%22%3A%22insight%22%2C%22id%22%3A%2222222222-2222-4222-8222-222222222222%22%7D%2C%22context%22%3A%7B%22from%22%3A%222026-09-01%22%2C%22to%22%3A%222026-09-07%22%7D%2C%22comparison%22%3A%7B%22kind%22%3A%22previous_period%22%7D%7D"{ "kind": "insight", "tileId": "9db048b2-8e44-4092-82af-95bc11c3d9a3", "computedAt": "2019-08-24T14:15:22Z", "report": { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "revision": "b587a570-d9a5-40c2-87da-edba28b3005f", "name": "string", "description": "string", "definition": { "version": 1, "kind": "insight", "metrics": [ { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "name": "string", "eventNames": [ "string" ], "aggregation": "event_count", "property": { "property": "event.properties", "type": "number", "path": [ "string" ] }, "filter": { "version": 1, "filter": { "kind": "and", "children": [ { "kind": "and", "children": [] } ] } } } ], "filter": { "version": 1, "filter": { "kind": "and", "children": [ { "kind": "and", "children": [] } ] } }, "interval": "day" }, "reportContext": { "dateRange": { "from": "string", "to": "string", "timeZone": "UTC" } }, "view": { "visualization": "line", "stacked": true, "yAxisScale": "linear", "cumulative": true, "series": [ { "metricId": "c2cc9ad9-a69d-40a3-8e01-a95e09e71978", "color": "string", "hidden": true } ], "tableSort": { "column": "label", "direction": "asc" }, "smoothing": "none", "smoothingWindow": 2 }, "createdAt": "2019-08-24T14:15:22Z", "updatedAt": "2019-08-24T14:15:22Z", "createdByUserId": "string", "updatedByUserId": "string" }, "result": { "semanticVersion": 1, "engine": "clickhouse", "sourcePolicy": "string", "sourceRevision": "string", "sourceLimitations": [ "string" ], "scope": { "from": "string", "to": "string", "interval": "day", "timeZone": "UTC", "sourceCompleteness": "unknown", "executedAt": "2019-08-24T14:15:22Z", "cumulative": true, "comparison": { "kind": "previous_period", "from": "string", "to": "string" } }, "series": [ { "key": "string", "metricId": "c2cc9ad9-a69d-40a3-8e01-a95e09e71978", "label": "string", "breakdownValues": [ { "property": "string", "value": "string" } ], "comparison": "previous_period", "aggregation": "event_count", "points": [ { "bucketStart": "2019-08-24T14:15:22Z", "bucketEnd": "2019-08-24T14:15:22Z", "isPartial": true, "raw": 0, "smoothed": 0, "cumulative": 0 } ], "rangeValue": 0 } ], "reportId": "836df459-dc40-4aa1-972a-6eb0a864dff9", "revision": "b587a570-d9a5-40c2-87da-edba28b3005f" }}GET/rest/v1/dashboards/{id}/tile-result
Ours Privacy API key
In: header
Path Parameters
Saved Dashboard identifier returned by list_dashboards or create_dashboard.
uuidQuery Parameters
Current revision from get_dashboard, list_dashboards, or the last write. A stale revision returns 409; reload before retrying.
uuidTile identifier from get_dashboard, or a new unique tile identifier for a report preview.
uuidComplete execution context: inclusive UTC from/to dates and an optional temporary filter. Pass the saved Dashboard filter from get_dashboard to include it; omitting filter applies only report-native filters. Resolve dates once for every tile. This does not change the saved Dashboard or report.
Temporary comparison for Insight tiles only. JSON-encoded in the REST query string; never saved.
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
application/json
curl -X GET "https://example.com/rest/v1/dashboards/497f6eca-6276-4993-bfeb-53cbbbba6f08/tile-result?expectedRevision=497f6eca-6276-4993-bfeb-53cbbbba6f08&tileId=497f6eca-6276-4993-bfeb-53cbbbba6f08&context=string"{ "kind": "insight", "tileId": "9db048b2-8e44-4092-82af-95bc11c3d9a3", "computedAt": "2019-08-24T14:15:22Z", "report": { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "revision": "b587a570-d9a5-40c2-87da-edba28b3005f", "name": "string", "description": "string", "definition": { "version": 1, "kind": "insight", "metrics": [ { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "name": "string", "eventNames": [ "string" ], "aggregation": "event_count", "property": { "property": "event.properties", "type": "number", "path": [ "string" ] }, "filter": { "version": 1, "filter": { "kind": "and", "children": [ { "kind": "and", "children": [] } ] } } } ], "filter": { "version": 1, "filter": { "kind": "and", "children": [ { "kind": "and", "children": [] } ] } }, "interval": "day" }, "reportContext": { "dateRange": { "from": "string", "to": "string", "timeZone": "UTC" } }, "view": { "visualization": "line", "stacked": true, "yAxisScale": "linear", "cumulative": true, "series": [ { "metricId": "c2cc9ad9-a69d-40a3-8e01-a95e09e71978", "color": "string", "hidden": true } ], "tableSort": { "column": "label", "direction": "asc" }, "smoothing": "none", "smoothingWindow": 2 }, "createdAt": "2019-08-24T14:15:22Z", "updatedAt": "2019-08-24T14:15:22Z", "createdByUserId": "string", "updatedByUserId": "string" }, "result": { "semanticVersion": 1, "engine": "clickhouse", "sourcePolicy": "string", "sourceRevision": "string", "sourceLimitations": [ "string" ], "scope": { "from": "string", "to": "string", "interval": "day", "timeZone": "UTC", "sourceCompleteness": "unknown", "executedAt": "2019-08-24T14:15:22Z", "cumulative": true, "comparison": { "kind": "previous_period", "from": "string", "to": "string" } }, "series": [ { "key": "string", "metricId": "c2cc9ad9-a69d-40a3-8e01-a95e09e71978", "label": "string", "breakdownValues": [ { "property": "string", "value": "string" } ], "comparison": "previous_period", "aggregation": "event_count", "points": [ { "bucketStart": "2019-08-24T14:15:22Z", "bucketEnd": "2019-08-24T14:15:22Z", "isPartial": true, "raw": 0, "smoothed": 0, "cumulative": 0 } ], "rangeValue": 0 } ], "reportId": "836df459-dc40-4aa1-972a-6eb0a864dff9", "revision": "b587a570-d9a5-40c2-87da-edba28b3005f" }}Next Steps
How is this guide?

