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
Setup Guide
Step-by-step authentication and connector configuration
Changelog
Version history and recent updates
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
| Parameter | Type | Required | Description |
|---|---|---|---|
| apiKey | TEXT | Yes | Linear API key for authentication |
Setup Instructions: See the Setup Guide for authentication configuration, connector creation, and getting started.
Available Operations
| Category | Operation | Description |
|---|---|---|
| Issues | listIssues | List issues with optional filtering by team and state |
| Issues | getIssue | Get issue details by ID including relations and sub-issues |
| Issues | createIssue | Create a new issue with full customization |
| Issues | updateIssue | Update an existing issue's fields, status, and assignments |
| Issues | deleteIssue | Archive or permanently delete an issue |
| Issue Relations | createIssueRelation | Create a relation between two issues (blocks, duplicate, related) |
| Issue Relations | deleteIssueRelation | Remove a relation between issues |
| Comments | listComments | List comments on an issue with pagination |
| Comments | createComment | Add a comment to an issue (supports Markdown and threaded replies) |
| Comments | updateComment | Update an existing comment |
| Comments | deleteComment | Delete a comment |
| Projects | listProjects | List projects with optional filtering by team, state, and archived status |
| Projects | getProject | Get project details by ID |
| Projects | createProject | Create a new project with teams, dates, and priority |
| Projects | updateProject | Update an existing project's fields |
| Cycles | listCycles | List cycles/sprints for a team with optional filtering |
| Cycles | getCycle | Get cycle/sprint details by ID |
| Documents | listDocuments | List documents with optional filtering by project or initiative |
| Documents | getDocument | Get document details by ID or slug |
| Documents | createDocument | Create a new document with Markdown content |
| Documents | updateDocument | Update an existing document's content and properties |
| Users & Teams | listTeams | List all teams in the workspace |
| Users & Teams | getTeam | Get team details by ID or key |
| Users & Teams | listUsers | List all users in the workspace |
| Users & Teams | getUser | Get user details by ID (use 'me' for current user) |
| Workflow | listIssueStatuses | List workflow states for a team |
| Workflow | listIssueLabels | List 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:
| Parameter | Type | Required | Description |
|---|---|---|---|
| limit | INT | No | Maximum number of issues to return (1-100, default: 50) |
| teamId | TEXT | No | Filter by team ID |
| state | TEXT | No | Filter 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:
| Parameter | Type | Required | Description |
|---|---|---|---|
| id | TEXT | Yes | Issue ID or identifier (e.g., "ENG-123") |
| includeRelations | BOOLEAN | No | Include 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:
| Parameter | Type | Required | Description |
|---|---|---|---|
| title | TEXT | Yes | Issue title |
| teamId | TEXT | Yes | Team ID to create the issue in |
| description | TEXT | No | Issue description (supports Markdown) |
| assigneeId | TEXT | No | User ID to assign the issue to |
| priority | INT | No | Priority (0=None, 1=Urgent, 2=High, 3=Normal, 4=Low) |
| stateId | TEXT | No | Workflow state ID |
| labelIds | TEXT | No | Comma-separated label IDs |
| cycleId | TEXT | No | Cycle/sprint ID |
| projectId | TEXT | No | Project ID |
| estimate | INT | No | Estimate points |
| dueDate | TEXT | No | Due date (ISO format: YYYY-MM-DD) |
| parentId | TEXT | No | Parent issue ID (for sub-issues) |
| subscriberIds | TEXT | No | Comma-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:
| Parameter | Type | Required | Description |
|---|---|---|---|
| id | TEXT | Yes | Issue ID to update |
| title | TEXT | No | New issue title |
| description | TEXT | No | New description (supports Markdown) |
| assigneeId | TEXT | No | User ID to assign the issue to |
| priority | INT | No | Priority (0=None, 1=Urgent, 2=High, 3=Normal, 4=Low) |
| stateId | TEXT | No | Workflow state ID |
| labelIds | TEXT | No | Comma-separated label IDs (replaces existing) |
| cycleId | TEXT | No | Cycle/sprint ID |
| projectId | TEXT | No | Project ID |
| estimate | INT | No | Estimate points |
| dueDate | TEXT | No | Due date (ISO format: YYYY-MM-DD) |
| parentId | TEXT | No | Parent 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:
| Parameter | Type | Required | Description |
|---|---|---|---|
| id | TEXT | Yes | Issue ID to delete |
| permanently | BOOLEAN | No | Permanently 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:
| Parameter | Type | Required | Description |
|---|---|---|---|
| issueId | TEXT | Yes | Source issue ID |
| relatedIssueId | TEXT | Yes | Related issue ID |
| type | TEXT | Yes | Relation type (blocks, duplicate, related) |
Relation Types:
| Type | Description |
|---|---|
| blocks | The source issue blocks the related issue |
| duplicate | The source issue is a duplicate of the related issue |
| related | The 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:
| Parameter | Type | Required | Description |
|---|---|---|---|
| id | TEXT | Yes | Issue 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:
| Parameter | Type | Required | Description |
|---|---|---|---|
| issueId | TEXT | Yes | Issue ID to get comments for |
| limit | INT | No | Maximum 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:
| Parameter | Type | Required | Description |
|---|---|---|---|
| issueId | TEXT | Yes | Issue ID to add comment to |
| body | TEXT | Yes | Comment content (supports Markdown) |
| parentId | TEXT | No | Parent 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:
| Parameter | Type | Required | Description |
|---|---|---|---|
| id | TEXT | Yes | Comment ID to update |
| body | TEXT | Yes | New 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:
| Parameter | Type | Required | Description |
|---|---|---|---|
| id | TEXT | Yes | Comment 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:
| Parameter | Type | Required | Description |
|---|---|---|---|
| limit | INT | No | Maximum number of projects to return (1-100, default: 50) |
| teamId | TEXT | No | Filter by team ID |
| state | TEXT | No | Filter by project state (planned, started, paused, completed, canceled) |
| includeArchived | BOOLEAN | No | Include 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:
| Parameter | Type | Required | Description |
|---|---|---|---|
| id | TEXT | Yes | Project 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:
| Parameter | Type | Required | Description |
|---|---|---|---|
| name | TEXT | Yes | Project name |
| teamIds | TEXT | Yes | Comma-separated team IDs for the project |
| description | TEXT | No | Project description (supports Markdown) |
| state | TEXT | No | Project state (planned, started, paused, completed, canceled) |
| leadId | TEXT | No | User ID for the project lead |
| startDate | TEXT | No | Project start date (ISO format: YYYY-MM-DD) |
| targetDate | TEXT | No | Project target date (ISO format: YYYY-MM-DD) |
| priority | INT | No | Priority (0=None, 1=Urgent, 2=High, 3=Medium, 4=Low) |
| color | TEXT | No | Project color (hex format: #RRGGBB) |
| icon | TEXT | No | Project 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:
| Parameter | Type | Required | Description |
|---|---|---|---|
| id | TEXT | Yes | Project ID to update |
| name | TEXT | No | New project name |
| description | TEXT | No | New description (supports Markdown) |
| state | TEXT | No | Project state (planned, started, paused, completed, canceled) |
| leadId | TEXT | No | User ID for the project lead |
| startDate | TEXT | No | Project start date (ISO format: YYYY-MM-DD) |
| targetDate | TEXT | No | Project target date (ISO format: YYYY-MM-DD) |
| priority | INT | No | Priority (0=None, 1=Urgent, 2=High, 3=Medium, 4=Low) |
| color | TEXT | No | Project color (hex format: #RRGGBB) |
| icon | TEXT | No | Project 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:
| Parameter | Type | Required | Description |
|---|---|---|---|
| teamId | TEXT | Yes | Team ID to list cycles for |
| limit | INT | No | Maximum number of cycles to return (1-100, default: 50) |
| filter | TEXT | No | Filter by time period (all, current, previous, next) |
| includeArchived | BOOLEAN | No | Include 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:
| Parameter | Type | Required | Description |
|---|---|---|---|
| id | TEXT | Yes | Cycle 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:
| Parameter | Type | Required | Description |
|---|---|---|---|
| limit | INT | No | Maximum number of documents to return (1-250, default: 50) |
| projectId | TEXT | No | Filter by project ID |
| initiativeId | TEXT | No | Filter by initiative ID |
| creatorId | TEXT | No | Filter by creator user ID |
| query | TEXT | No | Search documents by title |
| includeArchived | BOOLEAN | No | Include 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:
| Parameter | Type | Required | Description |
|---|---|---|---|
| id | TEXT | Yes | Document 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:
| Parameter | Type | Required | Description |
|---|---|---|---|
| title | TEXT | Yes | Document title |
| content | TEXT | No | Document content (supports Markdown) |
| projectId | TEXT | No | Associate with a project ID |
| issueId | TEXT | No | Associate with an issue ID |
| initiativeId | TEXT | No | Associate with an initiative ID |
| color | TEXT | No | Document color (hex format: #RRGGBB) |
| icon | TEXT | No | Document 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:
| Parameter | Type | Required | Description |
|---|---|---|---|
| id | TEXT | Yes | Document ID to update |
| title | TEXT | No | New document title |
| content | TEXT | No | New content (supports Markdown) |
| projectId | TEXT | No | Move to different project |
| color | TEXT | No | Document color (hex format: #RRGGBB) |
| icon | TEXT | No | Document 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:
| Parameter | Type | Required | Description |
|---|---|---|---|
| limit | INT | No | Maximum 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:
| Parameter | Type | Required | Description |
|---|---|---|---|
| id | TEXT | Yes | Team 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:
| Parameter | Type | Required | Description |
|---|---|---|---|
| limit | INT | No | Maximum number of users to return (1-100, default: 50) |
| includeDisabled | BOOLEAN | No | Include 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:
| Parameter | Type | Required | Description |
|---|---|---|---|
| id | TEXT | Yes | User 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:
| Parameter | Type | Required | Description |
|---|---|---|---|
| teamId | TEXT | Yes | Team 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:
| Parameter | Type | Required | Description |
|---|---|---|---|
| limit | INT | No | Maximum number of labels to return (1-100, default: 50) |
| teamId | TEXT | No | Filter 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 Code | Event Name | Description |
|---|---|---|
Issue:create | Issue Created | New issue created |
Issue:update | Issue Updated | Issue was updated |
Issue:remove | Issue Removed | Issue was deleted |
Comment:create | Comment Created | New comment added |
Comment:update | Comment Updated | Comment was edited |
Comment:remove | Comment Removed | Comment was deleted |
Project:create | Project Created | New project created |
Project:update | Project Updated | Project was updated |
Project:remove | Project Removed | Project was deleted |
Cycle:create | Cycle Created | New cycle/sprint created |
Cycle:update | Cycle Updated | Cycle was updated |
Cycle:remove | Cycle Removed | Cycle was deleted |
IssueLabel:create | Label Created | New label created |
IssueLabel:update | Label Updated | Label was updated |
IssueLabel:remove | Label Removed | Label was deleted |
Configuration Options
| Option | Type | Required | Default | Description |
|---|---|---|---|---|
secret | TEXT | Yes | - | Webhook signing secret from Linear webhook settings for HMAC-SHA256 signature verification |
events | TEXT | No | - | 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.
- Linear Trigger: Events =
Issue:create - Condition: Analyze issue title for keywords
- Linear - updateIssue: Add appropriate labels and assignee
- Telegram - sendMessage: Notify the assigned team
Sprint Progress Dashboard
Track sprint progress and send daily summaries via Telegram.
- Schedule Trigger: Daily at 9 AM
- Linear - listCycles: Get current cycle with
filter: "current" - Linear - listIssues: Filter by current cycle
- Telegram - sendMessage: Send formatted summary to team channel
Cross-Platform Issue Sync with GitLab
Sync Linear issues with GitLab for development tracking.
- Linear Trigger: Events =
Issue:create,Issue:update - Transform: Map Linear issue fields to GitLab format
- GitLab - createIssue or updateIssue: Sync to GitLab project
- Linear - createComment: Add link to GitLab issue
Customer Feedback Pipeline
Create Linear issues from external webhook sources.
- HTTP Trigger: Receive webhook from external system
- Linear - createIssue: Create issue with customer context
- Linear - updateIssue: Add relevant labels (Bug, Feature)
- Gmail - sendMessage: Notify product team via email
AI-Powered Issue Updates
Use workflow logic to process comments and update issues.
- Linear Trigger: Events =
Comment:create - Condition: Check comment content for action keywords
- Linear - updateIssue: Add labels or change priority based on keywords
- Linear - createIssue: Create follow-up sub-issues if needed