Access the Linear API with managed OAuth authentication. Query and manage issues, projects, teams, cycles, labels, and comments using GraphQL.
Linear uses a GraphQL API. All operations are sent as POST requests with a JSON body containing the query field.
Reference
Viewer (Current User)
POST /linear/graphql
Content-Type: application/json
{"query": "{ viewer { id name email } }"}maton linear whoamiOrganization
POST /linear/graphql
Content-Type: application/json
{"query": "{ organization { id name urlKey } }"}maton linear org viewList Teams
POST /linear/graphql
Content-Type: application/json
{"query": "{ teams { nodes { id name key } } }"}maton linear team listGet Team
POST /linear/graphql
Content-Type: application/json
{"query": "{ team(id: \"ABC\") { id name key issues { nodes { id identifier title } } } }"}maton linear team view ABCList Issues
POST /linear/graphql
Content-Type: application/json
{"query": "{ issues(first: 10, filter: { team: { key: { eq: \"ABC\" } } }) { nodes { id identifier title state { name } priority createdAt } pageInfo { hasNextPage endCursor } } }"}maton linear issue list -c ABC -L 10Get Issue by ID or Identifier
POST /linear/graphql
Content-Type: application/json
{"query": "{ issue(id: \"ABC-123\") { id identifier title description state { name } priority assignee { name } team { key name } createdAt updatedAt } }"}maton linear issue view ABC-123Filter Issues
Filter by state type:
POST /linear/graphql
Content-Type: application/json
{"query": "{ issues(first: 10, filter: { state: { type: { eq: \"started\" } } }) { nodes { id identifier title state { name type } } } }"}maton linear issue list --state started -L 10Filter by title:
POST /linear/graphql
Content-Type: application/json
{"query": "{ issues(first: 10, filter: { title: { containsIgnoreCase: \"bug\" } }) { nodes { id identifier title } } }"}maton linear issue list --title bug -L 10Search Issues
POST /linear/graphql
Content-Type: application/json
{"query": "{ searchIssues(first: 10, term: \"shopify\") { nodes { id identifier title } } }"}maton linear issue search shopify -L 10Create Issue
POST /linear/graphql
Content-Type: application/json
{"query": "mutation { issueCreate(input: { teamId: \"TEAM_ID\", title: \"New issue title\" }) { success issue { id identifier title state { name } } } }"}maton linear issue create --team-id TEAM_ID -t 'New issue title'Update Issue
POST /linear/graphql
Content-Type: application/json
{"query": "mutation { issueUpdate(id: \"ABC-123\", input: { title: \"Updated title\", priority: 2 }) { success issue { id identifier title priority } } }"}maton linear issue update ABC-123 -t 'Updated title' --priority 2List Projects
POST /linear/graphql
Content-Type: application/json
{"query": "{ projects(first: 10) { nodes { id name state createdAt } } }"}maton linear project listList Cycles
POST /linear/graphql
Content-Type: application/json
{"query": "{ cycles(first: 10) { nodes { id name number startsAt endsAt } } }"}maton linear cycle listList Labels
POST /linear/graphql
Content-Type: application/json
{"query": "{ issueLabels(first: 20) { nodes { id name color } } }"}maton linear label listWorkflow States
POST /linear/graphql
Content-Type: application/json
{"query": "{ workflowStates(first: 20) { nodes { id name type team { key } } } }"}maton linear state listUsers
POST /linear/graphql
Content-Type: application/json
{"query": "{ users(first: 20) { nodes { id name email active } } }"}maton linear user listList Comments
POST /linear/graphql
Content-Type: application/json
{"query": "{ issue(id: \"ABC-123\") { comments(first: 10) { nodes { id body createdAt user { name } } } } }"}maton linear comment list --issue ABC-123 -L 10Create Comment
POST /linear/graphql
Content-Type: application/json
{"query": "mutation { commentCreate(input: { issueId: \"ABC-123\", body: \"Looking into this\" }) { success comment { id body } } }"}maton linear comment create --issue ABC-123 -b 'Looking into this'Maton Events
issue.created
Parameters
team_id(string, optional): Team ID to scope to a specific team. Leave blank to match all teams.
issue.status_changed
Parameters
new_state(string, optional): Filter to a specific target status name (e.g.Done,In Review). Leave blank to match any status change.