logo_smallAxellero.io

Linear

Linear project management and issue tracking integration

Linear project management and issue tracking integration for Axellero Workflow Designer and Agentflow Designer.

Setup Required: See the Setup Guide for authentication configuration and connector setup.

Quick Navigation

Overview

The Linear node enables comprehensive automation of project management workflows through the Linear GraphQL API. Manage issues, projects, cycles, documents, and comments, while receiving real-time webhook notifications for workspace changes.

Key Features:

  • Issue Management - Create, update, list, and track issues across teams and projects with full customization
  • Project & Cycle Tracking - Manage projects, sprints/cycles, and track progress across teams
  • Documents - Create and manage Linear documents with Markdown content
  • Comments - Add, update, and manage comments with threaded reply support
  • Real-time Webhooks - Receive instant notifications for issue, comment, project, cycle, and label changes
  • AI Agent Support - Structured data responses ideal for AI-powered project management assistants

Connection Configuration

ParameterTypeRequiredDescription
apiKeyTEXTYesLinear API key for authentication

Setup Instructions: See the Setup Guide for authentication configuration, connector creation, and getting started.

Available Operations

CategoryOperationDescription
IssueslistIssuesList issues with optional filtering by team and state
IssuesgetIssueGet issue details by ID including relations and sub-issues
IssuescreateIssueCreate a new issue with full customization
IssuesupdateIssueUpdate an existing issue's fields, status, and assignments
IssuesdeleteIssueArchive or permanently delete an issue
Issue RelationscreateIssueRelationCreate a relation between two issues (blocks, duplicate, related)
Issue RelationsdeleteIssueRelationRemove a relation between issues
CommentslistCommentsList comments on an issue with pagination
CommentscreateCommentAdd a comment to an issue (supports Markdown and threaded replies)
CommentsupdateCommentUpdate an existing comment
CommentsdeleteCommentDelete a comment
ProjectslistProjectsList projects with optional filtering by team, state, and archived status
ProjectsgetProjectGet project details by ID
ProjectscreateProjectCreate a new project with teams, dates, and priority
ProjectsupdateProjectUpdate an existing project's fields
CycleslistCyclesList cycles/sprints for a team with optional filtering
CyclesgetCycleGet cycle/sprint details by ID
DocumentslistDocumentsList documents with optional filtering by project or initiative
DocumentsgetDocumentGet document details by ID or slug
DocumentscreateDocumentCreate a new document with Markdown content
DocumentsupdateDocumentUpdate an existing document's content and properties
Users & TeamslistTeamsList all teams in the workspace
Users & TeamsgetTeamGet team details by ID or key
Users & TeamslistUsersList all users in the workspace
Users & TeamsgetUserGet user details by ID (use 'me' for current user)
WorkflowlistIssueStatusesList workflow states for a team
WorkflowlistIssueLabelsList available issue labels

Operations Reference

Issues

listIssues

Retrieve issues from Linear with optional filtering. Returns detailed issue information including state, team, assignee, labels, project, and cycle data.

Parameters:

ParameterTypeRequiredDescription
limitINTNoMaximum number of issues to return (1-100, default: 50)
teamIdTEXTNoFilter by team ID
stateTEXTNoFilter by state name (e.g., "In Progress", "Done")

Configuration Example:

{
  "limit": 25,
  "teamId": "{{ctx.vars.teamId}}",
  "state": "In Progress"
}

Note: Connector options (like apiKey) are automatically injected by the runtime. You only need to specify operation-specific parameters.

Success Response:

{
  "issues": [
    {
      "id": "issue-abc123",
      "identifier": "ENG-123",
      "title": "Implement user authentication",
      "description": "Add OAuth 2.0 authentication flow",
      "priority": 2,
      "priorityLabel": "High",
      "estimate": 3,
      "dueDate": "2026-02-15",
      "createdAt": "2026-01-15T10:30:00Z",
      "updatedAt": "2026-01-20T14:45:00Z",
      "url": "https://linear.app/team/issue/ENG-123",
      "state": {
        "id": "state-xyz",
        "name": "In Progress",
        "color": "#0000FF",
        "type": "started"
      },
      "team": {
        "id": "team-123",
        "name": "Engineering",
        "key": "ENG"
      },
      "assignee": {
        "id": "user-456",
        "name": "John Doe",
        "email": "john@example.com"
      },
      "labels": [
        {
          "id": "label-789",
          "name": "Feature",
          "color": "#00FF00"
        }
      ]
    }
  ],
  "pageInfo": {
    "hasNextPage": true,
    "endCursor": "cursor-xyz789"
  },
  "metadata": {
    "operation": "listIssues",
    "timestamp": "2026-01-31T12:00:00Z",
    "count": 25
  }
}

getIssue

Retrieve a single issue from Linear by ID with full details including relations, parent issue, and children.

Parameters:

ParameterTypeRequiredDescription
idTEXTYesIssue ID or identifier (e.g., "ENG-123")
includeRelationsBOOLEANNoInclude related issues, parent, and children (default: false)

Configuration Example:

{
  "id": "{{ctx.vars.issueId}}",
  "includeRelations": true
}

Success Response:

{
  "issue": {
    "id": "issue-abc123",
    "identifier": "ENG-123",
    "title": "Implement user authentication",
    "description": "Add OAuth 2.0 authentication flow",
    "priority": 2,
    "priorityLabel": "High",
    "estimate": 3,
    "dueDate": "2026-02-15",
    "createdAt": "2026-01-15T10:30:00Z",
    "updatedAt": "2026-01-20T14:45:00Z",
    "url": "https://linear.app/team/issue/ENG-123",
    "state": {
      "id": "state-xyz",
      "name": "In Progress",
      "color": "#0000FF",
      "type": "started"
    },
    "team": {
      "id": "team-123",
      "name": "Engineering",
      "key": "ENG"
    },
    "parent": {
      "id": "issue-parent",
      "identifier": "ENG-100",
      "title": "Authentication Epic"
    },
    "children": [
      {
        "id": "issue-child1",
        "identifier": "ENG-124",
        "title": "OAuth callback handler"
      }
    ],
    "relations": [
      {
        "id": "relation-1",
        "type": "blocks",
        "relatedIssue": {
          "id": "issue-related",
          "identifier": "ENG-125",
          "title": "API integration"
        }
      }
    ]
  },
  "metadata": {
    "operation": "getIssue",
    "timestamp": "2026-01-31T12:00:00Z"
  }
}

createIssue

Create a new issue in Linear with full customization options including assignment, priority, labels, and subscriber notifications.

Parameters:

ParameterTypeRequiredDescription
titleTEXTYesIssue title
teamIdTEXTYesTeam ID to create the issue in
descriptionTEXTNoIssue description (supports Markdown)
assigneeIdTEXTNoUser ID to assign the issue to
priorityINTNoPriority (0=None, 1=Urgent, 2=High, 3=Normal, 4=Low)
stateIdTEXTNoWorkflow state ID
labelIdsTEXTNoComma-separated label IDs
cycleIdTEXTNoCycle/sprint ID
projectIdTEXTNoProject ID
estimateINTNoEstimate points
dueDateTEXTNoDue date (ISO format: YYYY-MM-DD)
parentIdTEXTNoParent issue ID (for sub-issues)
subscriberIdsTEXTNoComma-separated user IDs to subscribe (they will receive notifications)

Configuration Example:

{
  "title": "{{ctx.vars.issueTitle}}",
  "teamId": "{{ctx.vars.teamId}}",
  "description": "{{ctx.vars.description}}",
  "priority": 2,
  "assigneeId": "{{ctx.vars.assigneeId}}",
  "subscriberIds": "{{ctx.vars.notifyUserIds}}"
}

Success Response:

{
  "success": true,
  "issue": {
    "id": "issue-new123",
    "identifier": "ENG-456",
    "title": "New Feature Request",
    "description": "Implement dark mode support",
    "priority": 2,
    "priorityLabel": "High",
    "createdAt": "2026-02-01T10:00:00Z",
    "updatedAt": "2026-02-01T10:00:00Z",
    "url": "https://linear.app/team/issue/ENG-456",
    "state": {
      "id": "state-backlog",
      "name": "Backlog",
      "color": "#CCCCCC",
      "type": "backlog"
    },
    "team": {
      "id": "team-123",
      "name": "Engineering",
      "key": "ENG"
    }
  },
  "metadata": {
    "operation": "createIssue",
    "timestamp": "2026-02-01T10:00:00Z"
  }
}

Error Response:

{
  "success": false,
  "error": {
    "code": "VALIDATION_ERROR",
    "message": "Missing required field: teamId"
  }
}

updateIssue

Update an existing issue in Linear. Only provided fields will be updated.

Parameters:

ParameterTypeRequiredDescription
idTEXTYesIssue ID to update
titleTEXTNoNew issue title
descriptionTEXTNoNew description (supports Markdown)
assigneeIdTEXTNoUser ID to assign the issue to
priorityINTNoPriority (0=None, 1=Urgent, 2=High, 3=Normal, 4=Low)
stateIdTEXTNoWorkflow state ID
labelIdsTEXTNoComma-separated label IDs (replaces existing)
cycleIdTEXTNoCycle/sprint ID
projectIdTEXTNoProject ID
estimateINTNoEstimate points
dueDateTEXTNoDue date (ISO format: YYYY-MM-DD)
parentIdTEXTNoParent issue ID (for sub-issues)

Configuration Example:

{
  "id": "{{ctx.vars.issueId}}",
  "stateId": "{{ctx.vars.newStateId}}",
  "priority": 1,
  "assigneeId": "{{ctx.vars.newAssigneeId}}"
}

Success Response:

{
  "success": true,
  "issue": {
    "id": "issue-abc123",
    "identifier": "ENG-123",
    "title": "Implement user authentication",
    "priority": 1,
    "priorityLabel": "Urgent",
    "updatedAt": "2026-02-01T11:00:00Z",
    "state": {
      "id": "state-progress",
      "name": "In Progress",
      "color": "#0000FF",
      "type": "started"
    }
  },
  "metadata": {
    "operation": "updateIssue",
    "timestamp": "2026-02-01T11:00:00Z"
  }
}

deleteIssue

Archive or permanently delete an issue in Linear. By default, issues are archived (soft delete). Use permanently: true for permanent deletion.

Parameters:

ParameterTypeRequiredDescription
idTEXTYesIssue ID to delete
permanentlyBOOLEANNoPermanently delete (true) or archive (false, default)

Configuration Example:

{
  "id": "{{ctx.vars.issueId}}",
  "permanently": false
}

Success Response:

{
  "success": true,
  "action": "archived",
  "issueId": "issue-abc123",
  "metadata": {
    "operation": "deleteIssue",
    "timestamp": "2026-02-01T12:00:00Z"
  }
}

Issue Relations

createIssueRelation

Create a relation between two issues in Linear. Supports blocking relationships, duplicates, and general related issues.

Parameters:

ParameterTypeRequiredDescription
issueIdTEXTYesSource issue ID
relatedIssueIdTEXTYesRelated issue ID
typeTEXTYesRelation type (blocks, duplicate, related)

Relation Types:

TypeDescription
blocksThe source issue blocks the related issue
duplicateThe source issue is a duplicate of the related issue
relatedThe issues are related to each other

Configuration Example:

{
  "issueId": "{{ctx.vars.issueId}}",
  "relatedIssueId": "{{ctx.vars.blockedIssueId}}",
  "type": "blocks"
}

Success Response:

{
  "success": true,
  "relation": {
    "id": "relation-abc123",
    "type": "blocks",
    "issue": {
      "id": "issue-123",
      "identifier": "ENG-123",
      "title": "Authentication implementation"
    },
    "relatedIssue": {
      "id": "issue-456",
      "identifier": "ENG-456",
      "title": "API integration"
    },
    "createdAt": "2026-02-01T12:00:00Z",
    "updatedAt": "2026-02-01T12:00:00Z"
  },
  "metadata": {
    "operation": "createIssueRelation",
    "timestamp": "2026-02-01T12:00:00Z"
  }
}

deleteIssueRelation

Delete a relation between issues in Linear.

Parameters:

ParameterTypeRequiredDescription
idTEXTYesIssue relation ID to delete

Configuration Example:

{
  "id": "{{ctx.vars.relationId}}"
}

Success Response:

{
  "success": true,
  "relationId": "relation-abc123",
  "metadata": {
    "operation": "deleteIssueRelation",
    "timestamp": "2026-02-01T12:00:00Z"
  }
}

Comments

listComments

List comments on an issue with pagination support. Returns comment details including author, content, and thread information.

Parameters:

ParameterTypeRequiredDescription
issueIdTEXTYesIssue ID to get comments for
limitINTNoMaximum number of comments to return (1-100, default: 50)

Configuration Example:

{
  "issueId": "{{ctx.vars.issueId}}",
  "limit": 25
}

Success Response:

{
  "comments": [
    {
      "id": "comment-123",
      "body": "This is a comment with **Markdown** support",
      "createdAt": "2026-01-15T10:30:00Z",
      "updatedAt": "2026-01-15T10:30:00Z",
      "url": "https://linear.app/team/issue/ENG-123#comment-123",
      "user": {
        "id": "user-456",
        "name": "John Doe",
        "email": "john@example.com",
        "avatarUrl": "https://example.com/avatar.jpg"
      },
      "issue": {
        "id": "issue-abc",
        "identifier": "ENG-123",
        "title": "Implement authentication"
      },
      "parentId": null
    },
    {
      "id": "comment-124",
      "body": "This is a threaded reply",
      "createdAt": "2026-01-15T11:00:00Z",
      "updatedAt": "2026-01-15T11:00:00Z",
      "url": "https://linear.app/team/issue/ENG-123#comment-124",
      "user": {
        "id": "user-789",
        "name": "Jane Smith",
        "email": "jane@example.com",
        "avatarUrl": null
      },
      "issue": {
        "id": "issue-abc",
        "identifier": "ENG-123",
        "title": "Implement authentication"
      },
      "parentId": "comment-123"
    }
  ],
  "pageInfo": {
    "hasNextPage": false,
    "endCursor": null
  },
  "metadata": {
    "operation": "listComments",
    "timestamp": "2026-01-31T12:00:00Z",
    "count": 2,
    "issueId": "issue-abc"
  }
}

createComment

Add a comment to an issue. Supports Markdown formatting and threaded replies.

Parameters:

ParameterTypeRequiredDescription
issueIdTEXTYesIssue ID to add comment to
bodyTEXTYesComment content (supports Markdown)
parentIdTEXTNoParent comment ID for threaded replies

Configuration Example:

{
  "issueId": "{{ctx.vars.issueId}}",
  "body": "## Update\n\nThis task is now **in progress**.\n\n- [x] Research completed\n- [ ] Implementation started"
}

Threaded Reply Example:

{
  "issueId": "{{ctx.vars.issueId}}",
  "body": "Thanks for the update! Let me know if you need help.",
  "parentId": "{{ctx.vars.parentCommentId}}"
}

Success Response:

{
  "success": true,
  "comment": {
    "id": "comment-new123",
    "body": "## Update\n\nThis task is now **in progress**.",
    "createdAt": "2026-02-01T10:00:00Z",
    "updatedAt": "2026-02-01T10:00:00Z",
    "url": "https://linear.app/team/issue/ENG-123#comment-new123",
    "user": {
      "id": "user-456",
      "name": "John Doe",
      "email": "john@example.com",
      "avatarUrl": "https://example.com/avatar.jpg"
    },
    "issue": {
      "id": "issue-abc",
      "identifier": "ENG-123",
      "title": "Implement authentication"
    },
    "parentId": null
  },
  "metadata": {
    "operation": "createComment",
    "timestamp": "2026-02-01T10:00:00Z"
  }
}

updateComment

Update an existing comment in Linear.

Parameters:

ParameterTypeRequiredDescription
idTEXTYesComment ID to update
bodyTEXTYesNew comment body (supports Markdown)

Configuration Example:

{
  "id": "{{ctx.vars.commentId}}",
  "body": "Updated comment with **new content**"
}

Success Response:

{
  "success": true,
  "comment": {
    "id": "comment-123",
    "body": "Updated comment with **new content**",
    "createdAt": "2026-01-15T10:30:00Z",
    "updatedAt": "2026-02-01T12:00:00Z",
    "url": "https://linear.app/team/issue/ENG-123#comment-123",
    "user": {
      "id": "user-456",
      "name": "John Doe",
      "email": "john@example.com"
    },
    "issue": {
      "id": "issue-abc",
      "identifier": "ENG-123",
      "title": "Implement authentication"
    }
  },
  "metadata": {
    "operation": "updateComment",
    "timestamp": "2026-02-01T12:00:00Z"
  }
}

deleteComment

Delete a comment in Linear.

Parameters:

ParameterTypeRequiredDescription
idTEXTYesComment ID to delete

Configuration Example:

{
  "id": "{{ctx.vars.commentId}}"
}

Success Response:

{
  "success": true,
  "commentId": "comment-123",
  "metadata": {
    "operation": "deleteComment",
    "timestamp": "2026-02-01T12:00:00Z"
  }
}

Projects

listProjects

List projects from Linear with optional filtering by team, state, and archived status.

Parameters:

ParameterTypeRequiredDescription
limitINTNoMaximum number of projects to return (1-100, default: 50)
teamIdTEXTNoFilter by team ID
stateTEXTNoFilter by project state (planned, started, paused, completed, canceled)
includeArchivedBOOLEANNoInclude archived projects (default: false)

Configuration Example:

{
  "limit": 25,
  "teamId": "{{ctx.vars.teamId}}",
  "state": "started"
}

Success Response:

{
  "projects": [
    {
      "id": "project-abc123",
      "name": "Q1 Product Launch",
      "description": "Launch new product features",
      "url": "https://linear.app/team/project/q1-launch",
      "color": "#5E6AD2",
      "icon": "rocket",
      "state": "started",
      "progress": 0.45,
      "startDate": "2026-01-01",
      "targetDate": "2026-03-31",
      "priority": 2,
      "priorityLabel": "High",
      "createdAt": "2026-01-01T00:00:00Z",
      "updatedAt": "2026-01-15T10:00:00Z",
      "lead": {
        "id": "user-123",
        "name": "John Doe",
        "email": "john@example.com",
        "avatarUrl": "https://example.com/avatar.jpg"
      },
      "status": {
        "id": "status-1",
        "name": "In Progress",
        "color": "#F2C94C",
        "type": "started"
      },
      "teams": [
        {
          "id": "team-123",
          "name": "Engineering",
          "key": "ENG"
        }
      ]
    }
  ],
  "pageInfo": {
    "hasNextPage": true,
    "endCursor": "cursor-xyz789"
  },
  "metadata": {
    "operation": "listProjects",
    "timestamp": "2026-01-31T12:00:00Z",
    "count": 1
  }
}

getProject

Retrieve a single project from Linear by ID with full details.

Parameters:

ParameterTypeRequiredDescription
idTEXTYesProject ID

Configuration Example:

{
  "id": "{{ctx.vars.projectId}}"
}

Success Response:

{
  "project": {
    "id": "project-abc123",
    "name": "Q1 Product Launch",
    "description": "Launch new product features",
    "url": "https://linear.app/team/project/q1-launch",
    "color": "#5E6AD2",
    "icon": "rocket",
    "state": "started",
    "progress": 0.45,
    "startDate": "2026-01-01",
    "targetDate": "2026-03-31",
    "priority": 2,
    "priorityLabel": "High",
    "createdAt": "2026-01-01T00:00:00Z",
    "updatedAt": "2026-01-15T10:00:00Z",
    "lead": {
      "id": "user-123",
      "name": "John Doe",
      "email": "john@example.com"
    },
    "status": {
      "id": "status-1",
      "name": "In Progress",
      "color": "#F2C94C",
      "type": "started"
    },
    "teams": [
      {
        "id": "team-123",
        "name": "Engineering",
        "key": "ENG"
      }
    ]
  },
  "metadata": {
    "operation": "getProject",
    "timestamp": "2026-01-31T12:00:00Z"
  }
}

createProject

Create a new project in Linear with full customization options.

Parameters:

ParameterTypeRequiredDescription
nameTEXTYesProject name
teamIdsTEXTYesComma-separated team IDs for the project
descriptionTEXTNoProject description (supports Markdown)
stateTEXTNoProject state (planned, started, paused, completed, canceled)
leadIdTEXTNoUser ID for the project lead
startDateTEXTNoProject start date (ISO format: YYYY-MM-DD)
targetDateTEXTNoProject target date (ISO format: YYYY-MM-DD)
priorityINTNoPriority (0=None, 1=Urgent, 2=High, 3=Medium, 4=Low)
colorTEXTNoProject color (hex format: #RRGGBB)
iconTEXTNoProject icon emoji

Configuration Example:

{
  "name": "{{ctx.vars.projectName}}",
  "teamIds": "{{ctx.vars.teamId}}",
  "description": "# Project Overview\n\nProject description with **Markdown** support.",
  "startDate": "2026-02-01",
  "targetDate": "2026-06-30",
  "priority": 2
}

Success Response:

{
  "success": true,
  "project": {
    "id": "project-new123",
    "name": "New Project",
    "description": "# Project Overview\n\nProject description.",
    "url": "https://linear.app/team/project/new-project",
    "state": "planned",
    "progress": 0,
    "priority": 2,
    "priorityLabel": "High",
    "createdAt": "2026-02-01T10:00:00Z",
    "updatedAt": "2026-02-01T10:00:00Z",
    "status": {
      "id": "status-1",
      "name": "Planned",
      "type": "planned"
    },
    "teams": [
      {
        "id": "team-123",
        "name": "Engineering",
        "key": "ENG"
      }
    ]
  },
  "metadata": {
    "operation": "createProject",
    "timestamp": "2026-02-01T10:00:00Z"
  }
}

updateProject

Update an existing project in Linear. Only provided fields will be updated.

Parameters:

ParameterTypeRequiredDescription
idTEXTYesProject ID to update
nameTEXTNoNew project name
descriptionTEXTNoNew description (supports Markdown)
stateTEXTNoProject state (planned, started, paused, completed, canceled)
leadIdTEXTNoUser ID for the project lead
startDateTEXTNoProject start date (ISO format: YYYY-MM-DD)
targetDateTEXTNoProject target date (ISO format: YYYY-MM-DD)
priorityINTNoPriority (0=None, 1=Urgent, 2=High, 3=Medium, 4=Low)
colorTEXTNoProject color (hex format: #RRGGBB)
iconTEXTNoProject icon emoji

Configuration Example:

{
  "id": "{{ctx.vars.projectId}}",
  "state": "completed",
  "targetDate": "2026-05-15"
}

Success Response:

{
  "success": true,
  "project": {
    "id": "project-abc123",
    "name": "Q1 Product Launch",
    "state": "completed",
    "progress": 1.0,
    "targetDate": "2026-05-15",
    "updatedAt": "2026-02-01T11:00:00Z"
  },
  "metadata": {
    "operation": "updateProject",
    "timestamp": "2026-02-01T11:00:00Z"
  }
}

Cycles

listCycles

List cycles/sprints for a team from Linear with optional filtering by time period.

Parameters:

ParameterTypeRequiredDescription
teamIdTEXTYesTeam ID to list cycles for
limitINTNoMaximum number of cycles to return (1-100, default: 50)
filterTEXTNoFilter by time period (all, current, previous, next)
includeArchivedBOOLEANNoInclude archived cycles (default: false)

Configuration Example:

{
  "teamId": "{{ctx.vars.teamId}}",
  "filter": "current",
  "limit": 10
}

Success Response:

{
  "cycles": [
    {
      "id": "cycle-abc123",
      "name": "Sprint 1",
      "number": 1,
      "description": "First sprint of Q1",
      "startsAt": "2026-01-01T00:00:00Z",
      "endsAt": "2026-01-14T00:00:00Z",
      "completedAt": null,
      "progress": 0.75,
      "scopeHistory": [10, 12, 15, 15],
      "completedScopeHistory": [0, 2, 5, 10],
      "inProgressScopeHistory": [3, 4, 5, 2],
      "createdAt": "2026-01-01T00:00:00Z",
      "updatedAt": "2026-01-10T00:00:00Z",
      "team": {
        "id": "team-123",
        "name": "Engineering",
        "key": "ENG"
      }
    }
  ],
  "pageInfo": {
    "hasNextPage": false,
    "endCursor": null
  },
  "metadata": {
    "operation": "listCycles",
    "timestamp": "2026-02-01T12:00:00Z",
    "count": 1
  }
}

getCycle

Get detailed information about a single cycle/sprint by ID.

Parameters:

ParameterTypeRequiredDescription
idTEXTYesCycle ID

Configuration Example:

{
  "id": "{{ctx.vars.cycleId}}"
}

Success Response:

{
  "cycle": {
    "id": "cycle-abc123",
    "name": "Sprint 1",
    "number": 1,
    "description": "First sprint of Q1",
    "startsAt": "2026-01-01T00:00:00Z",
    "endsAt": "2026-01-14T00:00:00Z",
    "completedAt": "2026-01-14T18:00:00Z",
    "progress": 1.0,
    "scopeHistory": [10, 12, 15, 15, 15],
    "completedScopeHistory": [0, 2, 5, 10, 15],
    "inProgressScopeHistory": [3, 4, 5, 2, 0],
    "createdAt": "2026-01-01T00:00:00Z",
    "updatedAt": "2026-01-14T18:00:00Z",
    "team": {
      "id": "team-123",
      "name": "Engineering",
      "key": "ENG"
    }
  },
  "metadata": {
    "operation": "getCycle",
    "timestamp": "2026-02-01T12:00:00Z"
  }
}

Documents

listDocuments

List documents from Linear with optional filtering by project, initiative, or creator.

Parameters:

ParameterTypeRequiredDescription
limitINTNoMaximum number of documents to return (1-250, default: 50)
projectIdTEXTNoFilter by project ID
initiativeIdTEXTNoFilter by initiative ID
creatorIdTEXTNoFilter by creator user ID
queryTEXTNoSearch documents by title
includeArchivedBOOLEANNoInclude archived documents (default: false)

Configuration Example:

{
  "limit": 25,
  "projectId": "{{ctx.vars.projectId}}"
}

Success Response:

{
  "documents": [
    {
      "id": "doc-abc123",
      "title": "Project Requirements",
      "content": "# Requirements\n\nThis document outlines the project requirements.",
      "icon": ":page_facing_up:",
      "color": "#5E6AD2",
      "url": "https://linear.app/team/docs/project-requirements",
      "slugId": "project-requirements",
      "createdAt": "2026-01-15T10:00:00Z",
      "updatedAt": "2026-01-20T14:30:00Z",
      "creator": {
        "id": "user-123",
        "name": "John Doe"
      },
      "updatedBy": {
        "id": "user-456",
        "name": "Jane Smith"
      },
      "project": {
        "id": "project-123",
        "name": "Q1 Product Launch"
      }
    }
  ],
  "pageInfo": {
    "hasNextPage": false,
    "endCursor": null
  },
  "metadata": {
    "operation": "listDocuments",
    "timestamp": "2026-02-01T12:00:00Z",
    "count": 1
  }
}

getDocument

Retrieve a single document from Linear by ID or slug with full content.

Parameters:

ParameterTypeRequiredDescription
idTEXTYesDocument ID or slug

Configuration Example:

{
  "id": "{{ctx.vars.documentId}}"
}

Success Response:

{
  "document": {
    "id": "doc-abc123",
    "title": "Project Requirements",
    "content": "# Requirements\n\n## Overview\n\nThis document outlines the project requirements.\n\n## Features\n\n- Feature 1\n- Feature 2\n- Feature 3",
    "icon": ":page_facing_up:",
    "color": "#5E6AD2",
    "url": "https://linear.app/team/docs/project-requirements",
    "slugId": "project-requirements",
    "createdAt": "2026-01-15T10:00:00Z",
    "updatedAt": "2026-01-20T14:30:00Z",
    "creator": {
      "id": "user-123",
      "name": "John Doe"
    },
    "project": {
      "id": "project-123",
      "name": "Q1 Product Launch"
    }
  },
  "metadata": {
    "operation": "getDocument",
    "timestamp": "2026-02-01T12:00:00Z"
  }
}

createDocument

Create a new document in Linear with Markdown content. Documents can be associated with projects, issues, or initiatives.

Parameters:

ParameterTypeRequiredDescription
titleTEXTYesDocument title
contentTEXTNoDocument content (supports Markdown)
projectIdTEXTNoAssociate with a project ID
issueIdTEXTNoAssociate with an issue ID
initiativeIdTEXTNoAssociate with an initiative ID
colorTEXTNoDocument color (hex format: #RRGGBB)
iconTEXTNoDocument icon (emoji shortcode, e.g., :page_facing_up:)

Configuration Example:

{
  "title": "{{ctx.vars.docTitle}}",
  "content": "# Overview\n\nDocument content with **Markdown** support.",
  "projectId": "{{ctx.vars.projectId}}",
  "icon": ":book:"
}

Success Response:

{
  "success": true,
  "document": {
    "id": "doc-new123",
    "title": "New Document",
    "content": "# Overview\n\nDocument content with **Markdown** support.",
    "icon": ":book:",
    "url": "https://linear.app/team/docs/new-document",
    "slugId": "new-document",
    "createdAt": "2026-02-01T10:00:00Z",
    "updatedAt": "2026-02-01T10:00:00Z",
    "creator": {
      "id": "user-123",
      "name": "John Doe"
    },
    "project": {
      "id": "project-123",
      "name": "Q1 Product Launch"
    }
  },
  "metadata": {
    "operation": "createDocument",
    "timestamp": "2026-02-01T10:00:00Z"
  }
}

updateDocument

Update an existing document in Linear. Only provided fields will be updated.

Parameters:

ParameterTypeRequiredDescription
idTEXTYesDocument ID to update
titleTEXTNoNew document title
contentTEXTNoNew content (supports Markdown)
projectIdTEXTNoMove to different project
colorTEXTNoDocument color (hex format: #RRGGBB)
iconTEXTNoDocument icon (emoji shortcode)

Configuration Example:

{
  "id": "{{ctx.vars.documentId}}",
  "content": "# Updated Content\n\nThis document has been updated.",
  "icon": ":memo:"
}

Success Response:

{
  "success": true,
  "document": {
    "id": "doc-abc123",
    "title": "Project Requirements",
    "content": "# Updated Content\n\nThis document has been updated.",
    "icon": ":memo:",
    "url": "https://linear.app/team/docs/project-requirements",
    "updatedAt": "2026-02-01T11:00:00Z",
    "updatedBy": {
      "id": "user-123",
      "name": "John Doe"
    }
  },
  "metadata": {
    "operation": "updateDocument",
    "timestamp": "2026-02-01T11:00:00Z"
  }
}

Users & Teams

listTeams

List all teams in the Linear workspace.

Parameters:

ParameterTypeRequiredDescription
limitINTNoMaximum number of teams to return (1-100, default: 50)

Configuration Example:

{
  "limit": 25
}

Success Response:

{
  "teams": [
    {
      "id": "team-123",
      "name": "Engineering",
      "key": "ENG",
      "description": "Engineering team",
      "private": false,
      "timezone": "America/New_York",
      "createdAt": "2026-01-01T00:00:00Z",
      "updatedAt": "2026-01-15T00:00:00Z"
    }
  ],
  "pageInfo": {
    "hasNextPage": false,
    "endCursor": null
  },
  "metadata": {
    "operation": "listTeams",
    "timestamp": "2026-01-31T12:00:00Z",
    "count": 1
  }
}

getTeam

Retrieve a single team by ID or key.

Parameters:

ParameterTypeRequiredDescription
idTEXTYesTeam ID or key

Configuration Example:

{
  "id": "{{ctx.vars.teamId}}"
}

Success Response:

{
  "team": {
    "id": "team-123",
    "name": "Engineering",
    "key": "ENG",
    "description": "Engineering team",
    "private": false,
    "timezone": "America/New_York",
    "createdAt": "2026-01-01T00:00:00Z",
    "updatedAt": "2026-01-15T00:00:00Z"
  },
  "metadata": {
    "operation": "getTeam",
    "timestamp": "2026-01-31T12:00:00Z"
  }
}

listUsers

List all users in the Linear workspace.

Parameters:

ParameterTypeRequiredDescription
limitINTNoMaximum number of users to return (1-100, default: 50)
includeDisabledBOOLEANNoInclude disabled/inactive users (default: false)

Configuration Example:

{
  "limit": 50,
  "includeDisabled": false
}

Success Response:

{
  "users": [
    {
      "id": "user-123",
      "name": "John Doe",
      "displayName": "John",
      "email": "john@example.com",
      "avatarUrl": "https://example.com/avatar.jpg",
      "active": true,
      "admin": false,
      "guest": false,
      "createdAt": "2026-01-01T00:00:00Z",
      "updatedAt": "2026-01-15T00:00:00Z"
    }
  ],
  "pageInfo": {
    "hasNextPage": false,
    "endCursor": null
  },
  "metadata": {
    "operation": "listUsers",
    "timestamp": "2026-01-31T12:00:00Z",
    "count": 1
  }
}

getUser

Retrieve a single user by ID. Use 'me' to get the current authenticated user.

Parameters:

ParameterTypeRequiredDescription
idTEXTYesUser ID or 'me' for current user

Configuration Example:

{
  "id": "me"
}

Success Response:

{
  "user": {
    "id": "user-123",
    "name": "John Doe",
    "displayName": "John",
    "email": "john@example.com",
    "avatarUrl": "https://example.com/avatar.jpg",
    "active": true,
    "admin": false,
    "guest": false,
    "createdAt": "2026-01-01T00:00:00Z",
    "updatedAt": "2026-01-15T00:00:00Z"
  },
  "metadata": {
    "operation": "getUser",
    "timestamp": "2026-01-31T12:00:00Z"
  }
}

Workflow

listIssueStatuses

List all workflow states (issue statuses) for a team. Statuses are returned sorted by position.

Parameters:

ParameterTypeRequiredDescription
teamIdTEXTYesTeam ID to get workflow states for

Configuration Example:

{
  "teamId": "{{ctx.vars.teamId}}"
}

Success Response:

{
  "statuses": [
    {
      "id": "state-1",
      "name": "Backlog",
      "color": "#CCCCCC",
      "type": "backlog",
      "position": 0,
      "description": "Items waiting to be worked on"
    },
    {
      "id": "state-2",
      "name": "In Progress",
      "color": "#0000FF",
      "type": "started",
      "position": 1
    },
    {
      "id": "state-3",
      "name": "Done",
      "color": "#00FF00",
      "type": "completed",
      "position": 2
    }
  ],
  "metadata": {
    "operation": "listIssueStatuses",
    "timestamp": "2026-01-31T12:00:00Z",
    "count": 3,
    "teamId": "team-123"
  }
}

listIssueLabels

List all issue labels from the workspace or filtered by team.

Parameters:

ParameterTypeRequiredDescription
limitINTNoMaximum number of labels to return (1-100, default: 50)
teamIdTEXTNoFilter by team ID

Configuration Example:

{
  "limit": 50,
  "teamId": "{{ctx.vars.teamId}}"
}

Success Response:

{
  "labels": [
    {
      "id": "label-1",
      "name": "Bug",
      "color": "#FF0000",
      "description": "Bug reports",
      "isGroup": false,
      "createdAt": "2026-01-01T00:00:00Z",
      "updatedAt": "2026-01-15T00:00:00Z"
    },
    {
      "id": "label-2",
      "name": "Feature",
      "color": "#00FF00",
      "isGroup": false,
      "parent": {
        "id": "group-1",
        "name": "Type"
      },
      "createdAt": "2026-01-01T00:00:00Z",
      "updatedAt": "2026-01-15T00:00:00Z"
    }
  ],
  "pageInfo": {
    "hasNextPage": false,
    "endCursor": null
  },
  "metadata": {
    "operation": "listIssueLabels",
    "timestamp": "2026-01-31T12:00:00Z",
    "count": 2
  }
}

Triggers

Linear Event

Receive real-time webhook notifications when events occur in your Linear workspace. Supports HMAC-SHA256 signature verification for security.

Supported Events

Event CodeEvent NameDescription
Issue:createIssue CreatedNew issue created
Issue:updateIssue UpdatedIssue was updated
Issue:removeIssue RemovedIssue was deleted
Comment:createComment CreatedNew comment added
Comment:updateComment UpdatedComment was edited
Comment:removeComment RemovedComment was deleted
Project:createProject CreatedNew project created
Project:updateProject UpdatedProject was updated
Project:removeProject RemovedProject was deleted
Cycle:createCycle CreatedNew cycle/sprint created
Cycle:updateCycle UpdatedCycle was updated
Cycle:removeCycle RemovedCycle was deleted
IssueLabel:createLabel CreatedNew label created
IssueLabel:updateLabel UpdatedLabel was updated
IssueLabel:removeLabel RemovedLabel was deleted

Configuration Options

OptionTypeRequiredDefaultDescription
secretTEXTYes-Webhook signing secret from Linear webhook settings for HMAC-SHA256 signature verification
eventsTEXTNo-Filter by event types (empty = all events)

Event Payload Example

{
  "_eventType": "Issue:create",
  "_action": "create",
  "_type": "Issue",
  "_timestamp": "2026-01-31T12:00:00Z",
  "_webhookId": "webhook-abc123",
  "_organizationId": "org-xyz789",
  "data": {
    "id": "issue-abc123",
    "identifier": "ENG-456",
    "title": "New Feature Request",
    "description": "Implement dark mode",
    "priority": 2,
    "priorityLabel": "High",
    "state": {
      "id": "state-123",
      "name": "Backlog",
      "type": "backlog"
    },
    "team": {
      "id": "team-123",
      "name": "Engineering",
      "key": "ENG"
    }
  },
  "actor": {
    "id": "user-123",
    "type": "user",
    "name": "Jane Smith"
  },
  "url": "https://linear.app/team/issue/ENG-456"
}

Webhook Setup: See the Setup Guide for webhook configuration and Linear setup.


Use Cases

Automated Issue Triage

Automatically categorize and assign incoming issues based on content.

  1. Linear Trigger: Events = Issue:create
  2. Condition: Analyze issue title for keywords
  3. Linear - updateIssue: Add appropriate labels and assignee
  4. Telegram - sendMessage: Notify the assigned team

Sprint Progress Dashboard

Track sprint progress and send daily summaries via Telegram.

  1. Schedule Trigger: Daily at 9 AM
  2. Linear - listCycles: Get current cycle with filter: "current"
  3. Linear - listIssues: Filter by current cycle
  4. Telegram - sendMessage: Send formatted summary to team channel

Cross-Platform Issue Sync with GitLab

Sync Linear issues with GitLab for development tracking.

  1. Linear Trigger: Events = Issue:create, Issue:update
  2. Transform: Map Linear issue fields to GitLab format
  3. GitLab - createIssue or updateIssue: Sync to GitLab project
  4. Linear - createComment: Add link to GitLab issue

Customer Feedback Pipeline

Create Linear issues from external webhook sources.

  1. HTTP Trigger: Receive webhook from external system
  2. Linear - createIssue: Create issue with customer context
  3. Linear - updateIssue: Add relevant labels (Bug, Feature)
  4. Gmail - sendMessage: Notify product team via email

AI-Powered Issue Updates

Use workflow logic to process comments and update issues.

  1. Linear Trigger: Events = Comment:create
  2. Condition: Check comment content for action keywords
  3. Linear - updateIssue: Add labels or change priority based on keywords
  4. Linear - createIssue: Create follow-up sub-issues if needed

Resources