---
title: "Create issue link"
method: POST
path: "/rest/api/3/issueLink"
tags: ["Issue links"]
---

# Create issue link

`POST /rest/api/3/issueLink`

Creates a link between two issues. Use this operation to indicate a relationship between two issues and optionally add a comment to the from (outward) issue. To use this resource the site must have [Issue Linking](https://confluence.atlassian.com/x/yoXKM) enabled.

This resource returns nothing on the creation of an issue link. To obtain the ID of the issue link, use `https://your-domain.atlassian.net/rest/api/3/issue/[linked issue key]?fields=issuelinks`.

If the link request duplicates a link, the response indicates that the issue link was created. If the request included a comment, the comment is added.

This operation can be accessed anonymously.

**[Permissions](#permissions) required:**

 *  *Browse project* [project permission](https://confluence.atlassian.com/x/yodKLg) for all the projects containing the issues to be linked,
 *  *Link issues* [project permission](https://confluence.atlassian.com/x/yodKLg) on the project containing the from (outward) issue,
 *  If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission to view the issue.
 *  If the comment has visibility restrictions, belongs to the group or has the role visibility is restricted to.

## Request body

- LinkIssueRequestJsonBean
  - `comment` Comment — A comment.
    - `author` UserDetails — User details permitted by the user's Atlassian Account privacy settings. However, be aware of these exceptions: * User record deleted from Atlassian: This occurs as the result of a right to be forgotten request. In this case, `displayName` provides an indication and other parameters have default values or are blank (for example, email is blank). * User record corrupted: This occurs as a results of events such as a server import and can only happen to deleted users. In this case, `accountId` returns *unknown* and all other parameters have fallback values. * User record unavailable: This usually occurs due to an internal service outage. In this case, all parameters have fallback values.
      - `accountId` string — The account ID of the user, which uniquely identifies the user across all Atlassian products. For example, *5b10ac8d82e05b22cc7d4ef5*.
      - `accountType` string — The type of account represented by this user. This will be one of 'atlassian' (normal users), 'app' (application user) or 'customer' (Jira Service Desk customer user)
      - `active` boolean — Whether the user is active.
      - `avatarUrls` AvatarUrlsBean
        - `16x16` string, uri — The URL of the item's 16x16 pixel avatar.
        - `24x24` string, uri — The URL of the item's 24x24 pixel avatar.
        - `32x32` string, uri — The URL of the item's 32x32 pixel avatar.
        - `48x48` string, uri — The URL of the item's 48x48 pixel avatar.
      - `displayName` string — The display name of the user. Depending on the user’s privacy settings, this may return an alternative value.
      - `emailAddress` string — The email address of the user. Depending on the user’s privacy settings, this may be returned as null.
      - `key` string — This property is no longer available and will be removed from the documentation soon. See the [deprecation notice](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-user-privacy-api-migration-guide/) for details.
      - `name` string — This property is no longer available and will be removed from the documentation soon. See the [deprecation notice](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-user-privacy-api-migration-guide/) for details.
      - `self` string — The URL of the user.
      - `timeZone` string — The time zone specified in the user's profile. Depending on the user’s privacy settings, this may be returned as null.
    - `body` unknown
    - `created` string, date-time — The date and time at which the comment was created.
    - `id` string — The ID of the comment.
    - `jsdAuthorCanSeeRequest` boolean — Whether the comment was added from an email sent by a person who is not part of the issue. See [Allow external emails to be added as comments on issues](https://support.atlassian.com/jira-service-management-cloud/docs/allow-external-emails-to-be-added-as-comments-on-issues/)for information on setting up this feature.
    - `jsdPublic` boolean — Whether the comment is visible in Jira Service Desk. Defaults to true when comments are created in the Jira Cloud Platform. This includes when the site doesn't use Jira Service Desk or the project isn't a Jira Service Desk project and, therefore, there is no Jira Service Desk for the issue to be visible on. To create a comment with its visibility in Jira Service Desk set to false, use the Jira Service Desk REST API [Create request comment](https://developer.atlassian.com/cloud/jira/service-desk/rest/#api-rest-servicedeskapi-request-issueIdOrKey-comment-post) operation.
    - `properties` EntityProperty[] — A list of comment properties. Optional on create and update.
      - `key` string — The key of the property. Required on create and update.
      - `value` unknown
    - `renderedBody` string — The rendered version of the comment.
    - `self` string — The URL of the comment.
    - `updateAuthor` UserDetails — User details permitted by the user's Atlassian Account privacy settings. However, be aware of these exceptions: * User record deleted from Atlassian: This occurs as the result of a right to be forgotten request. In this case, `displayName` provides an indication and other parameters have default values or are blank (for example, email is blank). * User record corrupted: This occurs as a results of events such as a server import and can only happen to deleted users. In this case, `accountId` returns *unknown* and all other parameters have fallback values. * User record unavailable: This usually occurs due to an internal service outage. In this case, all parameters have fallback values.
      - `accountId` string — The account ID of the user, which uniquely identifies the user across all Atlassian products. For example, *5b10ac8d82e05b22cc7d4ef5*.
      - `accountType` string — The type of account represented by this user. This will be one of 'atlassian' (normal users), 'app' (application user) or 'customer' (Jira Service Desk customer user)
      - `active` boolean — Whether the user is active.
      - `avatarUrls` AvatarUrlsBean
        - `16x16` string, uri — The URL of the item's 16x16 pixel avatar.
        - `24x24` string, uri — The URL of the item's 24x24 pixel avatar.
        - `32x32` string, uri — The URL of the item's 32x32 pixel avatar.
        - `48x48` string, uri — The URL of the item's 48x48 pixel avatar.
      - `displayName` string — The display name of the user. Depending on the user’s privacy settings, this may return an alternative value.
      - `emailAddress` string — The email address of the user. Depending on the user’s privacy settings, this may be returned as null.
      - `key` string — This property is no longer available and will be removed from the documentation soon. See the [deprecation notice](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-user-privacy-api-migration-guide/) for details.
      - `name` string — This property is no longer available and will be removed from the documentation soon. See the [deprecation notice](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-user-privacy-api-migration-guide/) for details.
      - `self` string — The URL of the user.
      - `timeZone` string — The time zone specified in the user's profile. Depending on the user’s privacy settings, this may be returned as null.
    - `updated` string, date-time — The date and time at which the comment was updated last.
    - `visibility` Visibility — The group or role to which this item is visible.
      - `identifier` string, nullable — The ID of the group or the name of the role that visibility of this item is restricted to.
      - `type` 'group' | 'role' — Whether visibility of this item is restricted to a group or role.
      - `value` string — The name of the group or role that visibility of this item is restricted to. Please note that the name of a group is mutable, to reliably identify a group use `identifier`.
  - `inwardIssue` LinkedIssue, required — The ID or key of a linked issue.
    - `fields` Fields — Key fields from the linked issue.
      - `assignee` UserDetails — User details permitted by the user's Atlassian Account privacy settings. However, be aware of these exceptions: * User record deleted from Atlassian: This occurs as the result of a right to be forgotten request. In this case, `displayName` provides an indication and other parameters have default values or are blank (for example, email is blank). * User record corrupted: This occurs as a results of events such as a server import and can only happen to deleted users. In this case, `accountId` returns *unknown* and all other parameters have fallback values. * User record unavailable: This usually occurs due to an internal service outage. In this case, all parameters have fallback values.
        - `accountId` string — The account ID of the user, which uniquely identifies the user across all Atlassian products. For example, *5b10ac8d82e05b22cc7d4ef5*.
        - `accountType` string — The type of account represented by this user. This will be one of 'atlassian' (normal users), 'app' (application user) or 'customer' (Jira Service Desk customer user)
        - `active` boolean — Whether the user is active.
        - `avatarUrls` AvatarUrlsBean
          - `16x16` string, uri — The URL of the item's 16x16 pixel avatar.
          - `24x24` string, uri — The URL of the item's 24x24 pixel avatar.
          - `32x32` string, uri — The URL of the item's 32x32 pixel avatar.
          - `48x48` string, uri — The URL of the item's 48x48 pixel avatar.
        - `displayName` string — The display name of the user. Depending on the user’s privacy settings, this may return an alternative value.
        - `emailAddress` string — The email address of the user. Depending on the user’s privacy settings, this may be returned as null.
        - `key` string — This property is no longer available and will be removed from the documentation soon. See the [deprecation notice](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-user-privacy-api-migration-guide/) for details.
        - `name` string — This property is no longer available and will be removed from the documentation soon. See the [deprecation notice](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-user-privacy-api-migration-guide/) for details.
        - `self` string — The URL of the user.
        - `timeZone` string — The time zone specified in the user's profile. Depending on the user’s privacy settings, this may be returned as null.
      - `issueType` IssueTypeDetails — Details about an issue type.
        - `avatarId` integer — The ID of the issue type's avatar.
        - `description` string — The description of the issue type.
        - `entityId` string, uuid — Unique ID for next-gen projects.
        - `hierarchyLevel` integer — Hierarchy level of the issue type.
        - `iconUrl` string — The URL of the issue type's avatar.
        - `id` string — The ID of the issue type.
        - `name` string — The name of the issue type.
        - `scope` Scope — The projects the item is associated with. Indicated for items associated with [next-gen projects](https://confluence.atlassian.com/x/loMyO).
          - `project` ProjectDetails — Details about a project.
            - `avatarUrls` AvatarUrlsBean
              - …
            - `id` string — The ID of the project.
            - `key` string — The key of the project.
            - `name` string — The name of the project.
            - `projectCategory` UpdatedProjectCategory — A project category.
              - …
            - `projectTypeKey` 'software' | 'service_desk' | 'business' — The [project type](https://confluence.atlassian.com/x/GwiiLQ#Jiraapplicationsoverview-Productfeaturesandprojecttypes) of the project.
            - `self` string — The URL of the project details.
            - `simplified` boolean — Whether or not the project is simplified.
          - `type` 'PROJECT' | 'TEMPLATE' — The type of scope.
        - `self` string — The URL of these issue type details.
        - `subtask` boolean — Whether this issue type is used to create subtasks.
      - `issuetype` IssueTypeDetails — Details about an issue type.
        - `avatarId` integer — The ID of the issue type's avatar.
        - `description` string — The description of the issue type.
        - `entityId` string, uuid — Unique ID for next-gen projects.
        - `hierarchyLevel` integer — Hierarchy level of the issue type.
        - `iconUrl` string — The URL of the issue type's avatar.
        - `id` string — The ID of the issue type.
        - `name` string — The name of the issue type.
        - `scope` Scope — The projects the item is associated with. Indicated for items associated with [next-gen projects](https://confluence.atlassian.com/x/loMyO).
          - `project` ProjectDetails — Details about a project.
            - `avatarUrls` AvatarUrlsBean
              - …
            - `id` string — The ID of the project.
            - `key` string — The key of the project.
            - `name` string — The name of the project.
            - `projectCategory` UpdatedProjectCategory — A project category.
              - …
            - `projectTypeKey` 'software' | 'service_desk' | 'business' — The [project type](https://confluence.atlassian.com/x/GwiiLQ#Jiraapplicationsoverview-Productfeaturesandprojecttypes) of the project.
            - `self` string — The URL of the project details.
            - `simplified` boolean — Whether or not the project is simplified.
          - `type` 'PROJECT' | 'TEMPLATE' — The type of scope.
        - `self` string — The URL of these issue type details.
        - `subtask` boolean — Whether this issue type is used to create subtasks.
      - `priority` Priority — An issue priority.
        - `avatarId` integer — The avatarId of the avatar for the issue priority. This parameter is nullable and when set, this avatar references the universal avatar APIs.
        - `description` string — The description of the issue priority.
        - `iconUrl` string — The URL of the icon for the issue priority.
        - `id` string — The ID of the issue priority.
        - `isDefault` boolean — Whether this priority is the default.
        - `name` string — The name of the issue priority.
        - `schemes` ExpandPrioritySchemePage
          - `maxResults` integer
          - `startAt` integer
          - `total` integer
        - `self` string — The URL of the issue priority.
        - `statusColor` string — The color used to indicate the issue priority.
      - `status` StatusDetails — A status.
        - `description` string — The description of the status.
        - `iconUrl` string — The URL of the icon used to represent the status.
        - `id` string — The ID of the status.
        - `name` string — The name of the status.
        - `scope` Scope — The projects the item is associated with. Indicated for items associated with [next-gen projects](https://confluence.atlassian.com/x/loMyO).
          - `project` ProjectDetails — Details about a project.
            - `avatarUrls` AvatarUrlsBean
              - …
            - `id` string — The ID of the project.
            - `key` string — The key of the project.
            - `name` string — The name of the project.
            - `projectCategory` UpdatedProjectCategory — A project category.
              - …
            - `projectTypeKey` 'software' | 'service_desk' | 'business' — The [project type](https://confluence.atlassian.com/x/GwiiLQ#Jiraapplicationsoverview-Productfeaturesandprojecttypes) of the project.
            - `self` string — The URL of the project details.
            - `simplified` boolean — Whether or not the project is simplified.
          - `type` 'PROJECT' | 'TEMPLATE' — The type of scope.
        - `self` string — The URL of the status.
        - `statusCategory` StatusCategory — A status category.
          - `colorName` string — The name of the color used to represent the status category.
          - `id` integer — The ID of the status category.
          - `key` string — The key of the status category.
          - `name` string — The name of the status category.
          - `self` string — The URL of the status category.
      - `summary` string — The summary description of the linked issue.
      - `timetracking` TimeTrackingDetails — Time tracking details.
        - `originalEstimate` string — The original estimate of time needed for this issue in readable format.
        - `originalEstimateSeconds` integer — The original estimate of time needed for this issue in seconds.
        - `remainingEstimate` string — The remaining estimate of time needed for this issue in readable format.
        - `remainingEstimateSeconds` integer — The remaining estimate of time needed for this issue in seconds.
        - `timeSpent` string — Time worked on this issue in readable format.
        - `timeSpentSeconds` integer — Time worked on this issue in seconds.
    - `id` string — The ID of an issue. Required if `key` isn't provided.
    - `key` string — The key of an issue. Required if `id` isn't provided.
    - `self` string, uri — The URL of the issue.
  - `outwardIssue` LinkedIssue, required — The ID or key of a linked issue.
    - `fields` Fields — Key fields from the linked issue.
      - `assignee` UserDetails — User details permitted by the user's Atlassian Account privacy settings. However, be aware of these exceptions: * User record deleted from Atlassian: This occurs as the result of a right to be forgotten request. In this case, `displayName` provides an indication and other parameters have default values or are blank (for example, email is blank). * User record corrupted: This occurs as a results of events such as a server import and can only happen to deleted users. In this case, `accountId` returns *unknown* and all other parameters have fallback values. * User record unavailable: This usually occurs due to an internal service outage. In this case, all parameters have fallback values.
        - `accountId` string — The account ID of the user, which uniquely identifies the user across all Atlassian products. For example, *5b10ac8d82e05b22cc7d4ef5*.
        - `accountType` string — The type of account represented by this user. This will be one of 'atlassian' (normal users), 'app' (application user) or 'customer' (Jira Service Desk customer user)
        - `active` boolean — Whether the user is active.
        - `avatarUrls` AvatarUrlsBean
          - `16x16` string, uri — The URL of the item's 16x16 pixel avatar.
          - `24x24` string, uri — The URL of the item's 24x24 pixel avatar.
          - `32x32` string, uri — The URL of the item's 32x32 pixel avatar.
          - `48x48` string, uri — The URL of the item's 48x48 pixel avatar.
        - `displayName` string — The display name of the user. Depending on the user’s privacy settings, this may return an alternative value.
        - `emailAddress` string — The email address of the user. Depending on the user’s privacy settings, this may be returned as null.
        - `key` string — This property is no longer available and will be removed from the documentation soon. See the [deprecation notice](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-user-privacy-api-migration-guide/) for details.
        - `name` string — This property is no longer available and will be removed from the documentation soon. See the [deprecation notice](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-user-privacy-api-migration-guide/) for details.
        - `self` string — The URL of the user.
        - `timeZone` string — The time zone specified in the user's profile. Depending on the user’s privacy settings, this may be returned as null.
      - `issueType` IssueTypeDetails — Details about an issue type.
        - `avatarId` integer — The ID of the issue type's avatar.
        - `description` string — The description of the issue type.
        - `entityId` string, uuid — Unique ID for next-gen projects.
        - `hierarchyLevel` integer — Hierarchy level of the issue type.
        - `iconUrl` string — The URL of the issue type's avatar.
        - `id` string — The ID of the issue type.
        - `name` string — The name of the issue type.
        - `scope` Scope — The projects the item is associated with. Indicated for items associated with [next-gen projects](https://confluence.atlassian.com/x/loMyO).
          - `project` ProjectDetails — Details about a project.
            - `avatarUrls` AvatarUrlsBean
              - …
            - `id` string — The ID of the project.
            - `key` string — The key of the project.
            - `name` string — The name of the project.
            - `projectCategory` UpdatedProjectCategory — A project category.
              - …
            - `projectTypeKey` 'software' | 'service_desk' | 'business' — The [project type](https://confluence.atlassian.com/x/GwiiLQ#Jiraapplicationsoverview-Productfeaturesandprojecttypes) of the project.
            - `self` string — The URL of the project details.
            - `simplified` boolean — Whether or not the project is simplified.
          - `type` 'PROJECT' | 'TEMPLATE' — The type of scope.
        - `self` string — The URL of these issue type details.
        - `subtask` boolean — Whether this issue type is used to create subtasks.
      - `issuetype` IssueTypeDetails — Details about an issue type.
        - `avatarId` integer — The ID of the issue type's avatar.
        - `description` string — The description of the issue type.
        - `entityId` string, uuid — Unique ID for next-gen projects.
        - `hierarchyLevel` integer — Hierarchy level of the issue type.
        - `iconUrl` string — The URL of the issue type's avatar.
        - `id` string — The ID of the issue type.
        - `name` string — The name of the issue type.
        - `scope` Scope — The projects the item is associated with. Indicated for items associated with [next-gen projects](https://confluence.atlassian.com/x/loMyO).
          - `project` ProjectDetails — Details about a project.
            - `avatarUrls` AvatarUrlsBean
              - …
            - `id` string — The ID of the project.
            - `key` string — The key of the project.
            - `name` string — The name of the project.
            - `projectCategory` UpdatedProjectCategory — A project category.
              - …
            - `projectTypeKey` 'software' | 'service_desk' | 'business' — The [project type](https://confluence.atlassian.com/x/GwiiLQ#Jiraapplicationsoverview-Productfeaturesandprojecttypes) of the project.
            - `self` string — The URL of the project details.
            - `simplified` boolean — Whether or not the project is simplified.
          - `type` 'PROJECT' | 'TEMPLATE' — The type of scope.
        - `self` string — The URL of these issue type details.
        - `subtask` boolean — Whether this issue type is used to create subtasks.
      - `priority` Priority — An issue priority.
        - `avatarId` integer — The avatarId of the avatar for the issue priority. This parameter is nullable and when set, this avatar references the universal avatar APIs.
        - `description` string — The description of the issue priority.
        - `iconUrl` string — The URL of the icon for the issue priority.
        - `id` string — The ID of the issue priority.
        - `isDefault` boolean — Whether this priority is the default.
        - `name` string — The name of the issue priority.
        - `schemes` ExpandPrioritySchemePage
          - `maxResults` integer
          - `startAt` integer
          - `total` integer
        - `self` string — The URL of the issue priority.
        - `statusColor` string — The color used to indicate the issue priority.
      - `status` StatusDetails — A status.
        - `description` string — The description of the status.
        - `iconUrl` string — The URL of the icon used to represent the status.
        - `id` string — The ID of the status.
        - `name` string — The name of the status.
        - `scope` Scope — The projects the item is associated with. Indicated for items associated with [next-gen projects](https://confluence.atlassian.com/x/loMyO).
          - `project` ProjectDetails — Details about a project.
            - `avatarUrls` AvatarUrlsBean
              - …
            - `id` string — The ID of the project.
            - `key` string — The key of the project.
            - `name` string — The name of the project.
            - `projectCategory` UpdatedProjectCategory — A project category.
              - …
            - `projectTypeKey` 'software' | 'service_desk' | 'business' — The [project type](https://confluence.atlassian.com/x/GwiiLQ#Jiraapplicationsoverview-Productfeaturesandprojecttypes) of the project.
            - `self` string — The URL of the project details.
            - `simplified` boolean — Whether or not the project is simplified.
          - `type` 'PROJECT' | 'TEMPLATE' — The type of scope.
        - `self` string — The URL of the status.
        - `statusCategory` StatusCategory — A status category.
          - `colorName` string — The name of the color used to represent the status category.
          - `id` integer — The ID of the status category.
          - `key` string — The key of the status category.
          - `name` string — The name of the status category.
          - `self` string — The URL of the status category.
      - `summary` string — The summary description of the linked issue.
      - `timetracking` TimeTrackingDetails — Time tracking details.
        - `originalEstimate` string — The original estimate of time needed for this issue in readable format.
        - `originalEstimateSeconds` integer — The original estimate of time needed for this issue in seconds.
        - `remainingEstimate` string — The remaining estimate of time needed for this issue in readable format.
        - `remainingEstimateSeconds` integer — The remaining estimate of time needed for this issue in seconds.
        - `timeSpent` string — Time worked on this issue in readable format.
        - `timeSpentSeconds` integer — Time worked on this issue in seconds.
    - `id` string — The ID of an issue. Required if `key` isn't provided.
    - `key` string — The key of an issue. Required if `id` isn't provided.
    - `self` string, uri — The URL of the issue.
  - `type` IssueLinkType, required — This object is used as follows: * In the [ issueLink](#api-rest-api-3-issueLink-post) resource it defines and reports on the type of link between the issues. Find a list of issue link types with [Get issue link types](#api-rest-api-3-issueLinkType-get). * In the [ issueLinkType](#api-rest-api-3-issueLinkType-post) resource it defines and reports on issue link types.
    - `id` string — The ID of the issue link type and is used as follows: * In the [ issueLink](#api-rest-api-3-issueLink-post) resource it is the type of issue link. Required on create when `name` isn't provided. Otherwise, read only. * In the [ issueLinkType](#api-rest-api-3-issueLinkType-post) resource it is read only.
    - `inward` string — The description of the issue link type inward link and is used as follows: * In the [ issueLink](#api-rest-api-3-issueLink-post) resource it is read only. * In the [ issueLinkType](#api-rest-api-3-issueLinkType-post) resource it is required on create and optional on update. Otherwise, read only.
    - `name` string — The name of the issue link type and is used as follows: * In the [ issueLink](#api-rest-api-3-issueLink-post) resource it is the type of issue link. Required on create when `id` isn't provided. Otherwise, read only. * In the [ issueLinkType](#api-rest-api-3-issueLinkType-post) resource it is required on create and optional on update. Otherwise, read only.
    - `outward` string — The description of the issue link type outward link and is used as follows: * In the [ issueLink](#api-rest-api-3-issueLink-post) resource it is read only. * In the [ issueLinkType](#api-rest-api-3-issueLinkType-post) resource it is required on create and optional on update. Otherwise, read only.
    - `self` string, uri — The URL of the issue link type. Read only.

## Response `201`

Returned if the request is successful.

- unknown

## Other responses

- `400` — Returned if the comment is not created. The response contains an error message indicating why the comment wasn't created. The issue link is also not created.
- `401` — Returned if the authentication credentials are incorrect or missing.
- `404` — Returned if: * issue linking is disabled. * the user cannot view one or both of the issues. For example, the user doesn't have *Browse project* project permission for a project containing one of the issues. * the user does not have *link issues* project permission. * either of the link issues are not found. * the issue link type is not found.
- `413` — Returned if the per-issue limit for issue links has been breached.

---

[API](https://skmtc.net/atlassian/apis/the-jira-cloud-platform-rest-api-2.md) · [All operations](https://skmtc.net/atlassian/apis/the-jira-cloud-platform-rest-api-2/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/atlassian/the-jira-cloud-platform-rest-api-2/versions/5a51740d7ab3/schema)
