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

# Attaching a file to an entity

The request allows you to attach a file to an [entity](https://yandex.com.tr/support/tracker/en/api-ref/entities/about-entities.md).

<div class="request_example method_post yfm-clipboard">
    <p>POST</p>
    <pre><code>https://api.tracker.yandex.net/v3/entities/&lt;entity_type>/&lt;entity_ID>/attachments/&lt;file_ID></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).

To attach a file, use an HTTP `POST` request:

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

<!-- 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 |
| \<entity_ID> | Entity ID. To get the ID, see the [entity list](../search-entities.md). | String |
| \<file_ID> | ID of a temporary file [preloaded](../../issues/temp-attachment.md) into Tracker | String |

{% endcut %}

{% cut "Request parameters" %}

**Additional parameters**

| Parameter | Description | Data type |
-------- | -------- | ----------
| notify | Notify the users specified in the **Author**, **Lead**, **Participants**, **Customers**, and **Followers** fields. The default value is `true`. | Boolean |
| notifyAuthor | Notify the author of the changes. The default value is `false`. | Boolean |
| [fields](../about-entities.md#query-params) | Additional entity fields to include in the response | String |
| expand | Additional information to include in the response: <ul><li>`all`: All</li><li>`attachments`: Attached files</li></ul> | String |

{% endcut %}

> Example: Attaching a file to an entity
>
> - An HTTP POST method is used.
> - Attach a temporary file with ID `30` to a project.
> - The response provides information about all attached files.
>
> ```
> POST https://api.tracker.yandex.net/v3/entities/project/<project_ID>/attachments/30?expand=attachments
> ```

## 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 entity attachment.

  ```json
  {
      "self": "https://api.tracker.yandex.net/v3/entities/project/6586d6fee2b9ef74********",
      "id": "6586d6fee2b9ef74********",
      "version": 78,
      "shortId": 4,
      "entityType": "project",
      "createdBy": {
          "self": "https://api.tracker.yandex.net/v3/users/19********",
          "id": "19********",
          "display": "Full name",
          "cloudUid": "ajeppa7dgp53********",
          "passportUid": "15********"
      },
      "createdAt": "2023-12-23T12:47:58.405+0000",
      "updatedAt": "2024-01-13T14:06:29.747+0000",
      "attachments": [
          {
              "self": "https://api.tracker.yandex.net/v3/attachments/4",
              "id": "4",
              "name": "newimage.jpg",
              "content": "https://api.tracker.yandex.net/v3/attachments/4/newimage.jpg",
              "createdBy": {
                  "self": "https://api.tracker.yandex.net/v3/users/19********",
                  "id": "19********",
                  "display": "Full name",
                  "cloudUid": "ajeppa7dgp53********",
                  "passportUid": "15********"
              },
              "createdAt": "2024-01-11T06:24:57.635+0000",
              "mimetype": "image/jpeg",
              "size": 20466
          }
      ]
  }
  ```

  {% cut "Response parameters" %}

  | Parameter | Description | Data type |
  -------- | -------- | ----------
  | self | Address of the API resource with information about the entity | String |
  | id | Entity ID. | String |
  | version | Entity version. Each change of the parameters increases the version number. <br>Entity edits will be disabled if the version number reaches the threshold value of `10100` (for robots) or `11100` (for users). | Number |
  | shortId | Goal, project, or portfolio ID in the Tracker interface | String |
  | entityType | Entity type | String |
  | [createdBy](#created-by) | Block with information about the entity creator | Map item |
  | createdAt | Entity creation date in `YYYY-MM-DDThh:mm:ss.sss±hhmm` format | String |
  | updatedAt | Date when the entity was last updated, in `YYYY-MM-DDThh:mm:ss.sss±hhmm` format | String |
  | [attachments](#attachments) | Array of objects with information about the attachment | Array of objects |

  `attachments` **object fields** {#attachments}

  | Parameter | Description | Data type |
  ----- | ----- | -----
  | self | API resource address that contains information about the entity's attachments | String |
  | id | File ID | String |
  | name | File name | String |
  | content | Address of the resource to download the file from | String |
  | thumbnail | Address of the resource to download the preview thumbnail from; available for image files only | String |
  | [createdBy](#createdBy) | Object with information about the user who attached the file | Map item |
  | createdAt | File upload date and time in `YYYY-MM-DDThh:mm:ss.sss±hhmm` format | String |
  | mimetype | File type, for example:<ul><li>`text/plain`: Text file</li><li>`image/png`: Image in PNG format</li></ul> | String |
  | size | File size in bytes | Integer |
  | [metadata](#metadata) | Object with file metadata | Map item |

  `createdBy` **object fields** {#created-by}

  <!-- 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 -->

  `metadata` **object fields** {#metadata}

  | Parameter | Description | Data type |
  ----- | ----- | -----
  | size | Image size in pixels | String |

  {% 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-404.md -->
  404
  :   The requested object was not found. You may have specified an invalid object ID or key.
  <!-- endsource: en/_includes/api/answer-error-404.md -->

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

  <!-- source: en/_includes/api/answer-error-423.md -->
  423
  :   Object edits disabled. The `version` parameter value limit (the maximum number of object updates) might have been exceeded. The maximum version value is `10100` for robots and `11100` for users.
  <!-- endsource: en/_includes/api/answer-error-423.md -->

{% endlist %}
