Reference · Tools

Linear

Interact with the Linear issue tracking platform. Create, read, update, and delete issues; add comments; and attach links.

Action Productivity v1

The Linear node manages issues and their conversation through Linear's GraphQL API — creating, reading, updating and deleting issues, adding threaded comments, and attaching links. A typical build is opening a Linear issue from an inbound bug report and commenting on it as the support thread develops.

Node type
Action
Parameters
16
Outputs
Output, Error
Credentials
Linear

Linear

Create, read, update, and delete issues in Linear, add comments, and attach links.

Overview

The Linear tool communicates with the Linear project management platform via its GraphQL API (https://api.linear.app/graphql). It supports full CRUD operations on issues (create, get, get many, update, delete), adding URL links to issues as attachments, and creating comments on issues with optional threading (parent comment replies). All requests use Bearer token authentication with the Linear API key. Issue retrieval supports cursor-based pagination with returnAll and limit parameters. GraphQL errors are extracted and surfaced with user-presentable messages when available.

Category: Productivity
Tool Name: linear
Version: 1

Appearance: Icon: si-linear | Color: #5E6AD2

Node Type

Action — processes input items and produces output

Input / Output

DirectionPort(s)
InputInput
OutputOutput, Error

Credentials

This tool requires Linear credentials. See the Credentials Guide for setup instructions.

Resources

ResourceValue
Commentcomment
Issueissue

Operations

Issue (issue)

OperationValueDescription
Add LinkaddLinkAdd a link to an issue
CreatecreateCreate an issue
DeletedeleteDelete an issue
GetgetGet an issue
Get ManygetAllGet many issues
UpdateupdateUpdate an issue

Comment (comment)

OperationValueDescription
Add CommentaddCommentAdd a comment to an issue

Parameters

ParameterTypeRequiredDefaultDescription
Issue ID (issueId)stringYesThe ID of the issue. Supports expressions like {{ $json.issueId }}.
LinkstringYesThe URL to attach to the issue. Supports expressions like {{ $json.url }}.

Issue: Create

ParameterTypeRequiredDefaultDescription
Team IDstringYesID of the team. Find in Linear: Settings > Teams > click team > copy ID from URL, or use the Linear API to list teams. Supports expressions like {{ $json.teamId }}.
TitlestringYesThe title of the issue. Supports expressions like {{ $json.title }}.
Additional Fields (additionalFields)collectionNo{}Optional issue fields set at creation time.
— Assignee IDstringNoUser ID to assign the issue to. Use the Linear API to list users and find their IDs.
— DescriptionstringNoIssue description. Supports Markdown formatting.
— PriorityoptionsNo0The priority level for the issue.
Options: 0 (No Priority), 1 (Urgent), 2 (High), 3 (Normal), 4 (Low)
— State IDstringNoWorkflow state ID. Use the Linear API to list workflow states for a team.

Issue: Delete

ParameterTypeRequiredDefaultDescription
Issue ID (issueId)stringYesThe ID of the issue. Supports expressions like {{ $json.issueId }}.

Issue: Get

ParameterTypeRequiredDefaultDescription
Issue ID (issueId)stringYesThe ID of the issue. Supports expressions like {{ $json.issueId }}.

Issue: Get Many

ParameterTypeRequiredDefaultDescription
Return AllbooleanNofalseWhether to return all results or only up to a given limit.
LimitnumberNo50Max number of results to return. (shown when Return All is false)

Issue: Update

ParameterTypeRequiredDefaultDescription
Issue ID (issueId)stringYesThe ID of the issue to update. Supports expressions like {{ $json.issueId }}.
Update FieldscollectionNo{}The issue fields to change. Only the fields you add are sent.
— Assignee IDstringNoUser ID to reassign the issue to.
— DescriptionstringNoNew issue description. Supports Markdown formatting.
— PriorityoptionsNo0The new priority level for the issue.
Options: 0 (No Priority), 1 (Urgent), 2 (High), 3 (Medium), 4 (Low)
— State IDstringNoNew workflow state ID.
— Team IDstringNoMove the issue to a different team by providing the new team ID.
— TitlestringNoNew title for the issue.

Comment: Add Comment

ParameterTypeRequiredDefaultDescription
Issue ID (issueId)stringYesThe ID of the issue to add a comment to. Supports expressions like {{ $json.issueId }}.
CommentstringYesThe comment body text. Supports Markdown formatting, and expressions like {{ $json.body }}.
Additional Fields (additionalFields)collectionNo{}Optional comment fields.
— Parent Comment IDstringNoID of the parent comment if this is a reply.

All Operations

ParameterTypeRequiredDefaultDescription
Max ConcurrencynumberNo10Maximum number of items to process concurrently.

Output Data

The API result is merged into the item JSON at the top level, so the incoming item’s own fields pass through alongside it and binary data on the input item is forwarded unchanged. Every operation except Issue: Get Many produces exactly one output item per input item.

  • Issue: Get Many fans out — it emits one output item per issue. Ten matching issues from a single input item become ten output items.
  • An empty result is not silently dropped. When Issue: Get Many matches no issues, the node still emits one item: the input item’s JSON with _noResults: true added. Check for that flag before treating a downstream item as a real issue.
  • Return All pages through the whole issue list; with it off, paging stops once Limit issues have been collected.

The fields that land on the item depend on the operation:

OperationFields merged onto the item
create, get, getAll, updateid, identifier, title, description, priority, dueDate, createdAt, archivedAt, state (id, name), assignee (id, displayName), creator (id, displayName), cycle (id, name)
deletesuccess
addLinksuccess
addCommentsuccess, comment (id)

Note that the priority you set through the Priority field comes back as priority on the issue.

Reference the result downstream by expression, e.g. {{ $json.id }} for the issue’s internal ID or {{ $json.identifier }} for its human-readable key.

Usage Examples

  • Create a new issue in a Linear team
  • Get all issues from Linear
  • Update the priority of a Linear issue
  • Delete a Linear issue
  • Add a URL link to a Linear issue
  • Add a comment to a Linear issue

Example Configuration

Create an issue with a description, assignee, priority and starting state:

{
  "type": "linear",
  "parameters": {
    "resource": "issue",
    "operation": "create",
    "teamId": "team_12345",
    "title": "Fix login bug",
    "additionalFields": {
      "description": "Users are unable to log in with their email addresses",
      "assigneeId": "user_67890",
      "priorityId": 1,
      "stateId": "state_todo"
    }
  }
}

Read a single issue by ID:

{
  "type": "linear",
  "parameters": {
    "resource": "issue",
    "operation": "get",
    "issueId": "issue_abc123"
  }
}

List issues, stopping after the first 50:

{
  "type": "linear",
  "parameters": {
    "resource": "issue",
    "operation": "getAll",
    "returnAll": false,
    "limit": 50
  }
}

List every issue the API key can see:

{
  "type": "linear",
  "parameters": {
    "resource": "issue",
    "operation": "getAll",
    "returnAll": true
  }
}

Update an existing issue’s title, description, state and priority:

{
  "type": "linear",
  "parameters": {
    "resource": "issue",
    "operation": "update",
    "issueId": "issue_abc123",
    "updateFields": {
      "title": "Updated: Fix critical login bug",
      "description": "Updated description with more details",
      "stateId": "state_inprogress",
      "priorityId": 0
    }
  }
}

Attach a reference URL to an issue:

{
  "type": "linear",
  "parameters": {
    "resource": "issue",
    "operation": "addLink",
    "issueId": "issue_abc123",
    "link": "https://docs.example.com/troubleshooting"
  }
}

Delete an issue:

{
  "type": "linear",
  "parameters": {
    "resource": "issue",
    "operation": "delete",
    "issueId": "issue_abc123"
  }
}

Post a Markdown comment on an issue:

{
  "type": "linear",
  "parameters": {
    "resource": "comment",
    "operation": "addComment",
    "issueId": "issue_abc123",
    "comment": "This issue has been reproduced on staging environment. **Priority:** High"
  }
}

Reply to an existing comment by threading under its ID:

{
  "type": "linear",
  "parameters": {
    "resource": "comment",
    "operation": "addComment",
    "issueId": "issue_abc123",
    "comment": "Thanks for the update! I'll look into this.",
    "additionalFields": {
      "parentId": "comment_xyz789"
    }
  }
}

Create an issue with only the required fields:

{
  "type": "linear",
  "parameters": {
    "resource": "issue",
    "operation": "create",
    "teamId": "team_12345",
    "title": "New feature request"
  }
}

Chain three nodes to create an issue, comment on it, then move it: because the created issue is merged onto the item, the following nodes address it as {{ $json.id }}.

{
  "type": "linear",
  "parameters": {
    "resource": "issue",
    "operation": "create",
    "teamId": "team_12345",
    "title": "Implement user authentication",
    "additionalFields": {
      "description": "Add OAuth2 integration for user login",
      "assigneeId": "user_67890",
      "priorityId": 1
    }
  }
}
{
  "type": "linear",
  "parameters": {
    "resource": "comment",
    "operation": "addComment",
    "issueId": "{{ $json.id }}",
    "comment": "Starting implementation of OAuth2 flow"
  }
}
{
  "type": "linear",
  "parameters": {
    "resource": "issue",
    "operation": "update",
    "issueId": "{{ $json.id }}",
    "updateFields": {
      "stateId": "state_inprogress"
    }
  }
}

Error Handling

ModeBehavior
stopHalts workflow on first error
continueSkips failed items, passes successful ones through
errorPortRoutes failed items to Error output port

Tips

Manages Linear issues and comments via GraphQL API — create, read, update, delete issues, add links, and create threaded comments.

Key Points to Remember

  • All collection parameters (additionalFields, updateFields) use flat object structure - never wrap in arrays or use _default
  • The operation parameter options depend entirely on the selected resource
  • Issue IDs are required for all operations except create and getAll
  • Markdown formatting is supported in comment text

Frequently asked questions

How should collection parameters be structured?

Additional Fields and Update Fields use a flat object structure. Never wrap them in arrays or use a `_default` key — that is the most common configuration mistake with this node.

Why do the available operations change?

The operation options depend entirely on the resource you select, so choose the resource first and the valid operations follow.

When is an issue ID required?

For every operation except create and getAll. Anything acting on an existing issue needs to know which one.

Can comments use formatting?

Yes — markdown is supported in comment text, so you can post structured updates rather than flat strings.

Build with the Linear node

Drop it into a workflow, wire it to an agent, or call it on a schedule. You'll need Linear credentials first.

Open BusyBot

Last updated . Spotted something wrong? Tell us.