> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.vapi.ai/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.vapi.ai/_mcp/server.

# Update Board

PATCH https://api.vapi.ai/reporting/board/{id}
Content-Type: application/json

Reference: https://docs.vapi.ai/api-reference/board/board-controller-update

## Authentication

- `Authorization` header (bearer token, required) — Authenticate server-side requests with a private Vapi API key. Create or copy a key from the [Vapi Dashboard](https://dashboard.vapi.ai) and send it in the `Authorization` header as `Bearer <token>`. Keep private API keys out of client-side code and public repositories.

## Request

### Path parameters

- `id` (string, required) — The unique identifier for the resource.

### Body (application/json)

This endpoint expects an UpdateBoardDTO.

- `items` (list of UpdateBoardDtoItemsItems, optional) — This is the contents of the Board, which is an array of objects defining the type, contents, and position of the widgets on the Board.
- `name` (string, optional) — This is the name of the Board.
- `layout` (BoardLayout, optional) — This is the layout of the Board.
- `timeRangeOverride` (InsightTimeRangeWithStep, optional) — This is the timerange override for the board. By default, individual insights have their own timerange. This is a global override for the board which will be passed to all insights on the board.

## Response

### 200

- `id` (string, required) — This is the unique identifier for the Board.
- `orgId` (string, required) — This is the unique identifier for the org that this Board belongs to.
- `createdAt` (datetime, required) — This is the ISO 8601 date-time string of when the Board was created.
- `updatedAt` (datetime, required) — This is the ISO 8601 date-time string of when the Board was last updated.
- `name` (string, required) — This is the name of the Board.
- `layout` (BoardLayout, required) — This is the layout of the Board.
- `items` (list of BoardItemsItems, optional) — This is the contents of the Board, which is an array of objects defining the type, contents, and position of the widgets on the Board.
- `systemKey` (string, optional) — Server-owned key for system-provisioned boards. User create/update DTOs do not accept this field.
- `timeRangeOverride` (InsightTimeRangeWithStep, optional) — This is the timerange override for the board. By default, individual insights have their own timerange. This is a global override for the board which will be passed to all insights on the board.

## Types

### UpdateBoardDtoItemsItems

### BoardLayout

- `columns` (double, required) — This is the number of columns in the Board. For now, it is fixed to 6.

### InsightTimeRangeWithStep

Start, end, timezone, and aggregation step used for a time-series insight query.

- `step` (enum, optional) — This is the group by step for aggregation. If not provided, defaults to group by day.
  - Allowed values: `minute`, `hour`, `day`, `week`, `month`, `quarter`, `year`
- `start` (InsightTimeRangeWithStepStart, optional) — This is the start date for the time range. Should be a valid ISO 8601 date-time string or relative time string. If not provided, defaults to the 7 days ago. Relative time strings of the format "-\{number}\{unit}" are allowed. Valid units are: * d: days * h: hours * w: weeks * m: months * y: years
- `end` (InsightTimeRangeWithStepEnd, optional) — This is the end date for the time range. Should be a valid ISO 8601 date-time string or relative time string. If not provided, defaults to now. Relative time strings of the format "-\{number}\{unit}" are allowed. Valid units are: * d: days * h: hours * w: weeks * m: months * y: years
- `timezone` (string, optional) — This is the timezone you want to set for the query. If not provided, defaults to UTC.

### BoardItemsItems

### BoardInsightItem

- `type` (enum, required)
  - Allowed values: `insight`
- `insightId` (string, required)
- `position` (BoardItemPosition, required)
- `size` (BoardItemSize, required)
- `systemKey` (string, optional)

### BoardMetricWidgetItem

- `type` (enum, required)
  - Allowed values: `failed_calls_list`, `concurrency_chart`, `average_cost_breakdown_chart`
- `position` (BoardItemPosition, required)
- `size` (BoardItemSize, required)
- `insightId` (string, optional)
- `systemKey` (string, optional)

### InsightTimeRangeWithStepStart

This is the start date for the time range. Should be a valid ISO 8601 date-time string or relative time string. If not provided, defaults to the 7 days ago. Relative time strings of the format "-\{number}\{unit}" are allowed. Valid units are: * d: days * h: hours * w: weeks * m: months * y: years

### InsightTimeRangeWithStepEnd

This is the end date for the time range. Should be a valid ISO 8601 date-time string or relative time string. If not provided, defaults to now. Relative time strings of the format "-\{number}\{unit}" are allowed. Valid units are: * d: days * h: hours * w: weeks * m: months * y: years

### BoardItemPosition

- `x` (double, required)
- `y` (double, required)

### BoardItemSize

- `width` (double, required)
- `height` (double, required)

## Examples

**Request**

```json
{}
```

**Response**

```json
{
  "id": "string",
  "orgId": "string",
  "createdAt": "2024-01-15T09:30:00Z",
  "updatedAt": "2024-01-15T09:30:00Z",
  "name": "string",
  "layout": {
    "columns": 6
  },
  "items": [
    {
      "insightId": "string",
      "position": {
        "x": 1.1,
        "y": 1.1
      },
      "size": {
        "height": 1.1,
        "width": 1.1
      },
      "systemKey": "string",
      "type": "insight"
    }
  ],
  "systemKey": "string",
  "timeRangeOverride": {
    "step": "minute",
    "start": "\"2025-01-01\" or \"-7d\" or \"now\"",
    "end": "\"2025-01-01\" or \"now\"",
    "timezone": "string"
  }
}
```