---
metadata:
  - name: generator
    content: Diplodoc Platform v5.64.0
  - property: og:type
    content: article
  - property: article:section
    content: API reference
  - property: og:title
    content: Updating a widget
  - property: article:tag
    content: Technical instructions
alternate:
  - https://yandex.ru/support/tracker/en/api/dashboards/update-widget.md
  - https://yandex.ru/support/tracker/ru/api/dashboards/update-widget.md
  - href: https://yandex.ru/support/tracker/en/api/dashboards/update-widget.md
    type: text/markdown
    title: Markdown version
  - href: https://yandex.ru/support/tracker/en/llms.txt?revision=r21880163
    rel: describedby
---
> **Documentation Index:** Fetch the complete configuration index at https://yandex.ru/support/tracker/en/llms.txt?revision=r21880163


# Updating a widget

Use this request to update widget parameters.

<div class="request_example yfm-code-floating-container method_patch">
    <p>PATCH</p>
    <pre><code>https://api.tracker.yandex.net/v3/widgets/{widget_id}?version=WIDGET_VERSION</code></pre>
    <button class="yfm-clipboard-button"><svg width="16" height="16" viewBox="0 0 24 24" class="yfm-clipboard-icon" data-animation="15">
    <path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path>
    <path stroke="currentColor" fill="transparent" strokewidth="1.5" d="M9.5 13l3 3l5 -5" visibility="hidden">
        <animate id="visibileAnimation-15" attributeName="visibility" from="hidden" to="visible" dur="0.2s" fill="freeze" begin=""></animate>
        <animate id="hideAnimation-15" attributeName="visibility" from="visible" to="hidden" dur="1s" begin="visibileAnimation-15.end+1" fill="freeze"></animate>
    </path>
</svg>
</button>
</div>

<!-- source: en/api/_assets/style/methods.md -->

<!-- endsource: en/api/_assets/style/methods.md -->

## Query format {#query}

Before making a request, [get permission to access the API](https://yandex.ru/support/tracker/en/api/access.md).

To update a widget, use an HTTP `PATCH` request. In the request body, specify the parameters in JSON format.

```json translate=no
PATCH /v3/widgets/{widget_id}?version=WIDGET_VERSION
Host: api.tracker.yandex.net
Authorization: OAuth API_TOKEN
Content-Type: application/json
X-Org-ID or X-Cloud-Org-ID: ORGANIZATION_ID

{
    "type": "filter",
    "description": "WIDGET_NAME",
    "perPage": 20,
    "fields": ["summary"],
    "filterParams": {
        "filter": {
            "author": "me()"
        }
    }
}
```

<!-- source: en/api/_includes/headings.md -->
{% cut "Headers" %}

* `Host`: address of the node that provides the API.

* <!-- source: en/api/_includes/authorization.md -->
  `Authorization`: Authorization token about these formats:

    - `OAuth OAUTH_TOKEN`: For authorization using the OAuth 2.0 protocol. [Learn more](https://yandex.ru/support/tracker/en/api/access.md#about_OAuth)

    - `Bearer IAM_TOKEN`: For authorization using an IAM token, if a Yandex Identity Hub organization is linked to Tracker. [Learn more](https://yandex.ru/support/tracker/en/api/access.md#iam-token)
  <!-- endsource: en/api/_includes/authorization.md -->


* <!-- source: en/api/_includes/org-id.md -->
  # ID types {#types}


  `X-Org-ID` or `X-Cloud-Org-ID`: Organization ID.

  - Use the `X-Org-ID` header if a Tracker organization is linked to Yandex 360 for Business.

  - Use the `X-Cloud-Org-ID` header if a Tracker organization is linked to Yandex Identity Hub.


  # Finding the ID {#find-id}


  To get the organization ID, go to **Administration** → [**Organizations**](https://tracker.yandex.com/admin/orgs) and copy the value from the **ID** field.
  <!-- endsource: en/api/_includes/org-id.md -->


{% endcut %}
<!-- endsource: en/api/_includes/headings.md -->

<!-- source: en/api/_includes/resource-widget-id.md -->
{% cut "Resource" %}

#|
|| **Parameter** | **Description** | **Data type** ||
|| widget_id | Widget ID. | Number ||
|#

{% endcut %}
<!-- endsource: en/api/_includes/resource-widget-id.md -->

{% cut "Request parameters" %}

**Required parameters**

#|
|| **Parameter** | **Description** | **Data type** ||
|| version | Current widget version. Pass the version received in the response to the [Getting a widget](https://yandex.ru/support/tracker/en/api/dashboards/get-widget.md) or [Creating a widget](https://yandex.ru/support/tracker/en/api/dashboards/create-dashboard-widget.md) request. Each change to the widget increases the version number. | Number ||
|#

{% endcut %}

{% cut "Request body parameters" %}

Pass `type` and only the fields to update. Omitted fields retain their current values. The tables below describe fields for each type; required fields are indicated for widget creation.

#|
|| **Parameter** | **Description** | **Data type** ||
|| type | Widget type. Must match the type of the widget being updated; otherwise, the API returns `404`. Possible values:<ul><li>`info`: the "Useful links" widget.</li><li>`security`: a security widget.</li><li>`filter`: the "Issues" widget.</li><li>`created-vs-resolved`: the "Created/Resolved" chart.</li><li>`issues`: the "Issue statistics" widget.</li><li>`table-sum`: the "Summary table with totals" widget.</li><li>`table`: the "Summary table" widget.</li><li>`time-since`: the "Event chart" widget.</li><li>`note`: a note widget.</li><li>`invite-links`: an invitation links widget.</li><li>`orgAdmin`: the "Information for employees" widget.</li><li>`burndown-chart`: a burndown chart.</li><li>`cycle-time`: a cycle time chart.</li><li>`flow`: a flow chart.</li><li>`velocity`: a velocity chart.</li><li>`goalFilter`: the "Goals" widget.</li><li>`projectPortfolioFilter`: the "Projects and portfolios" widget.</li></ul> | String ||
|| description | Widget name. Required for creation and import. | String ||
|| color | Widget color. Optional. | Number ||
|| refresh | Widget refresh interval. Optional. | Number ||
|#

<!-- source: en/api/_includes/dashboard-widget-types.md -->
**Widget type parameters**

Use the fields for the selected type. The fields in the second column are required for creation and import.

#|
|| **Widget type** | **Required parameters** | **Optional parameters** ||
|| `info` | `subtype`: `links`, `presets`, `test_drive` | — ||
|| `security` | `fields`, `perPage` | `queues` ||
|| `filter` | `fields`, `perPage`, `filterParams` | — ||
|| `created-vs-resolved` | `filterParams` | `groupBy`, `daysCount`, `cumulative`, `unresolvedIssuesTrend`, `versions`: `all`, `main`, `none` ||
|| `issues` | `filterParams`, `field`, `perPage` | `orderBySum`, `orderAsc` ||
|| `table` | `filterParams`, `fieldX`, `fieldY`, `perPage` | `showSum`, `orderBySum`, `orderAsc` ||
|| `table-sum` | `filterParams`, `rowField`, `columnField`, `sumField`, `initialRowsLimit` | `showTotals`, `rowOrderAsc`, `columnOrderAsc` ||
|| `time-since` | `filterParams`, `field` | `groupBy`, `daysCount`, `cumulative` ||
|#

#|
|| **Parameter** | **Description** ||
|| subtype | Useful links subtype: `links`, `presets`, or `test_drive`. ||
|| fields | Fields to display. For issue widgets, see the [array description](#fields). ||
|| perPage | Number of items per widget page. ||
|| queues | Queues for the security widget. ||
|| filterParams | Issue filtering parameters. See the [object description](#filterParams). ||
|| field | Grouping field. ||
|| fieldX, fieldY | Table axis fields. `fieldY` must differ from `fieldX`. ||
|| rowField, columnField | Row and column fields. `columnField` must differ from `rowField`. ||
|| sumField | Field to sum. ||
|| initialRowsLimit | Initial row count: from 1 to 200. ||
|| showSum, showTotals | Display the sum and totals. ||
|| orderBySum, orderAsc | Sort by sum and in ascending order. ||
|| rowOrderAsc, columnOrderAsc | Sort rows and columns in ascending order. ||
|| groupBy | Grouping: `hour`, `day`, `week`, `month`, `quarter`, or `year`. ||
|| daysCount | Grouping period. Default: 30. The maximum depends on `groupBy`: `hour`: 10, `day`: 300, `week`: 1750, other values: 3500. ||
|| cumulative | Cumulative chart mode. ||
|| unresolvedIssuesTrend | Display the trend for unresolved issues. ||
|| versions | Versions for the Created/Resolved chart: `all`, `main`, or `none`. ||
|#
<!-- endsource: en/api/_includes/dashboard-widget-types.md -->

<!-- source: en/api/_includes/dashboard-widget-charts.md -->
**Additional types for creation and update**

These types are available in widget creation and update requests. Import does not support them.

#|
|| **Widget type** | **Required parameters** | **Optional parameters** ||
|| `note` | `text`, `markupType`: `md`, `plain` | — ||
|| `burndown-chart` | `sprintId`, `withHolidays` | — ||
|| `goalFilter` | — | `filter`, `filterFieldsOrder`, `fields`, `perPage` ||
|| `projectPortfolioFilter` | — | `filter`, `filterFieldsOrder`, `fields`, `perPage` ||
|| `cycle-time` | — | `filter`, `query`, `filterId`, `fromStatuses`, `toStatuses`, `excludedStatuses`, `includedStatuses`, `forStatus`, `bucket`, `calendar`, `lines`, `mode`: `common-lines`, `common-lines-and-points`, `status-lines`, `autoUpdatable`, `start`, `end`, `targetY` ||
|| `flow` | — | `filter`, `query`, `filterId`, `bucket`, `showIssues`: `SHOW_ALL`, `HIDE`, `fullView`, `mode`: `precise`, `smooth`, `statusColors`, `autoUpdatable`, `start`, `end` ||
|| `velocity` | `calculationSettings` | `filter`, `query`, `filterId`, `bucket`, `autoUpdatable`, `start`, `end` ||
|#

The `invite-links` and `orgAdmin` widgets use only the common parameters `description`, `color`, and `refresh`.

For `goalFilter`, `fields` specifies goal fields; for `projectPortfolioFilter`, it specifies project and portfolio fields. `perPage` accepts values from 1 to 50.

For `flow` and `velocity`, pass only one issue source: `filter`, `query`, or `filterId`.

#|
|| **Parameter** | **Description** ||
|| text, markupType | Note text and markup format: `md` or `plain`. ||
|| sprintId, withHolidays | Sprint ID and whether to account for non-working days. ||
|| filterFieldsOrder | Filter field order. ||
|| filter, query, filterId | Issue source: a filter, a query string, or a saved filter ID. ||
|| fromStatuses, toStatuses, excludedStatuses, includedStatuses, forStatus | Status parameters for the cycle time chart. ||
|| calendar | Calendar for chart calculations. ||
|| autoUpdatable | Automatic chart updates. ||
|| targetY | Target value for the cycle time chart. ||
|| fullView | Full flow chart view. ||
|| bucket | Grouping interval: `{"type": "days", "count": 1}`. Use `weeks` or `months` instead of `days` if needed. To group by sprint: `{"type": "sprints", "board": 123}`. Default: `{"type": "days", "count": 1}`. ||
|| start, end | Chart period boundaries: a date or an expression such as `now() - 3d`. `start` must not be later than `end`. Here, `start` is the chart period start; in import requests, `start` is the widget creation date. ||
|| lines | A `cycle-time` line settings object: Boolean `movingAverage` and `standardDeviation`, an array of numbers `percentile`, and a number `cakePercentile`. ||
|| statusColors | An array of status colors for `flow`, such as `[{"status": "open", "color": "#00AA00"}]`. ||
|| calculationSettings | Velocity calculation settings object. Supported `type` values are listed below. ||
|#

**Fields of the** `calculationSettings` **object**

#|
|| **type value** | **Parameters** ||
|| `byCompletedTasks` | `toStatuses` ||
|| `byWorklog` | `toStatuses` ||
|| `byStatuses` | `statuses`, `calendar` ||
|| `byNumericField` | `valueField`, `toStatuses`, `strategy` ||
|#

For `byStatuses`, `calendar` is required. For `byNumericField`, `valueField` is required: an integer, long, float, or worklog duration field. `strategy` is an object with `type` set to `byValueChangingSmooth` or `byValueChangingPrecise`, and a Boolean `byValueIncreasing`.

`planCalculationSettings` set to `{"type": "byOriginalValue"}` inside `calculationSettings` is supported only for `byCompletedTasks` and `byNumericField` with a `sprints` bucket. For `byNumericField`, it is incompatible with `"byValueIncreasing": true`.
<!-- endsource: en/api/_includes/dashboard-widget-charts.md -->

**Elements of the** `fields` **array** {#fields}

The `fields` parameter specifies the issue fields displayed in the widget. Each array element is an issue field key. For example, `["summary"]` displays only the issue summary column in the widget.

Examples of standard issue field keys:

#|
|| **Parameter** | **Description** ||
|| key | Issue key. ||
|| summary | Issue summary. ||
|| status | Issue status. ||
|| assignee | Assignee. ||
|| priority | Priority. ||
|| created | Issue creation date. ||
|| updated | Issue update date. ||
|#

The full list of issue fields is available in the Tracker interface under **Administration** → **Fields** (`https://tracker.yandex.com/admin/fields`). You can also get the list using the API: [`GET /v3/fields`](https://yandex.ru/support/tracker/en/api/issues/get-issue-fields.md).

**Object fields** `filterParams` {#filterParams}

#|
|| **Parameter** | **Description** | **Data type** ||
|| filter | Filter issues by parameters in the `{"FIELD": "VALUE"}` format. | Object ||
|| query | Issue filter in the [query language](https://yandex.com/support/tracker/user/query-filter.html). | String ||
|#

{% note info "" %}

If both `filter` and `query` are specified in the request body, `query` (the query language) takes precedence as the issue source.

{% endnote %}

{% endcut %}

## Response format {#answer}

{% list tabs %}

- Request executed successfully

    <!-- source: en/api/_includes/answer-200.md -->
    If the request is successful, the API returns a response with code `200 OK`.
    <!-- endsource: en/api/_includes/answer-200.md -->

    The response body contains a JSON object with the updated widget parameters.

    The fields depend on the widget type. The example below shows a `filter` widget. Layout fields are returned only by the [Getting a widget](https://yandex.ru/support/tracker/en/api/dashboards/get-widget.md) request.

    ```json translate=no
    {
        "id": 123456,
        "version": 2,
        "type": "filter",
        "self": "https://api.tracker.yandex.net/v3/widgets/123456",
        "dashboard": {
            "self": "https://api.tracker.yandex.net/v3/dashboards/18",
            "id": "18",
            "display": "New dashboard"
        },
        "createdBy": {
            "self": "https://api.tracker.yandex.net/v3/users/8000000000000007",
            "id": "11********",
            "display": "User Name",
            "cloudUid": "ajeppa7dgp53********",
            "passportUid": 1100000000000000
        },
        "description": "new desc-2",
        "color": 0,
        "createdAt": "2026-08-27T10:34:30.363+0000",
        "fields": [
            {
                "self": "https://api.tracker.yandex.net/v3/fields/summary",
                "id": "summary",
                "name": "Issue",
                "key": "summary",
                "version": 0,
                "schema": {
                    "type": "string",
                    "required": true
                },
                "readonly": false,
                "options": false,
                "suggest": false,
                "queryProvider": {
                    "type": "SummaryQueryProvider"
                },
                "order": 6,
                "category": {
                    "self": "https://api.tracker.yandex.net/v3/fields/categories/000000000000000000000001",
                    "id": "000000000000000000000001",
                    "display": "System"
                },
                "type": "standard"
            }
        ],
        "perPage": 20,
        "filterParams": {
            "filter": {
                "author": "me()"
            }
        }
    }
    ```

    {% cut "Response parameters" %}

    #|
    || **Parameter** | **Description** | **Data type** ||
    || id | Widget ID. | Number ||
    || version | Widget version. Each change to the widget increases the version number. | Number ||
    || type | Widget type. | String ||
    || self | URL of the API resource containing widget parameters. | String ||
    || [dashboard](#dashboard) | Object with information about the dashboard containing the widget. | Object ||
    || [createdBy](#user) | Object with information about the widget creator. | Object ||
    || description | Widget name. | String ||
    || text | Note text. Returned for `note` widgets. | String ||
    || color | Service parameter. | Number ||
    || createdAt | Date and time when the widget was created, in the `YYYY-MM-DDThh:mm:ss.sss±hhmm` format. | String ||
    || [fields](#fields-answer) | Array of objects with information about the issue fields displayed in the widget. | Array of objects ||
    || perPage | Number of issues per widget page. | Number ||
    || [filterParams](#filterParams-answer) | Issue filtering parameters for the widget. | Object ||
    |#

    **Fields of objects in the** `fromStatuses` **and** `toStatuses` **arrays** {#statuses}

    <!-- source: en/api/_includes/status.md -->
    | Parameter | Description | Data type |
    ----- | ----- | -----
    | self | Address of the API resource with information about the status. | String |
    | id | Status ID. | String |
    | key | Status key. | String |
    | display | Status name displayed. | String |
    <!-- endsource: en/api/_includes/status.md -->

    **Object fields** `dashboard` {#dashboard}

    #|
    || **Parameter** | **Description** | **Data type** ||
    || self | URL of the API resource containing dashboard parameters. | String ||
    || id | Dashboard ID. | String ||
    || display | Dashboard name. | String ||
    |#

    **Object fields** `createdBy` {#user}

    <!-- source: en/api/_includes/user.md -->
    | Parameter | Description | Data type |
    ----- | ----- | -----
    | self | Address of the API resource with information about the user | String |
    | id | User ID. | String |
    | display | Displayed user name | String |
    | passportUid | Unique ID of the user account in the Yandex 360 for Business organization and Yandex ID. | Number |
    | cloudUid | Unique user ID in Yandex Identity Hub | String |
    <!-- endsource: en/api/_includes/user.md -->

    **Fields of elements in the** `fields` **array** {#fields-answer}

    #|
    || **Parameter** | **Description** | **Data type** ||
    || self | URL of the API resource containing field parameters. | String ||
    || id | Field ID. | String ||
    || name | Field name. | String ||
    || key | Field key. | String ||
    || version | Field version. | Number ||
    || [schema](#schema) | Field schema. | Object ||
    || readonly | Indicates that the field is read-only. | Boolean ||
    || options | Indicates that the field has a fixed set of values. | Boolean ||
    || suggest | Indicates that suggestions are available for the field. | Boolean ||
    || [queryProvider](#queryProvider) | Field query provider. | Object ||
    || order | Field display order. | Number ||
    || [category](#category) | Field category. | Object ||
    || type | Field type. | String ||
    |#

    **Object fields** `schema` {#schema}

    #|
    || **Parameter** | **Description** | **Data type** ||
    || type | Field data type. | String ||
    || required | Indicates that the field is required. | Boolean ||
    |#

    **Object fields** `queryProvider` {#queryProvider}

    #|
    || **Parameter** | **Description** | **Data type** ||
    || type | Query provider type. | String ||
    |#

    **Object fields** `category` {#category}

    #|
    || **Parameter** | **Description** | **Data type** ||
    || self | URL of the API resource containing category parameters. | String ||
    || id | Category ID. | String ||
    || display | Category name. | String ||
    |#

    **Object fields** `filterParams` {#filterParams-answer}

    #|
    || **Parameter** | **Description** | **Data type** ||
    || filter | Issue filter by parameters. | Object ||
    || query | Issue query, if specified. | String ||
    |#

    {% endcut %}

- Request failed

    If the request is processed incorrectly, the API returns a response with an error code:

    <!-- source: en/api/_includes/answer-error-400.md -->
    400
    :   One or more request parameters have an invalid value.
    <!-- endsource: en/api/_includes/answer-error-400.md -->

    <!-- source: en/api/_includes/answer-error-403.md -->
    403
    :   You are not authorized to perform this action. You can check what rights you have in the Tracker interface. The same rights are required to perform an action via the API and interface.
    <!-- endsource: en/api/_includes/answer-error-403.md -->

    <!-- source: en/api/_includes/answer-error-404.md -->
    404
    :   The requested object was not found. You may have specified an invalid object ID or key.
    <!-- endsource: en/api/_includes/answer-error-404.md -->

    <!-- source: en/api/_includes/answer-error-409.md -->
    409
    :   There was a conflict when editing the object. The error may be due to an invalid update version.
    <!-- endsource: en/api/_includes/answer-error-409.md -->

    <!-- source: en/api/_includes/answer-error-412.md -->
    412
    :   A conflict occurred while editing the object. The error may be due to an invalid update version.
    <!-- endsource: en/api/_includes/answer-error-412.md -->

    <!-- source: en/api/_includes/answer-error-422.md -->
    422
    :   JSON validation error, the request is rejected.
    <!-- endsource: en/api/_includes/answer-error-422.md -->

    <!-- source: en/api/_includes/answer-error-500.md -->
    500
    :   Internal service error. Try again later.
    <!-- endsource: en/api/_includes/answer-error-500.md -->

    <!-- source: en/api/_includes/answer-error-503.md -->
    503
    :   The API service is temporarily unavailable.
    <!-- endsource: en/api/_includes/answer-error-503.md -->

{% endlist %}
