Dashboard APIs
Programmatic access to dashboards and reports
The Veza Dashboard API (referred to as "Assessment Reports" in the API) enables programmatic access to Veza dashboards, queries, and analytics. You can use these APIs to automate dashboard management, retrieve time-series data, and integrate Veza insights into your own tools and workflows.
The Dashboard API enables you to:
List and filter dashboards by integration, category, or risk level
Retrieve time-series and comparison data for trend analysis
Create custom dashboards programmatically
Share dashboards with teams via API
Track dashboard changes and query results over time
Important concepts
Terminology
Assessment Reports (API term) = Dashboards (UI term)
Assessment Queries (API term) = Saved Queries (UI term)
Conceptually, these APIs manage Reports, presented to users in Veza as Dashboards for visibility, action, and collaboration.
A Report is a collection of Saved Queries, which can be constructed using the Query Builder or Query Builder API.
Understanding dashboard identifiers
Dashboard IDs are stable UUID identifiers that remain constant regardless of dashboard name changes, modifications to dashboard contents, or sharing status. IDs are universally unique identifiers such as 64e4231c-ead9-4bf0-bed7-afa94511f476.
You can find dashboard IDs by:
Using the List Dashboards endpoint with filters
Viewing the dashboard URL in the Veza UI:
/app/dashboard/library/{dashboard_id}Checking the OOTB Dashboards reference for system dashboard IDs
Dashboard types
Attempting to modify or delete system-created dashboards will return a 422 Unprocessable Entity error.
Dashboards have a type field indicating their origin:
system_created: Out-of-the-box (OOTB) dashboards created and managed by Veza. These cannot be modified or deleted via API and are available to all tenants automatically.user_created: Custom dashboards created using the Veza GUI or APIs, specific to your organization. These dashboards can be modified, shared, and deleted via API.
Authentication
You can issue new API keys from Administration > API Keys > Add New API Key. Provide the key as the bearer auth token in the header of each request.
Required Roles:
View dashboards
viewer, operator, admin
Create/modify dashboards
admin, operator
Share dashboards
admin
Example:
curl --location --request GET \
'https://company.veza.com/api/preview/assessments/reports' \
--header 'Authorization: Bearer YOUR_API_TOKEN' \
--header 'Accept: application/json'API Endpoints
Dashboard Management
List All Dashboards
The maximum number of results to be returned. Fewer results may be returned even when more pages exist.
The token specifying the specific page of results to retrieve.
OK
Default error response
GET /api/preview/assessments/reports HTTP/1.1
Host: your-tenant.cookiecloud.ai
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
"values": [
{
"id": "text",
"name": "text",
"description": "text",
"type": "text",
"variables": [
"text"
],
"customized_variables": [
{
"key": "text",
"value": "text"
}
],
"created_by": "text",
"visibility": 1,
"owners": [
"text"
],
"integration_types": [
"text"
],
"labels": [
"text"
],
"created_at": "2025-10-25T06:40:11.136Z",
"updated_at": "2025-10-25T06:40:11.136Z",
"report_type": 1,
"dynamic_filter": "text",
"sections": [
{
"name": "text",
"description": "text",
"section_type": 1,
"queries": [
"text"
],
"query_display_properties": [
{
"query_id": "text",
"display_name": "text"
}
],
"dynamic_display_name": "text"
}
],
"supported_display_modes": [
1
],
"namespace": "text",
"shared": true,
"team_id": "text"
}
],
"next_page_token": "text",
"has_more": true
}Get Specific Dashboard
OK
Default error response
GET /api/preview/assessments/reports/{id} HTTP/1.1
Host: your-tenant.cookiecloud.ai
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
"value": {
"id": "text",
"name": "text",
"description": "text",
"type": "text",
"variables": [
"text"
],
"customized_variables": [
{
"key": "text",
"value": "text"
}
],
"created_by": "text",
"visibility": 1,
"owners": [
"text"
],
"integration_types": [
"text"
],
"labels": [
"text"
],
"created_at": "2025-10-25T06:40:11.136Z",
"updated_at": "2025-10-25T06:40:11.136Z",
"report_type": 1,
"dynamic_filter": "text",
"sections": [
{
"name": "text",
"description": "text",
"section_type": 1,
"queries": [
"text"
],
"query_display_properties": [
{
"query_id": "text",
"display_name": "text"
}
],
"dynamic_display_name": "text"
}
],
"supported_display_modes": [
1
],
"namespace": "text",
"shared": true,
"team_id": "text"
}
}Create Dashboard
OK
Default error response
POST /api/preview/assessments/reports HTTP/1.1
Host: your-tenant.cookiecloud.ai
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 389
{
"name": "text",
"description": "text",
"visibility": 1,
"report_type": 1,
"dynamic_filter": "text",
"sections": [
{
"name": "text",
"description": "text",
"section_type": 1,
"queries": [
"text"
],
"query_display_properties": [
{
"query_id": "text",
"display_name": "text"
}
],
"dynamic_display_name": "text"
}
],
"supported_display_modes": [
1
],
"dynamic_report_headings": {
"ANY_ADDITIONAL_PROPERTY": "text"
},
"preview_only": true
}{
"value": {
"id": "text",
"name": "text",
"description": "text",
"type": "text",
"variables": [
"text"
],
"customized_variables": [
{
"key": "text",
"value": "text"
}
],
"created_by": "text",
"visibility": 1,
"owners": [
"text"
],
"integration_types": [
"text"
],
"labels": [
"text"
],
"created_at": "2025-10-25T06:40:11.136Z",
"updated_at": "2025-10-25T06:40:11.136Z",
"report_type": 1,
"dynamic_filter": "text",
"sections": [
{
"name": "text",
"description": "text",
"section_type": 1,
"queries": [
"text"
],
"query_display_properties": [
{
"query_id": "text",
"display_name": "text"
}
],
"dynamic_display_name": "text"
}
],
"supported_display_modes": [
1
],
"namespace": "text",
"shared": true,
"team_id": "text"
}
}Update Dashboard
OK
Default error response
PUT /api/preview/assessments/reports/{id} HTTP/1.1
Host: your-tenant.cookiecloud.ai
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 365
{
"id": "text",
"name": "text",
"description": "text",
"visibility": 1,
"dynamic_filter": "text",
"sections": [
{
"name": "text",
"description": "text",
"section_type": 1,
"queries": [
"text"
],
"query_display_properties": [
{
"query_id": "text",
"display_name": "text"
}
],
"dynamic_display_name": "text"
}
],
"supported_display_modes": [
1
],
"dynamic_report_headings": {
"ANY_ADDITIONAL_PROPERTY": "text"
}
}{
"value": {
"id": "text",
"name": "text",
"description": "text",
"type": "text",
"variables": [
"text"
],
"customized_variables": [
{
"key": "text",
"value": "text"
}
],
"created_by": "text",
"visibility": 1,
"owners": [
"text"
],
"integration_types": [
"text"
],
"labels": [
"text"
],
"created_at": "2025-10-25T06:40:11.136Z",
"updated_at": "2025-10-25T06:40:11.136Z",
"report_type": 1,
"dynamic_filter": "text",
"sections": [
{
"name": "text",
"description": "text",
"section_type": 1,
"queries": [
"text"
],
"query_display_properties": [
{
"query_id": "text",
"display_name": "text"
}
],
"dynamic_display_name": "text"
}
],
"supported_display_modes": [
1
],
"namespace": "text",
"shared": true,
"team_id": "text"
}
}Delete Dashboard
OK
Default error response
DELETE /api/preview/assessments/reports/{id} HTTP/1.1
Host: your-tenant.cookiecloud.ai
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{}Dashboard Analytics
Get Time-Series Data
OK
Default error response
GET /api/preview/assessments/reports/{id}/queries/timeseries HTTP/1.1
Host: your-tenant.cookiecloud.ai
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
"values": [
{
"query_id": "text",
"series": [
{
"evaluated_at": "text",
"value": 1,
"risks_count": 1
}
]
}
]
}Get Comparison Data
OK
Default error response
GET /api/preview/assessments/reports/{id}/queries/comparison HTTP/1.1
Host: your-tenant.cookiecloud.ai
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
"values": [
{
"query_id": "text",
"baseline_value": 1,
"baseline_evaluate_at": "text",
"current_value": 1,
"no_start_value": true
}
]
}Sharing Operations
Share Dashboard
OK
Default error response
POST /api/preview/assessments/reports/{report_id}:share HTTP/1.1
Host: your-tenant.cookiecloud.ai
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 40
{
"report_id": "text",
"team_ids": [
"text"
]
}{}Unshare Dashboard
OK
Default error response
POST /api/preview/assessments/reports/{report_id}:unshare HTTP/1.1
Host: your-tenant.cookiecloud.ai
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 62
{
"report_id": "text",
"team_id": "text",
"including_queries": true
}{}Related Documentation
API Examples - Ready-to-use code examples for common operations
OOTB Dashboards - Complete list of out-of-the-box dashboards with IDs
Dashboards Overview - Dashboard features and UI capabilities
Saved Queries - Working with dashboard queries
Dashboard Sharing - Sharing workflows and requirements
API Authentication - How to create and use API keys
Query Builder APIs - Working with saved queries via API
Last updated
Was this helpful?
