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

# Create an issue link

Use this request to create a link between two issues. A link is created between the current issue (specified in the `issue-id` request parameter) and the linked issue (specified in the `issue` field of the request body).

<div class="request_example method_post yfm-clipboard">
    <p>POST</p>
    <pre><code>https://api.tracker.yandex.net/v3/issues/&lt;issue_ID>/links</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 create a link, use an HTTP `POST` request:

```json
POST /v3/issues/<issue_ID>/links
Host: api.tracker.yandex.net
Authorization: OAuth <OAuth_token>
Content-Type: application/json
X-Org-ID or X-Cloud-Org-ID: <organization_ID>

{
    "relationship": "<link_type>",
    "issue": "<issue>"
}
```
<!-- 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 -->

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

| Parameter | Description | Data type |
-------- | -------- | ----------
| \<issue_key_or_ID\> | ID or key of the current issue. | String |

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

{% cut "Request body parameters" %}

**Required parameters**

<!-- source: en/_includes/api/issue-links.md -->
#|
|| Parameter | Description | Data type ||
|| relationship | Link type between issues:
* `relates` — simple link;
* `is dependent by` — the current issue blocks the linked issue;
* `depends on` — the current issue depends on the linked issue;
* `is subtask for` — the current issue is a subtask of the linked issue;
* `is parent task for` — the current issue is a parent task for the linked issue;
* `duplicates` — the current issue is a duplicate of the linked issue;
* `is duplicated by` — the linked issue is a duplicate of the current issue;
* `is epic of` — the current issue is an epic for the linked issue. You can set this link type only for issues of the "Epic" type.
* `has epic` — the linked issue is an epic for the current issue. You can set this link type only for issues of the "Epic" type.
| String ||
|| issue | ID or key of the linked issue | String ||
|#
<!-- endsource: en/_includes/api/issue-links.md -->

{% endcut %}

> Creating a link:
>
> - An HTTP POST method is used.
>
> ```json
> POST /v3/issues/TEST-1/links HTTP/1.1
> Host: api.tracker.yandex.net
> Authorization: OAuth <OAuth_token>
> Content-Type: application/json
> X-Org-ID or X-Cloud-Org-ID: <organization_ID>
>
> {
>     "relationship": "relates",
>     "issue": "TREK-2"
> }
> ```

## Response format {#answer}

{% list tabs %}

- Request executed successfully

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

    The response body contains the results in JSON format.

  ```json
    {
      "self": "https://api.tracker.yandex.net/v3/issues/TEST-1/links/10*****",
      "id" : 10*****,
      "type" : {
        "self": "https://api.tracker.yandex.net/v3/linktypes/relates",
        "id" : "relates",
        "inward" : "relates",
        "outward" : "relates"
      },
      "direction" : "inward",
      "object" : {
        "self": "https://api.tracker.yandex.net/v3/issues/STARTREK-2",
        "id" : "4ff3e8dae4b0e2ac********",
        "key" : "TREK-2",
        "display" : "My issue"
      },
      "createdBy" : {
        "self": "https://api.tracker.yandex.net/v3/users/11********",
        "id": "11********",
        "display": "User Name",
        "cloudUid": "ajeppa7dgp53********",
        "passportUid": 11********
      },
      "updatedBy" : {
        "self": "https://api.tracker.yandex.net/v3/users/11********",
        "id": "11********",
        "display": "User Name",
        "cloudUid": "ajeppa7dgp53********",
        "passportUid": 11********
      },
      "createdAt" : "2014-06-18T12:06:02.401+0000",
      "updatedAt" : "2014-06-18T12:06:02.401+0000"
    }
  ```

  {% cut "Response parameters" %}

  <!-- source: en/_includes/api/issue-links.md -->
  #|
  || Parameter | Description | Data type ||
  || self | Address of the API resource that contains information about the link | String ||
  || id | Link ID | Number ||
  || [type](#link-type) | Block with link type information | Object ||
  || direction | Type of relationship of the issue specified in the request relative to the issue in the `object` field. Possible values:
  * `outward` — the issue specified in the request is primary for the issue in the `object` field;
  * `inward` — the issue in the `object` field is primary for the issue specified in the request | String ||
  || [object](#issue) | Block with linked issue information | Object ||
  || [createdBy](#user) | Block with link creator information | Object ||
  || [updatedBy](#user) | Block with information about the last user who modified the linked issue | Object ||
  || createdAt | Date and time the link was created | String ||
  || updatedAt | Date and time the link was modified | String ||
  || [assignee](#user) | Assignee of the linked issue | Object ||
  || [status](#status) | Status of the linked issue | Object ||
  |#
  <!-- endsource: en/_includes/api/issue-links.md -->

  `type` **object fields** {#link-type}

  <!-- source: en/_includes/api/issue-links.md -->
  Parameter | Description | Data type
  ----- | ----- | -----
  self | Link to the link type. | String
  id | Link type ID. | String
  inward | Name of the link type for the issue in the [object](#issue) field relative to the issue specified in the request. | String
  outward | Name of the link type for the issue specified in the request relative to the issue in the [object](#issue) field. | String
  <!-- endsource: en/_includes/api/issue-links.md -->

  `object` **object fields** {#issue}

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

  `createdBy`,  `updatedBy`, `assignee` **object fields** {#user}

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

  `status` **object fields** {#status}

  <!-- source: en/_includes/api/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/_includes/api/status.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-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 -->

{% endlist %}