linear · AsyncAPI Specification

Linear Webhooks API

Version 2.0.0

Linear webhooks deliver HTTP push notifications whenever data is created, updated, or removed. Webhooks are organization-scoped and can be configured for all public teams or a single team, enabling integrations that trigger CI builds, update external systems, or send messages based on issue activity.

View Spec View on GitHub AsyncAPIWebhooksEvents

Channels

issue/created
subscribe onIssueCreated
Issue created
Fired when a new issue is created
issue/updated
subscribe onIssueUpdated
Issue updated
Fired when an issue is updated
issue/removed
subscribe onIssueRemoved
Issue removed
Fired when an issue is deleted or trashed
comment/created
subscribe onCommentCreated
Comment created
Fired when a comment is added to an issue
comment/updated
subscribe onCommentUpdated
Comment updated
Fired when a comment is edited
project/created
subscribe onProjectCreated
Project created
Fired when a project is created
project/updated
subscribe onProjectUpdated
Project updated
Fired when a project is updated
cycle/created
subscribe onCycleCreated
Cycle created
Fired when a cycle (sprint) is created
issueLabelCreated
subscribe onIssueLabelCreated
Issue label created
Fired when an issue label is created

Messages

IssueCreated
Issue Created Event
Payload for issue.create webhook events
IssueUpdated
Issue Updated Event
Payload for issue.update webhook events
IssueRemoved
Issue Removed Event
Payload for issue.remove webhook events
CommentCreated
Comment Created Event
Payload for comment.create webhook events
CommentUpdated
Comment Updated Event
Payload for comment.update webhook events
ProjectCreated
Project Created Event
Payload for project.create webhook events
ProjectUpdated
Project Updated Event
Payload for project.update webhook events
CycleCreated
Cycle Created Event
Payload for cycle.create webhook events
IssueLabelCreated
Issue Label Created Event
Payload for issueLabel.create webhook events

Servers

https
production https://api.linear.app
Linear production server (webhook source)

AsyncAPI Specification

Raw ↑
asyncapi: 2.6.0
info:
  title: Linear Webhooks API
  version: 2.0.0
  description: >-
    Linear webhooks deliver HTTP push notifications whenever data is created,
    updated, or removed. Webhooks are organization-scoped and can be configured
    for all public teams or a single team, enabling integrations that trigger
    CI builds, update external systems, or send messages based on issue activity.
  contact:
    name: Linear Support
    url: https://linear.app/contact/support
  license:
    name: Proprietary
    url: https://linear.app/terms
externalDocs:
  description: Linear Webhooks Documentation
  url: https://linear.app/developers/webhooks
servers:
  production:
    url: https://api.linear.app
    protocol: https
    description: Linear production server (webhook source)
defaultContentType: application/json
channels:
  issue/created:
    description: Fired when a new issue is created
    subscribe:
      operationId: onIssueCreated
      summary: Issue created
      description: >-
        Delivered when a new issue is created in a team. Contains the full issue
        object including title, state, assignee, priority, and team.
      tags:
        - name: Issues
      message:
        $ref: '#/components/messages/IssueCreated'
  issue/updated:
    description: Fired when an issue is updated
    subscribe:
      operationId: onIssueUpdated
      summary: Issue updated
      description: >-
        Delivered when any field of an issue changes including state transitions,
        assignee changes, priority updates, and label modifications.
      tags:
        - name: Issues
      message:
        $ref: '#/components/messages/IssueUpdated'
  issue/removed:
    description: Fired when an issue is deleted or trashed
    subscribe:
      operationId: onIssueRemoved
      summary: Issue removed
      description: Delivered when an issue is deleted or moved to trash.
      tags:
        - name: Issues
      message:
        $ref: '#/components/messages/IssueRemoved'
  comment/created:
    description: Fired when a comment is added to an issue
    subscribe:
      operationId: onCommentCreated
      summary: Comment created
      description: >-
        Delivered when a new comment is added to an issue or a reply is added
        to an existing comment.
      tags:
        - name: Comments
      message:
        $ref: '#/components/messages/CommentCreated'
  comment/updated:
    description: Fired when a comment is edited
    subscribe:
      operationId: onCommentUpdated
      summary: Comment updated
      description: Delivered when the body of a comment is edited by its author.
      tags:
        - name: Comments
      message:
        $ref: '#/components/messages/CommentUpdated'
  project/created:
    description: Fired when a project is created
    subscribe:
      operationId: onProjectCreated
      summary: Project created
      description: Delivered when a new project is created within the organization.
      tags:
        - name: Projects
      message:
        $ref: '#/components/messages/ProjectCreated'
  project/updated:
    description: Fired when a project is updated
    subscribe:
      operationId: onProjectUpdated
      summary: Project updated
      description: >-
        Delivered when project details, state, milestones, or member lists change.
      tags:
        - name: Projects
      message:
        $ref: '#/components/messages/ProjectUpdated'
  cycle/created:
    description: Fired when a cycle (sprint) is created
    subscribe:
      operationId: onCycleCreated
      summary: Cycle created
      description: Delivered when a new cycle is created in a team.
      tags:
        - name: Cycles
      message:
        $ref: '#/components/messages/CycleCreated'
  issueLabelCreated:
    description: Fired when an issue label is created
    subscribe:
      operationId: onIssueLabelCreated
      summary: Issue label created
      description: Delivered when a new label is created in a team.
      tags:
        - name: Labels
      message:
        $ref: '#/components/messages/IssueLabelCreated'
components:
  messages:
    IssueCreated:
      name: IssueCreated
      title: Issue Created Event
      summary: Payload for issue.create webhook events
      payload:
        $ref: '#/components/schemas/IssueWebhookPayload'
    IssueUpdated:
      name: IssueUpdated
      title: Issue Updated Event
      summary: Payload for issue.update webhook events
      payload:
        $ref: '#/components/schemas/IssueWebhookPayload'
    IssueRemoved:
      name: IssueRemoved
      title: Issue Removed Event
      summary: Payload for issue.remove webhook events
      payload:
        $ref: '#/components/schemas/IssueWebhookPayload'
    CommentCreated:
      name: CommentCreated
      title: Comment Created Event
      summary: Payload for comment.create webhook events
      payload:
        $ref: '#/components/schemas/CommentWebhookPayload'
    CommentUpdated:
      name: CommentUpdated
      title: Comment Updated Event
      summary: Payload for comment.update webhook events
      payload:
        $ref: '#/components/schemas/CommentWebhookPayload'
    ProjectCreated:
      name: ProjectCreated
      title: Project Created Event
      summary: Payload for project.create webhook events
      payload:
        $ref: '#/components/schemas/ProjectWebhookPayload'
    ProjectUpdated:
      name: ProjectUpdated
      title: Project Updated Event
      summary: Payload for project.update webhook events
      payload:
        $ref: '#/components/schemas/ProjectWebhookPayload'
    CycleCreated:
      name: CycleCreated
      title: Cycle Created Event
      summary: Payload for cycle.create webhook events
      payload:
        $ref: '#/components/schemas/CycleWebhookPayload'
    IssueLabelCreated:
      name: IssueLabelCreated
      title: Issue Label Created Event
      summary: Payload for issueLabel.create webhook events
      payload:
        $ref: '#/components/schemas/IssueLabelWebhookPayload'
  schemas:
    WebhookBase:
      type: object
      required:
        - action
      properties:
        action:
          type: string
          enum: [create, update, remove]
          description: The type of action that triggered the webhook
        organizationId:
          type: string
          description: ID of the organization that owns the webhook
        webhookTimestamp:
          type: integer
          description: Unix timestamp (ms) when the webhook was fired
        webhookId:
          type: string
          description: UUID of the webhook configuration
        type:
          type: string
          description: The entity type (e.g., Issue, Comment, Project)
    IssueWebhookPayload:
      allOf:
        - $ref: '#/components/schemas/WebhookBase'
        - type: object
          properties:
            type:
              type: string
              enum: [Issue]
            data:
              type: object
              description: The full issue object
              properties:
                id:
                  type: string
                identifier:
                  type: string
                title:
                  type: string
                description:
                  type: string
                priority:
                  type: integer
                  enum: [0, 1, 2, 3, 4]
                state:
                  type: object
                  properties:
                    id: { type: string }
                    name: { type: string }
                    type: { type: string }
                assignee:
                  type: object
                  properties:
                    id: { type: string }
                    name: { type: string }
                    email: { type: string }
                team:
                  type: object
                  properties:
                    id: { type: string }
                    name: { type: string }
                    key: { type: string }
                url:
                  type: string
                  format: uri
                createdAt:
                  type: string
                  format: date-time
                updatedAt:
                  type: string
                  format: date-time
            updatedFrom:
              type: object
              description: Previous values for updated fields (only on update events)
              additionalProperties: true
    CommentWebhookPayload:
      allOf:
        - $ref: '#/components/schemas/WebhookBase'
        - type: object
          properties:
            type:
              type: string
              enum: [Comment]
            data:
              type: object
              properties:
                id:
                  type: string
                body:
                  type: string
                user:
                  type: object
                  properties:
                    id: { type: string }
                    name: { type: string }
                issue:
                  type: object
                  properties:
                    id: { type: string }
                    identifier: { type: string }
                    title: { type: string }
                createdAt:
                  type: string
                  format: date-time
                updatedAt:
                  type: string
                  format: date-time
    ProjectWebhookPayload:
      allOf:
        - $ref: '#/components/schemas/WebhookBase'
        - type: object
          properties:
            type:
              type: string
              enum: [Project]
            data:
              type: object
              properties:
                id:
                  type: string
                name:
                  type: string
                description:
                  type: string
                state:
                  type: string
                  enum: [planned, started, paused, completed, cancelled]
                createdAt:
                  type: string
                  format: date-time
                updatedAt:
                  type: string
                  format: date-time
    CycleWebhookPayload:
      allOf:
        - $ref: '#/components/schemas/WebhookBase'
        - type: object
          properties:
            type:
              type: string
              enum: [Cycle]
            data:
              type: object
              properties:
                id:
                  type: string
                number:
                  type: integer
                name:
                  type: string
                startsAt:
                  type: string
                  format: date-time
                endsAt:
                  type: string
                  format: date-time
                teamId:
                  type: string
    IssueLabelWebhookPayload:
      allOf:
        - $ref: '#/components/schemas/WebhookBase'
        - type: object
          properties:
            type:
              type: string
              enum: [IssueLabel]
            data:
              type: object
              properties:
                id:
                  type: string
                name:
                  type: string
                color:
                  type: string
                teamId:
                  type: string