Get all dashboards folders
GET/perses-public/api/v1/projects
Returns every folder in the account, sorted by name. Each entry pairs the folder with its dashboards.
The dashboards array is filled only when the withDashboards query parameter is present; otherwise it is always empty. The parameter works by presence, so ?withDashboards=false fills it just as ?withDashboards does.
Calling this endpoint creates the account's root folder if it doesn't exist yet.
Request
Query Parameters
Include each folder's dashboards. Any value, including an empty one, turns this on.
Responses
- 200
- 401
The account's folders.
- application/json
- Schema
- Example (from schema)
Schema
- Array [
- Array [
- ]
- ]
project object
A dashboard folder. Carries the Perses project document in doc, wrapped in the fields Logz.io stores alongside it.
The folder's identifier, and the only way to address it.
The folder's name. Set from metadata.name when the folder is created, and replaced by spec.display.name on an update or by newProjectName on a rename.
doc object
A Perses project document. This is the request body for creating and updating a dashboard folder.
Possible values: [Project]
metadata objectrequired
The folder's identity. Required, must be non-empty, and has to be unique within the account.
spec objectrequired
display objectrequired
How the folder is labelled in the app. Required on both create and update.
The name shown in the app. Required, and must be non-empty. On an update it also becomes the folder's name.
Internal handle for the account that owns the folder.
Numeric id of the principal that created the folder. For a folder created through this API this is the id of the API token, not of a user.
Returned as true or false by create, update and rename, and as 1 or 0 by the list, get and search endpoints.
Null unless the folder was deleted.
Null unless the folder was deleted.
dashboards object[]
The folder's dashboards. Empty in Get all dashboard folders unless withDashboards is present, and limited to the matching dashboards in Search dashboard folders.
The dashboard's stable identifier. It survives updates and moves, and every endpoint addresses a dashboard by this value. This is the one to store.
Identifier of the version row holding the current revision. A new value is issued on every update, and it can't be used to address the dashboard. A dashboard that has never been updated has the same value here as in uid, which makes the two easy to confuse.
Internal marker for the dashboard, equal to uid for dashboards created through this API. The name shown in the app is doc.spec.display.name, and the name that search matches is doc.metadata.name.
The id of the folder holding the dashboard.
doc object
A Perses dashboard document. Only metadata.name is validated by Logz.io; spec is stored as sent and has to be a valid Perses dashboard spec for the dashboard to render in the app.
Possible values: [Dashboard]
metadata objectrequired
The dashboard's identity, and the only field both search endpoints match on. Required on create and update.
Set by the server from the folder in the request path. Any value sent here is replaced.
spec objectrequired
Extra properties are allowed. The Perses dashboard spec. See the Perses dashboard specification for the panel, layout and query plugin shapes.
display object
How the dashboard is labelled in the app.
Default time range, as a duration string.
Auto-refresh interval, as a duration string.
Panel definitions, keyed by panel name.
Grid layouts placing the panels.
Datasources scoped to this dashboard, keyed by name.
Revision number. Starts at 1 and increments on every update.
Numeric id of the principal that created the dashboard. For a dashboard created through this API this is the id of the API token, not of a user.
Numeric id of the principal that last updated the dashboard.
When this version was written. An update stamps a new value, so this is not the creation time of the original dashboard.
Whether the dashboard was made private in the Logz.io app. Privacy can't be changed through this API, and dashboards created through it are never private.
Null unless the dashboard was deleted.
Null unless the dashboard was deleted.
[
{
"project": {
"id": "0b9f6e2a-3c1d-4e8f-9a7b-1c2d3e4f5a6b",
"name": "team-dashboards",
"doc": {
"kind": "Project",
"metadata": {
"name": "team-dashboards"
},
"spec": {
"display": {
"name": "Team Dashboards",
"description": "Dashboards owned by the platform team"
}
}
},
"entityId": 11111,
"createdBy": 22222,
"updatedBy": 22222,
"createdAt": "2026-08-14T09:12:31.000Z",
"updatedAt": "2026-08-14T09:12:31.000Z",
"isDeleted": false,
"deletedAt": "2026-09-15T09:37:20.024Z",
"deletedBy": 0
},
"dashboards": [
{
"uid": "3fa2c4b1-6d5e-4a90-8b21-7c4e5f6a8b90",
"id": "7d1e5a90-2b44-4c18-9f03-5a6b7c8d9e01",
"name": "3fa2c4b1-6d5e-4a90-8b21-7c4e5f6a8b90",
"projectId": "0b9f6e2a-3c1d-4e8f-9a7b-1c2d3e4f5a6b",
"doc": {
"kind": "Dashboard",
"metadata": {
"name": "cpu-usage",
"project": "string",
"tags": [
"infra"
]
},
"spec": {
"display": {
"name": "CPU usage",
"description": "string"
},
"duration": "1h",
"refreshInterval": "30s",
"variables": [
{}
],
"panels": {},
"layouts": [
{}
],
"datasources": {}
}
},
"version": 2,
"createdBy": 22222,
"updatedBy": 22222,
"createdAt": "2026-08-14T09:12:31.000Z",
"updatedAt": "2026-08-15T10:03:02.000Z",
"isPrivate": false,
"isDeleted": false,
"deletedAt": "2026-09-15T09:37:20.025Z",
"deletedBy": 0
}
]
}
]
The API token is missing or invalid.
- application/json
- Schema
- Example (from schema)
Schema
Quote this when contacting support about a failed request.
Null for most dashboard errors.
Extra context for the error, when there is any.
{
"statusCode": 400,
"message": "Dashboard name is required",
"requestId": "string",
"errorCode": "string",
"parameters": {}
}