# Dashboard API V3 — Developer Guide

- **Applies to:** Sprinklr Dashboard APIs V3
- **V2 API reference:** [Dashboard APIs | Sprinklr Developer Portal](https://dev.sprinklr.com/dashboard)


## 1. Overview

The Dashboard API allows fetching the list of Sprinklr reporting and listening dashboards along with their corresponding metadata.
Dashboards provide a centralized way to visualize and analyze data through widgets, charts, and graphs, enabling both monitoring and performance insights.

### Reporting Dashboards

Reporting Dashboards centralize data from all your social channels and accounts. In Reporting Insights, you can customize, expand, and drill into metrics to discover what’s working and what’s not, and develop data-driven strategies to continuously improve content performance.

**Related Knowledge Base Article:** [Reporting Dashboards](https://help.sprinklr.com/articles/reporting/about-the-reporting-dashboards/6137664f52911d3e29ad76a8)

### Listening Dashboards

Listening Dashboards enable you to analyze topic queries via widgets within Standard and Custom Dashboards, as well as through a Consumption Dashboard that records data usage across sources and topic queries.
They allow you to visualize listening data in the form of charts and graphs, helping teams uncover insights from conversations and trends.

**Related Knowledge Base Article:** [Listening Dashboards](https://help.sprinklr.com/articles/listening/listening-overview-and-insights-dashboards/6137656052911d3e29ad74c3)

## 2. Base URLs and environments

All API calls are sent to the production endpoint:

```
https://api3.sprinklr.com/{env}/api/v3
```

So the dashboard resource in production is:

```
https://api3.sprinklr.com/{env}/api/v3/dashboard
```

Replace `{env}` with your assigned environment identifier (`prod0`, `prod2`, etc.).

## 3. Authentication and common headers

All Dashboard API calls are authenticated with OAuth 2.0. See [API Overview](https://dev.sprinklr.com/api-overview) for portal registration, API key and secret generation, and the Authorize flow.

| Header | Value | Purpose | Required on |
|  --- | --- | --- | --- |
| `Authorization` | `Bearer {{accessToken}}` | Authenticates the user with the server | All requests |
| `Key` | `{{apiKey}}` | Authenticates the application with the server | All requests |
| `Content-Type` | `application/json` | Declares the request body media type | `POST` |
| `Accept` | `application/json` | Declares the acceptable response type | All requests |


## 4. Read operations

### 4.1 Search dashboards

**`POST /api/v3/dashboard/search`**

Retrieves a list of dashboards with metadata. Supports filtering, sorting, and pagination.
The `entityType` must be specified in the request body.

#### Request body parameters

| **Parameter** | **Required / Optional** | **Description** | **Type** |
|  --- | --- | --- | --- |
| `entityType` | Required | Type of dashboard manager.**Supported Values:** `REPORTING_DASHBOARD_MANAGER`, `LISTENING_DASHBOARD_MANAGER` | String |
| `filter` | Optional | Object containing filter details. | Object |
| `q` | Optional | Search query string. | String |
| `groupingField` | Optional | Grouping behavior. Use `UNGROUPED` to avoid grouping. | String |
| `page` | Optional | Pagination details (`start`, `size`). | Object |
| `sorts` | Optional | Array of sort criteria (`key`, `order`). | Array |
| `requestType` | Required | Type of request.**Supported Values:** `FILTER`, `FACETS`, `COUNT` | String |


#### Example — Reporting dashboards

```bash
curl --location --request POST 'https://api3.sprinklr.com/{env}/api/v3/dashboard/search' \
--header 'Authorization: Bearer {Access Token}' \
--header 'Key: {API KEY}' \
--header 'Content-Type: application/json' \
--header 'Accept: application/json' \
--data '{
  "entityType": "REPORTING_DASHBOARD_MANAGER",
  "filter": {
    "type": "AND",
    "filters": [
      {
        "type": "IN",
        "key": "MODULE_TYPE",
        "values": ["REPORTING"]
      }
    ]
  },
  "q": "",
  "groupingField": "UNGROUPED",
  "page": {
    "start": 0,
    "size": 50
  },
  "sorts": [
    {
      "key": "name",
      "order": "ASC"
    }
  ],
  "requestType": "FILTER"
}'
```

#### Example — Listening dashboards

```bash
curl --location --request POST 'https://api3.sprinklr.com/{env}/api/v3/dashboard/search' \
--header 'Authorization: Bearer {Access Token}' \
--header 'Key: {API KEY}' \
--header 'Content-Type: application/json' \
--header 'Accept: application/json' \
--data '{
  "entityType": "LISTENING_DASHBOARD_MANAGER",
  "filter": {
    "type": "AND",
    "filters": [
      {
        "type": "IN",
        "key": "MODULE_TYPE",
        "values": ["LISTENING"]
      }
    ]
  },
  "q": "",
  "groupingField": "UNGROUPED",
  "page": {
    "start": 0,
    "size": 50
  },
  "sorts": [
    {
      "key": "name",
      "order": "ASC"
    }
  ],
  "requestType": "FILTER"
}'
```

## 7. Response format and status codes

### 7.1 The V3 envelope

Every Custom Entity V3 endpoint returns a consistent three‑part envelope:

```json
{
  "data": [ ... ],
  "errors": [],
  "metadata": {
    "totalCount": null,
    "hasMore": true,
    "pageNumber": 0,
    "pageSize": 10
  }
}
```

| Field | Type | Description |
|  --- | --- | --- |
| `data` | Array[UnifiedProfile] | Array of profile objects matching the search criteria |
| `errors` | Array[Error] | Array of error objects (empty if no errors) |
| `metadata` | Object | Pagination and response metadata |
| `metadata.totalCount` | Integer/null | Total number of results (`null` for performance reasons) |
| `metadata.hasMore` | Boolean | Indicates if more pages are available |
| `metadata.pageNumber` | Integer | Current page number (0-based) |
| `metadata.pageSize` | Integer | Number of items per page |


### 7.2 Example - Reporting dashboard

```json
{
  "data": [
    {
      "id": "66b089ad242cb400a1a1c653",
      "name": "SPACE-103558",
      "moduleType": "REPORTING",
      "type": "CUSTOM",
      "filters": [
        { "field": "ACCOUNT_ID" },
        { "field": "CLIENT_ID" },
        { "field": "SN_TYPE" },
        { "field": "KEYWORD_SEARCH" }
      ],
      "tags": [],
      "locked": false,
      "hidden": false,
      "canEdit": true,
      "deleted": false,
      "createdTime": "Aug 05, 2024, 08:13:33 AM",
      "modifiedTime": "Mar 16, 2026, 07:03:55 AM"
    },
    {
      "id": "6953b819b3eaea7ebda8e573",
      "name": "Add To Custom Dashboard",
      "moduleType": "REPORTING",
      "type": "CUSTOM",
      "filters": [
        { "field": "ACCOUNT_ID" },
        { "field": "CLIENT_ID" },
        { "field": "SN_TYPE" }
      ],
      "tags": [],
      "locked": false,
      "hidden": false,
      "canEdit": true,
      "deleted": false,
      "createdTime": "Dec 30, 2025, 11:31:37 AM",
      "modifiedTime": "May 06, 2026, 09:48:37 AM"
    },
    {
      "id": "667321953bdcde4aa5c1e7ce",
      "name": "Associate CARE-56979 ok",
      "moduleType": "REPORTING",
      "type": "CUSTOM",
      "filters": [
        { "field": "ACCOUNT_ID" },
        { "field": "CLIENT_ID" },
        { "field": "SN_TYPE" },
        { "field": "KEYWORD_SEARCH" }
      ],
      "tags": [],
      "locked": false,
      "hidden": false,
      "canEdit": true,
      "deleted": false,
      "createdTime": "Jun 19, 2024, 06:21:09 PM",
      "modifiedTime": "Feb 20, 2026, 05:52:26 PM"
    },
    {
      "id": "673eeec3ca3f8325ecc95a0d",
      "name": "Bolt Debugger Adoption Dashboard",
      "moduleType": "REPORTING",
      "type": "CUSTOM",
      "filters": [
        { "field": "ACCOUNT_ID" },
        { "field": "CLIENT_ID" },
        { "field": "SN_TYPE" },
        { "field": "KEYWORD_SEARCH" }
      ],
      "tags": [],
      "locked": false,
      "hidden": false,
      "canEdit": true,
      "deleted": false,
      "createdTime": "Nov 21, 2024, 08:26:43 AM",
      "modifiedTime": "Mar 16, 2026, 09:30:25 AM"
    },
    {
      "id": "68c909585dacf22bd98b84f1",
      "name": "CFM : Date and Time fields.",
      "moduleType": "REPORTING",
      "type": "CUSTOM",
      "isExternalLinkEnabled": true,
      "externalLink": "https://external-qa6.sprinklr.com/social/reporting/dashboard/68c909585dacf22bd98b84f1?id=DASHBOARD_68c909585dacf22bd98b84f1",
      "externalLinkExpiryDate": "Sep 23, 2025, 06:29:59 PM",
      "tags": [],
      "locked": false,
      "hidden": false,
      "canEdit": true,
      "deleted": false,
      "createdTime": "Jul 10, 2024, 07:54:42 AM",
      "modifiedTime": "Mar 16, 2026, 09:30:25 AM"
    }
  ],
  "errors": []
}
```

### 7.2 Example - Listening dashboard

```json
{
  "data": [
    {
      "id": "1234567890abcdef",
      "name": "Listening Dashboard Example",
      "moduleType": "LISTENING",
      "type": "CUSTOM",
      "filters": [
        { "field": "ACCOUNT_ID" },
        { "field": "CLIENT_ID" },
        { "field": "SN_TYPE" },
        { "field": "KEYWORD_SEARCH" }
      ],
      "tags": [],
      "locked": false,
      "hidden": false,
      "canEdit": true,
      "deleted": false,
      "createdTime": "Aug 05, 2024, 08:13:33 AM",
      "modifiedTime": "Mar 16, 2026, 07:03:55 AM"
    }
  ],
  "errors": []
}
```

## 8. V2 → V3 migration

The Dashboard API has been redesigned in V3 for consistency and clarity.

### Read operations (Search)

| **Operation** | **V2 Endpoint** | **V3 Endpoint** | **Key Differences** |
|  --- | --- | --- | --- |
| Search Reporting Dashboards | `https://api3.sprinklr.com/{env}/api/v2/entity/{entityType}/filter` | `POST /api/v3/dashboard/search` | V2 used path-based entity type; V3 moves `entityType` into request body. |