Getting started
If you have not yet set up Trigger.dev in your project, go to the quick start guide.Installation
To get started with the Linear integration on Trigger.dev, you need to install the@trigger.dev/linear package.
You can do this using npm, pnpm, or yarn:
npm install @trigger.dev/linear@latest
pnpm add @trigger.dev/linear@latest
yarn add @trigger.dev/linear@latest
Authentication
To use the Linear API with Trigger.dev, you can either use OAuth or a Personal API Key.OAuth
import { Linear } from "@trigger.dev/linear";
//this will use OAuth
const linear = new Linear({
id: "linear",
});
Personal API Key
You can create a Personal API Key in your Linear API Settings.import { Linear } from "@trigger.dev/linear";
//this will use the passed in API key (defined in your environment variables)
const linear = new Linear({
id: "linear",
apiKey: process.env["LINEAR_API_KEY"],
});
Usage
Include the Linear integration in your Trigger.dev job.client.defineJob({
id: "linear-new-issue-autoresponder",
name: "Linear - New Issue Autoresponder",
version: "0.1.0",
integrations: {
//use the linear integration
linear,
},
//trigger on issue created events
trigger: linear.onIssueCreated(),
run: async (payload, io, ctx) => {
//get new issue ID from the event payload
const newIssueId = payload.data.id;
//comment
await io.linear.createComment("create-comment", {
issueId: newIssueId,
body: "Thank's for opening this issue!",
});
//react
await io.linear.createReaction("create-reaction", {
issueId: newIssueId,
emoji: "+1",
});
//store and display in the job run
return { payload, ctx };
},
});
Serialization helper
Use theserializeLinearOutput helper instead of returning raw Linear SDK responses:
import { Linear, serializeLinearOutput } from "@trigger.dev/linear";
...
client.defineJob({
id: "linear-sdk",
name: "Linear SDK",
version: "0.1.0",
integrations: {
linear,
},
trigger: eventTrigger({
name: "linear.sdk",
}),
run: async (payload, io, ctx) => {
//the official Linear SDK is exposed as `client`
const issues = await io.linear.runTask("first-two", async (client) => {
//these nodes contain values we can't serialize, e.g. functions
const { nodes } = await client.issues({ first: 2 });
//we remove them with this little helper
return serializeLinearOutput(nodes);
});
return issues;
},
});
Pagination
You can paginate responses two different ways:- Iterating the same integration task with different params
- Using the
getAllhelper exposed on the integration (recommended!)
PaginationOrderBy enum.
import { Linear, PaginationOrderBy, serializeLinearOutput } from "@trigger.dev/linear";
...
client.defineJob({
id: "linear-pagination",
name: "Linear Pagination",
version: "0.1.0",
integrations: {
linear,
},
trigger: eventTrigger({
name: "linear.paginate",
}),
run: async (payload, io, ctx) => {
//the same params will be used for all tasks
const params = { first: 5, orderBy: PaginationOrderBy.UpdatedAt };
//1. Linear integration - no pagination helper
let edges = await io.linear.issues("get-issues", params);
let noHelper = edges.nodes;
for (let i = 0; edges.pageInfo.hasNextPage; i++) {
edges = await io.linear.issues(`get-more-issues-${i}`, {
...params,
after: edges.pageInfo.endCursor,
});
noHelper = noHelper.concat(edges.nodes);
}
//2. Linear integration - with the pagination helper
const withHelper = await io.linear.getAll(io.linear.issues, "get-all", params);
return {
issueCounts: {
withSdk: sdkIssues.length,
noHelper: noHelper.length,
withHelper: withHelper.length,
},
};
},
});
Triggers
Attachments
| Function Name | Description |
|---|---|
onAttachment | When any action is performed on an attachment. |
onAttachmentCreated | When an attachment is created. |
onAttachmentRemoved | When an attachment is removed. |
onAttachmentUpdated | When an attachment is updated. |
Comments
| Function Name | Description |
|---|---|
onComment | When any action is performed on an comment. |
onCommentCreated | When an comment is created. |
onCommentRemoved | When an comment is removed. |
onCommentUpdated | When an comment is updated. |
Cycles
| Function Name | Description |
|---|---|
onCycle | When any action is performed on an cycle. |
onCycleCreated | When an cycle is created. |
onCycleRemoved | When an cycle is removed. |
onCycleUpdated | When an cycle is updated. |
Issues
| Function Name | Description |
|---|---|
onIssue | When any action is performed on an issue. |
onIssueCreated | When an issue is created. |
onIssueRemoved | When an issue is removed. |
onIssueUpdated | When an issue is updated. |
Issue Labels
| Function Name | Description |
|---|---|
onIssueLabel | When any action is performed on an issue label. |
onIssueLabelCreated | When an issue label is created. |
onIssueLabelRemoved | When an issue label is removed. |
onIssueLabelUpdated | When an issue label is updated. |
Issue SLAs
| Function Name | Description |
|---|---|
onIssueSLA | When any action is performed on an issue SLA. |
onIssueSLASet | When an issue SLA is set. |
onIssueSLABreached | When an issue SLA is breached. |
onIssueSLAHighRisk | When an issue SLA is high risk. |
Projects
| Function Name | Description |
|---|---|
onProject | When any action is performed on an project. |
onProjectCreated | When an project is created. |
onProjectRemoved | When an project is removed. |
onProjectUpdated | When an project is updated. |
Project Updates
| Function Name | Description |
|---|---|
onProjectUpdate | When any action is performed on an project update. |
onProjectUpdateCreated | When an project update is created. |
onProjectUpdateRemoved | When an project update is removed. |
onProjectUpdateUpdated | When an project update is updated. |
Reactions
| Function Name | Description |
|---|---|
onReaction | When any action is performed on an reaction. |
onReactionCreated | When an reaction is created. |
onReactionRemoved | When an reaction is removed. |
onReactionUpdated | When an reaction is updated. |
Tasks
Attachments
| Function Name | Description |
|---|---|
attachment | Gets an attachment. |
attachments | Gets multiple attachments. |
createAttachment | Creates an attachment. |
deleteAttachment | Deletes an attachment. |
updateAttachment | Updates an attachment. |
Attachment Links
| Function Name | Description |
|---|---|
attachmentLinkFront | Links a Front conversation to an issue. |
attachmentLinkIntercom | Links a Intercom conversation to an issue. |
attachmentLinkJiraIssue | Links a Jira issue to an issue. |
attachmentLinkSlack | Links a Slack message to an issue. |
attachmentLinkURL | Links any URL to an issue. |
attachmentLinkZendesk | Links a Zendesk ticket to an issue. |
Comments
| Function Name | Description |
|---|---|
comment | Gets a comment. |
comments | Gets multiple comments. |
createComment | Creates a comment. |
deleteComment | Deletes a comment. |
updateComment | Updates a comment. |
Cycles
| Function Name | Description |
|---|---|
archiveCycle | Archives a cycle. |
createCycle | Creates a cycle. |
updateCycle | Updates a cycle. |
Documents
| Function Name | Description |
|---|---|
document | Gets a document. |
documents | Gets multiple documents. |
createDocument | Creates a document. |
searchDocuments | Searches documents. |
Favorites
| Function Name | Description |
|---|---|
favorite | Gets a favorite. |
favorites | Gets multiple favorites. |
createFavorite | Creates a favorite. |
Issues
| Function Name | Description |
|---|---|
issue | Gets an issue. |
issues | Gets multiple issues. |
archiveIssue | Archives an issue. |
createIssue | Creates an issue. |
deleteIssue | Deletes an issue. |
searchIssues | Searches issues. |
updateIssue | Updates an issue. |
Issue Labels
| Function Name | Description |
|---|---|
issueLabel | Gets an issue label. |
issueLabels | Gets multiple issue labels. |
createIssueLabel | Creates an issue label. |
deleteIssueLabel | Deletes an issue label. |
updateIssueLabel | Updates an issue label. |
Issue Relations
| Function Name | Description |
|---|---|
issueRelation | Gets an issue relation. |
issueRelations | Gets multiple issue relations. |
createIssueRelation | Creates an issue relation. |
Notifications
| Function Name | Description |
|---|---|
notification | Gets a notification. |
notifications | Gets multiple notifications. |
archiveNotification | Archives a notification. |
createNotificationSubscription | Creates a notification subscription. |
Organizations
| Function Name | Description |
|---|---|
organization | Gets the viewer’s organization. |
createOrganizationFromOnboarding | Creates an organization. |
createOrganizationInvite | Creates an organization invite. |
Projects
| Function Name | Description |
|---|---|
project | Gets a project. |
projects | Gets multiple projects. |
archiveProject | Archives a project. |
createProject | Creates a project. |
deleteProject | Deletes a project. |
searchProjects | Searches projects. |
updateProject | Updates a project. |
Project Links
| Function Name | Description |
|---|---|
projectLink | Gets a project link. |
projectLinks | Gets multiple project links. |
createProjectLink | Creates a project link. |
Project Updates
| Function Name | Description |
|---|---|
projectUpdate | Gets a project update. |
projectUpdates | Gets multiple project updates. |
createProjectUpdate | Creates a project update. |
deleteProjectUpdate | Deletes a project update. |
updateProjectUpdate | Updates a project update. |
Reactions
| Function Name | Description |
|---|---|
createReaction | Creates a reaction. |
deleteReaction | Deletes a reaction. |
Roadmaps
| Function Name | Description |
|---|---|
archiveRoadmap | Archives a roadmap. |
createRoadmap | Creates a roadmap. |
Teams
| Function Name | Description |
|---|---|
team | Gets a team. |
teams | Gets multiple teams. |
createTeam | Creates a team. |
Team Memberships
| Function Name | Description |
|---|---|
teamMembership | Gets a team membership. |
teamMemberships | Gets multiple team memberships. |
createTeamMembership | Creates a team membership. |
Templates
| Function Name | Description |
|---|---|
template | Gets a template. |
templates | Gets multiple templates. |
Users
| Function Name | Description |
|---|---|
user | Gets a user. |
users | Gets multiple users. |
updateUser | Updates a user. |
Webhooks
| Function Name | Description |
|---|---|
webhook | Gets a webhook. |
webhooks | Gets multiple webhooks. |
createWebhook | Creates a webhook. |
deleteWebhook | Deletes a webhook. |
updateWebhook | Updates a webhook. |
Workflow States
| Function Name | Description |
|---|---|
workflowState | Gets a workflow state. |
workflowStates | Gets multiple workflow states. |
archiveWorkflowState | Archives a workflow state. |
createWorkflowState | Creates a workflow state. |
Misc
| Function Name | Description |
|---|---|
createProjectMilestone | Creates a project milestone. |
issuePriorityValues | Gets issue priority values and labels. |
viewer | Gets the currently authenticated user. |
Example jobs
Code examples
Check out pre-built jobs using Linear in our API section.

