Linear
Professional project management and issue tracking integration with comprehensive Linear GraphQL API support.
Linear Node
Comprehensive integration with Linear project management platform, enabling automated issue tracking, team coordination, and project management workflows with full GraphQL API support.
Available Operations
- Issue Management: Create, update, retrieve, and search issues with comprehensive filtering
- Team Coordination: Access teams, users, workflow states, labels, and cycles
- Project Management: Manage projects, cycles, and organizational structure
- Collaboration: Add comments and manage threaded discussions
- Resource Discovery: List and filter all Linear workspace resources
Connection Configuration
| Parameter | Type | Required | Description |
|---|---|---|---|
apiKey | TEXT | Yes | Linear API key from Settings → API in your Linear workspace |
baseUrl | TEXT | No | Linear GraphQL API endpoint (default: https://api.linear.app/graphql) |
{
"apiKey": "{{ctx.consts.LINEAR_API_KEY}}",
"baseUrl": "https://api.linear.app/graphql"
}Issue Management Operations
createIssue
Create a new issue with comprehensive options for assignment, prioritization, and organization.
| Parameter | Type | Required | Description |
|---|---|---|---|
title | TEXT | Yes | Issue title (required) |
teamId | TEXT | Yes | Team ID where the issue will be created |
description | TEXT | No | Issue description in Markdown format |
assigneeId | TEXT | No | User ID to assign the issue to |
priority | INT | No | Issue priority: 0=No Priority, 1=Urgent, 2=High, 3=Normal, 4=Low |
stateId | TEXT | No | Workflow state ID for the issue |
labelIds | TEXT | No | Comma-separated list of label IDs to attach |
cycleId | TEXT | No | Cycle ID to assign the issue to |
projectId | TEXT | No | Project ID to assign the issue to |
projectMilestoneId | TEXT | No | Project milestone ID to assign the issue to |
estimate | INT | No | Estimation points for the issue |
dueDate | TEXT | No | Due date in ISO format (YYYY-MM-DD) |
parentId | TEXT | No | Parent issue ID to create this as a sub-issue |
{
"title": "{{ctx.vars.issueTitle}}",
"teamId": "{{ctx.vars.teamId}}",
"description": "## Overview\n\n{{ctx.nodes.descriptionGenerator.outputs.description}}",
"assigneeId": "{{ctx.vars.assigneeId}}",
"priority": 2,
"estimate": 8,
"dueDate": "{{ctx.vars.dueDate}}"
}updateIssue
Update an existing issue with new values for any supported field.
| Parameter | Type | Required | Description |
|---|---|---|---|
issueId | TEXT | Yes | Linear issue ID or identifier to update |
title | TEXT | No | New issue title |
description | TEXT | No | New issue description in Markdown format |
assigneeId | TEXT | No | User ID to assign the issue to (empty string to unassign) |
priority | INT | No | New issue priority (0-4) |
stateId | TEXT | No | New workflow state ID for the issue |
teamId | TEXT | No | Move issue to different team (team ID) |
labelIds | TEXT | No | Comma-separated list of label IDs to set |
cycleId | TEXT | No | Cycle ID to assign the issue to |
projectId | TEXT | No | Project ID to assign the issue to |
estimate | INT | No | Estimation points for the issue |
dueDate | TEXT | No | Due date in ISO format (YYYY-MM-DD) |
parentId | TEXT | No | Parent issue ID to set this as a sub-issue |
{
"issueId": "{{ctx.vars.issueId}}",
"stateId": "{{ctx.vars.newStateId}}",
"assigneeId": "{{ctx.user.linearUserId}}",
"estimate": "{{ctx.vars.updatedEstimate}}"
}getIssue
Retrieve detailed information about a specific issue including metadata and optional comments.
| Parameter | Type | Required | Description |
|---|---|---|---|
issueId | TEXT | Yes | Linear issue ID or identifier (e.g., 'ENG-123') |
includeComments | BOOLEAN | No | Include issue comments in response |
{
"issueId": "{{ctx.vars.issueIdentifier}}",
"includeComments": true
}listIssues
Search and list issues with advanced filtering and pagination support.
| Parameter | Type | Required | Description |
|---|---|---|---|
teamId | TEXT | No | Filter by team ID |
assigneeId | TEXT | No | Filter by assignee user ID |
stateId | TEXT | No | Filter by workflow state ID |
priority | INT | No | Filter by priority (0-4) |
labelId | TEXT | No | Filter by specific label ID |
cycleId | TEXT | No | Filter by cycle ID |
projectId | TEXT | No | Filter by project ID |
search | TEXT | No | Search query to filter issues by title and description |
limit | INT | No | Maximum number of issues to return (default: 20, max: 100) |
includeArchived | BOOLEAN | No | Include archived issues in results |
{
"teamId": "{{ctx.vars.teamFilter}}",
"assigneeId": "{{ctx.user.linearUserId}}",
"stateId": "{{ctx.vars.activeStateId}}",
"search": "{{ctx.vars.searchQuery}}",
"limit": 50
}addComment
Add a comment to an existing issue with support for threaded replies.
| Parameter | Type | Required | Description |
|---|---|---|---|
issueId | TEXT | Yes | Linear issue ID to comment on |
body | TEXT | Yes | Comment body text in Markdown format |
parentId | TEXT | No | Parent comment ID for threaded replies |
{
"issueId": "{{ctx.vars.issueId}}",
"body": "{{ctx.nodes.commentGenerator.outputs.commentText}}",
"parentId": "{{ctx.vars.parentCommentId}}"
}Resource Discovery Operations
listTeams
Retrieve all teams in the Linear workspace for use in other operations.
No parameters required - returns all accessible teams with IDs, names, keys, and metadata.
{}listUsers
Retrieve all users in the Linear workspace for assignee operations.
No parameters required - returns all accessible users with IDs, names, email addresses, and metadata.
{}listWorkflowStates
Retrieve workflow states for a specific team to understand available issue states.
| Parameter | Type | Required | Description |
|---|---|---|---|
teamId | TEXT | Yes | Team ID to get workflow states for |
{
"teamId": "{{ctx.vars.teamId}}"
}listLabels
Retrieve labels in the workspace, optionally filtered by team.
| Parameter | Type | Required | Description |
|---|---|---|---|
teamId | TEXT | No | Optional team ID to filter labels by team |
{
"teamId": "{{ctx.vars.teamFilter}}"
}listCycles
Retrieve cycles for a specific team with completion status filtering.
| Parameter | Type | Required | Description |
|---|---|---|---|
teamId | TEXT | Yes | Team ID to get cycles for |
includeCompleted | BOOLEAN | No | Include completed cycles (default: false) |
{
"teamId": "{{ctx.vars.teamId}}",
"includeCompleted": false
}listProjects
Retrieve projects in the workspace with team and completion filtering.
| Parameter | Type | Required | Description |
|---|---|---|---|
teamId | TEXT | No | Optional team ID to filter projects by team |
includeCompleted | BOOLEAN | No | Include completed projects (default: false) |
{
"teamId": "{{ctx.vars.teamFilter}}",
"includeCompleted": true
}Workflow Integration
Use workflow context for dynamic issue management:
{
"title": "{{ctx.vars.eventType}} - {{ctx.user.department}}",
"teamId": "{{ctx.nodes.teamSelector.outputs.selectedTeam}}",
"description": "**Automated Issue**\n\n{{ctx.nodes.issueGenerator.outputs.description}}\n\n**Context:**\n- User: {{ctx.user.name}}\n- Triggered: {{ctx.vars.currentDateTime}}",
"assigneeId": "{{ctx.nodes.userLookup.outputs.assigneeId}}",
"priority": "{{ctx.vars.calculatedPriority}}",
"labelIds": "{{ctx.nodes.labelMapper.outputs.applicableLabels}}"
}Response Format
Success Response
{
"success": true,
"issue": {
"id": "issue_abc123",
"identifier": "ENG-456",
"title": "Implement user dashboard",
"state": {
"name": "In Progress",
"type": "started"
},
"assignee": {
"name": "John Doe",
"email": "john@company.com"
},
"team": {
"name": "Engineering",
"key": "ENG"
},
"url": "https://linear.app/company/issue/ENG-456"
}
}Error Response
{
"success": false,
"error": "Team not found",
"code": "TEAM_NOT_FOUND"
}Priority Levels
| Value | Label | Description |
|---|---|---|
| 0 | No Priority | Default priority level |
| 1 | Urgent | Requires immediate attention |
| 2 | High | Important, should be addressed soon |
| 3 | Normal | Standard priority level |
| 4 | Low | Can be addressed when time allows |
Use Cases
- Automated Issue Creation: Generate issues from monitoring alerts, user feedback, or workflow events
- Issue Lifecycle Management: Move issues through workflow states based on external triggers
- Team Coordination: Automatically assign issues based on team capacity or expertise
- Project Tracking: Link issues to projects and cycles for comprehensive project management
- Progress Reporting: Query issues and projects to generate status reports and metrics
- Integration Workflows: Sync Linear issues with external tools and systems
Authentication
Linear uses API key authentication with the GraphQL endpoint. The API key provides access based on the user's permissions in the Linear workspace.
Required Permissions:
- Read access to teams, users, and workspace metadata
- Create/update access for issue management operations
- Comment access for collaboration features
Getting Started
- Obtain API Key: Generate an API key in Linear Settings → API
- Identify Resources: Use list operations to discover team IDs, user IDs, and other required identifiers
- Configure Operations: Set up issue creation and management operations with proper team and user mappings
- Test Integration: Validate issue operations and workflow integration before production deployment
- Monitor Usage: Track API usage and implement rate limiting as needed for high-volume operations