---
metadata:
  - name: generator
    content: Diplodoc Platform v5.47.3
alternate:
  - https://yandex.com.tr/support/tracker/en/api-ref/entities/bulkchange-entities.md
---
> **Documentation Index:** Fetch the complete configuration index at https://yandex.com.tr/support/tracker/en/llms.txt

# Bulk changes to entities

Use this request to quickly update multiple entities at once: [goals](https://yandex.com.tr/support/tracker/en/goals/goals-start.md), [projects](https://yandex.com.tr/support/tracker/en/manager/project-new.md), or [project portfolios](https://yandex.com.tr/support/tracker/en/manager/portfolio.md).

<div class="request_example method_post yfm-clipboard">
    <p>POST</p>
    <pre><code>https://api.tracker.yandex.net/v3/entities/&lt;entity_type>/bulkchange/_update</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/_assets/style/methods.md -->

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

## Query format {#query}

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

Use an HTTP `POST` request for bulk changes of multiple entities. In the request body, specify the parameters in JSON format.

```json
POST /v3/entities/<entity_type>/bulkchange/_update
Host: api.tracker.yandex.net
Authorization: OAuth <OAuth_token>
X-Org-ID or X-Cloud-Org-ID: <organization_ID>

{
   "metaEntities":[ "<entity_1_ID>","<entity_2_ID>", ...],
   "values":
   {
      "fields":
      {
         "<field_key>":"<value>",
         ...
      },
      "comment":"<comment>"
   }
}
```

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

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

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

    - `OAuth <OAuth_token>`: For authorization using the OAuth 2.0 protocol. [Learn more](https://yandex.com.tr/support/tracker/en/api-ref/access.md#about_OAuth)

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


* <!-- source: en/_includes/api/org-id.md -->
  `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 Cloud Organization.

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


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

{% cut "Resource" %}

| Parameter | Description | Data type |
-------- | -------- | ----------
| \<entity_type> | Entity type:<ul><li>project</li><li>portfolio</li><li>goal</li></ul> | String |

{% endcut %}

{% cut "Request body parameters" %}

**Required parameters**

| Parameter | Description | Data type |
-------- | -------- | ----------
| metaEntities | List of entity IDs. | Array of strings |
| values | Object with settings for bulk entity changes. | Map item |

`values` **object fields**

| Parameter | Description | Data type |
-------- | -------- | ----------
| fields | Object with key-value pairs. | Map item |
| comment | Comment | String |
| links | Array of objects with settings of links to other entities | Array of objects |

`links` **array object fields**

#|
|| Parameter | Description | Data type ||
|| relationship |
{% include [links](../../_includes/api/entity-links.md) %} |
String
||
|| entity | ID of the linked entity. | String ||
|#

{% endcut %}

> Example: Updating a status, assigning a follower, leaving a comment for multiple projects
>
> - An HTTP POST method is used.
> - The project status changes to `At risk`.
> - A follower is assigned.
> - A new record is added to project comments.
>
> ```json
> POST /v3/entities/project/bulkchange/_update HTTP/1.1
> Host: api.tracker.yandex.net
> Authorization: OAuth <OAuth_token>
> X-Org-ID or X-Cloud-Org-ID: <organization_ID>
>
> {
>    "metaEntities":[ "655f3be523db2132********","655f383923db2132********"],
>    "values":
>    {
>       "fields":
>       {
>          "entityStatus":"at_risk",
>          "followers":"agent007",
>       },
>       "comment":"The project is at risk"
>    }
> }
> ```

## Response format {#answer}

{% list tabs %}

- Request executed successfully

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

   The response body contains information about the bulk request in JSON format.

   ```json
   {
      "id": "6560c6f59b0b1e76********",
      "self": "https://api.tracker.yandex.net/v3/bulkchange/6560c6f59b0b1e76********",
      "createdBy": { "self": "https://api.tracker.yandex.net/v3/users/11********", "id": "11********", "display": "Full name", "cloudUid": "ajevuhegoggf********", "passportUid": 11******** },
      "createdAt": "2023-11-24T15:53:25.122+0000",
      "status": "CREATED",
      "statusText": "Bulk change task created.",
      "executionChunkPercent": 0,
      "executionIssuePercent": 0
   }
   ```

   {% cut "Response parameters" %}

   | Parameter | Description | Data type |
   -------- | -------- | ----------
   | id | Bulk request ID | String |
   | self | Address of the API resource with information about the bulk request | String |
   | createdBy | Block with information about the user who created the bulk request | Map item |
   | createdAt | Entity creation date in `YYYY-MM-DDThh:mm:ss.sss±hhmm` format | String |
   | status | Bulk request status | String |
   | statusText | Interpretation of the bulk request status | String |

   `createdBy` **object fields**

   <!-- source: en/_includes/api/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 Cloud Organization | String |
   <!-- endsource: en/_includes/api/user.md -->

   {% endcut %}

- Request failed

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

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

    <!-- source: en/_includes/api/answer-error-401.md -->
    401
    :   The user is not authorized. Make sure that actions described in the [API access](https://yandex.com.tr/support/tracker/en/api-ref/access.md) section are performed.
    <!-- endsource: en/_includes/api/answer-error-401.md -->

    <!-- source: en/_includes/api/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/_includes/api/answer-error-403.md -->

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

    <!-- source: en/_includes/api/answer-error-428.md -->
    428
    :   Access to the resource is denied. Make sure all required conditions for the request are specified.
    <!-- endsource: en/_includes/api/answer-error-428.md -->


{% endlist %}
{% included (../../_includes/api/entity-links.md) %}
Link type. For projects and portfolios:
* `depends on`: The current entity depends on the linked one.
* `is dependent by`: The current entity blocks the linked one.
* `works towards`: Project link to a goal.

For goals:
* `parent entity`: Parent goal.
* `child entity`: Subgoal.
* `depends on`: The current goal depends on the linked one.
* `is dependent by`: The current goal blocks the linked one.
* `is supported by`: Link to a project.

{% endincluded %}