Skip to main content

Linear

Linear is a modern issue tracking and project management platform for software teams. It exposes a GraphQL API for reading and writing issues, projects, cycles, teams, labels, comments, and other workspace resources. Nexla connects to Linear as both a data source and a data destination, letting you ingest Linear data into your pipelines and push issues, comments, labels, and cycles back into your workspace.

Linear icon

Power end-to-end data operations for your Linear API with Nexla. Our bi-directional Linear connector is purpose-built for Linear, making it simple to ingest data, sync it across systems, and deliver it anywhere — all with no coding required. Nexla turns API-sourced data into ready-to-use, reusable data products and makes it easy to send data to Linear or any other destination. With comprehensive monitoring, lineage tracking, and access controls, Nexla keeps your Linear workflows fast, secure, and fully governed.

Features

Type: API

SourceDestination

  • Seamless API Integration: Connect to any endpoint as source or destination without coding, with automatic data product creation
  • Visual Composition & Chaining: Build complex integrations using visual templates, chain API calls, and compose workflows with data validation and filtering
  • API Proxy: Expose curated slices of your data securely with a secure and customizable API proxy that validates and transforms data on the fly
  • Request optimization with intelligent batching, retry, and caching to minimize API calls and costs

Prerequisites

Before creating a Linear credential, you need a personal API key from your Linear workspace. Linear's GraphQL API is served from a single endpoint, https://api.linear.app/graphql, and all requests are authenticated with the personal API key sent in the Authorization header. Unlike OAuth access tokens, personal API keys are passed directly, without a Bearer prefix.

To obtain a personal API key, follow these steps:

  1. Sign in to Linear with an account that has access to the workspace you want to connect.

  2. Open your workspace settings, then navigate to the Security & access (API) section where personal API keys are managed.

  3. Under Personal API keys, click New API key (or Create key), give the key a descriptive label such as "Nexla Integration", and create it.

  4. Copy the generated key immediately and store it securely. Linear shows the full key value only once at creation time.

A personal API key inherits the permissions of the user who created it, so it can access any resources that user can access in the workspace. Treat the key as a secret: if it is exposed, revoke it from the same settings page and generate a replacement. For more detail on authentication and the available GraphQL operations, see the Linear Developer Documentation and the Linear GraphQL API reference.

Authenticate

Credentials required

FieldRequiredSecretDescription
API KeyYesYesYour Linear workspace API key. Generate from Settings > API > Personal API Keys.
Base URLYesNoThe base URL for the Linear GraphQL API.

Create a credential in Nexla

  1. After selecting the data source/destination type, click the Add Credential tile to open the Add New Credential overlay.

  2. Enter a name for the credential in the Credential Name field and a short, meaningful description in the Credential Description field.

  3. Enter your Linear personal API key in the API Key field. This key is sent in the Authorization header for all requests to the Linear GraphQL API and must be kept confidential.

  4. Enter the Linear GraphQL endpoint in the Base URL field. In most cases this is https://api.linear.app/graphql, which is the default value.

    A personal API key carries the permissions of the Linear user who created it. If the key is compromised, revoke it in your Linear workspace settings and generate a new one.

    For detailed information about Linear authentication and the available GraphQL operations, see the Linear Developer Documentation and the Linear GraphQL API reference.

  5. Click the Save button at the bottom of the overlay. The newly added credential will now appear in a tile on the Authenticate screen during data source/destination creation.

Use as a data source

To create a new data flow, navigate to the Integrate section, and click the New Data Flow button. Select the Linear connector tile, then select the credential that will be used to connect to the Linear workspace, and click Next; or, create a new Linear credential for use in this flow.

Endpoint templates

Nexla provides pre-built templates that can be used to rapidly configure data sources to ingest data from common Linear endpoints. Select the endpoint from which this source will fetch data from the Endpoint pulldown menu. Available endpoint templates are listed in the expandable boxes below.

[Rest API] Query Issues

Query issues from Linear using GraphQL, supporting filtering, pagination, and nested fields for issue details.

  • This endpoint returns issues from your Linear workspace, including fields such as the issue ID, title, workflow state, and assignee. Cursor-based pagination is handled automatically so that all matching issues are retrieved.

For detailed information about the issues query, response structure, and available fields, see the Linear GraphQL API reference.

[Rest API] List Teams

Query all teams in the Linear workspace using the GraphQL teams query with cursor-based pagination.

  • This endpoint returns every team in the workspace, including the team ID, name, and description. Nexla follows the cursor-based pagination automatically to retrieve all teams.

For detailed information about the teams query and available fields, see the Linear GraphQL API reference.

[Rest API] List Users

Query all users in the Linear organization using the GraphQL users query with cursor-based pagination.

  • This endpoint returns every user in the organization, including the user ID, name, and email. Nexla follows the cursor-based pagination automatically to retrieve all users.

For detailed information about the users query and available fields, see the Linear GraphQL API reference.

[Rest API] List Projects

Query all projects in the Linear workspace using the GraphQL projects query with cursor-based pagination.

  • This endpoint returns every project in the workspace, including the project ID, name, and description. Nexla follows the cursor-based pagination automatically to retrieve all projects.

For detailed information about the projects query and available fields, see the Linear GraphQL API reference.

[Rest API] List Cycles

Query all cycles in the Linear workspace using the GraphQL cycles query with cursor-based pagination.

  • This endpoint returns every cycle (sprint) in the workspace, including the cycle ID, name, number, start and end dates, and the owning team. Nexla follows the cursor-based pagination automatically to retrieve all cycles.

For detailed information about the cycles query and available fields, see the Linear GraphQL API reference.

[Rest API] List Labels

Query all issue labels in the Linear workspace using the GraphQL labels query with cursor-based pagination.

  • This endpoint returns every issue label in the workspace, including the label ID, name, color, and the owning team. Nexla follows the cursor-based pagination automatically to retrieve all labels.

For detailed information about the labels query and available fields, see the Linear GraphQL API reference.

[Rest API] List Workflow States

Query all workflow states (statuses) in the Linear workspace using the GraphQL workflowStates query with cursor-based pagination.

  • This endpoint returns every workflow state in the workspace, including the state ID, name, type, color, and the owning team. Nexla follows the cursor-based pagination automatically to retrieve all workflow states.

For detailed information about the workflowStates query and available fields, see the Linear GraphQL API reference.

[Rest API] List Comments

Query all comments in the Linear workspace using the GraphQL comments query with cursor-based pagination.

  • This endpoint returns every comment in the workspace, including the comment ID, body, author, associated issue, and creation timestamp. Nexla follows the cursor-based pagination automatically to retrieve all comments.

For detailed information about the comments query and available fields, see the Linear GraphQL API reference.

[Rest API] List Attachments

Query all attachments in the Linear workspace using the GraphQL attachments query with cursor-based pagination.

  • This endpoint returns every attachment in the workspace, including the attachment ID, title, URL, associated issue, and creation timestamp. Nexla follows the cursor-based pagination automatically to retrieve all attachments.

For detailed information about the attachments query and available fields, see the Linear GraphQL API reference.

Once the selected endpoint template has been configured, click the Test button to the right of the endpoint selection menu to retrieve a sample of the data that will be fetched. Sample data will be displayed in the Endpoint Test Result panel on the right, allowing you to verify that the source is configured correctly before saving.

Manual configuration

Linear data sources can also be manually configured to query any valid Linear GraphQL operation, including operations not covered by the pre-built templates, chained API calls, or custom request bodies. Select the Advanced tab at the top of the configuration screen, and follow the instructions in Connect to Any API to configure the API method, endpoint URL, request body, path to data, metadata, and request headers.

Once all of the relevant settings have been configured, click the Create button in the upper right corner of the screen to save and create the new Linear data source. Nexla will now begin ingesting data from the configured endpoint and will organize any data that it finds into one or more Nexsets.

Use as a destination

Click the + icon on the Nexset that will be sent to the Linear destination, and select the Send to Destination option from the menu. Select the Linear connector from the list of available destination connectors, then select the credential that will be used to connect to the Linear workspace, and click Next; or, create a new Linear credential for use in this flow.

Endpoint templates

Nexla provides pre-built templates that can be used to rapidly configure destinations to send data to common Linear endpoints. Select the endpoint to which data will be sent from the Endpoint pulldown menu. Then, click on the template in the list below to expand it, and follow the instructions to configure additional endpoint settings.

[Rest API] Create Issue

Creates a new issue in Linear using the issueCreate GraphQL mutation. Requires teamId and title in the request body.

  • Each record from your Nexset is sent as a GraphQL mutation to create a new issue. The request body must contain the fields required by the issueCreate mutation, including the team ID and issue title.

For detailed information about the issueCreate mutation and its input fields, see the Linear GraphQL API reference.

[Rest API] Update Issue

Updates an existing issue in Linear using the issueUpdate GraphQL mutation. Requires issue id and input fields in the request body.

  • Each record from your Nexset is sent as a GraphQL mutation to update an issue. The request body must contain the issue ID and the input fields to change.

For detailed information about the issueUpdate mutation and its input fields, see the Linear GraphQL API reference.

[Rest API] Delete Issue

Deletes an issue in Linear using the issueDelete GraphQL mutation. Requires issue id in the request body.

  • Each record from your Nexset is sent as a GraphQL mutation to delete an issue. The request body must contain the ID of the issue to delete.

For detailed information about the issueDelete mutation, see the Linear GraphQL API reference.

[Rest API] Create Comment

Creates a new comment on an issue in Linear using the commentCreate GraphQL mutation. Requires issueId and body in the request body.

  • Each record from your Nexset is sent as a GraphQL mutation to create a comment. The request body must contain the issue ID and the comment body.

For detailed information about the commentCreate mutation and its input fields, see the Linear GraphQL API reference.

[Rest API] Update Comment

Updates an existing comment in Linear using the commentUpdate GraphQL mutation. Requires comment id and body in the request body.

  • Each record from your Nexset is sent as a GraphQL mutation to update a comment. The request body must contain the comment ID and the updated body.

For detailed information about the commentUpdate mutation and its input fields, see the Linear GraphQL API reference.

[Rest API] Delete Comment

Deletes a comment in Linear using the commentDelete GraphQL mutation. Requires comment id in the request body.

  • Each record from your Nexset is sent as a GraphQL mutation to delete a comment. The request body must contain the ID of the comment to delete.

For detailed information about the commentDelete mutation, see the Linear GraphQL API reference.

[Rest API] Create Label

Creates a new issue label in Linear using the labelCreate GraphQL mutation. Requires name and teamId in the request body.

  • Each record from your Nexset is sent as a GraphQL mutation to create an issue label. The request body must contain the label name and the team ID.

For detailed information about the labelCreate mutation and its input fields, see the Linear GraphQL API reference.

[Rest API] Update Label

Updates an existing issue label in Linear using the labelUpdate GraphQL mutation. Requires label id and input fields in the request body.

  • Each record from your Nexset is sent as a GraphQL mutation to update an issue label. The request body must contain the label ID and the input fields to change.

For detailed information about the labelUpdate mutation and its input fields, see the Linear GraphQL API reference.

[Rest API] Create Cycle

Creates a new cycle (sprint) in Linear using the cycleCreate GraphQL mutation. Requires teamId, name, startsAt, and endsAt in the request body.

  • Each record from your Nexset is sent as a GraphQL mutation to create a cycle. The request body must contain the team ID, cycle name, and the start and end dates.

For detailed information about the cycleCreate mutation and its input fields, see the Linear GraphQL API reference.

[Rest API] Update Cycle

Updates an existing cycle in Linear using the cycleUpdate GraphQL mutation. Requires cycle id and input fields in the request body.

  • Each record from your Nexset is sent as a GraphQL mutation to update a cycle. The request body must contain the cycle ID and the input fields to change.

For detailed information about the cycleUpdate mutation and its input fields, see the Linear GraphQL API reference.

[Rest API] Update Project

Updates an existing project in Linear using the projectUpdate GraphQL mutation. Requires project id and input fields in the request body.

  • Each record from your Nexset is sent as a GraphQL mutation to update a project. The request body must contain the project ID and the input fields to change.

For detailed information about the projectUpdate mutation and its input fields, see the Linear GraphQL API reference.

Manual configuration

Linear destinations can also be manually configured to send data to any valid Linear GraphQL mutation. Select the Advanced tab at the top of the configuration screen, and follow the instructions in Connect to Any API to configure the API method, data format, endpoint URL, request headers, attribute exclusions, record batching, and response webhooks.

The Linear API expects a JSON request body containing a GraphQL mutation and its variables. Ensure each Nexset record maps to the input fields required by the target mutation.

Save & activate

Once all endpoint settings have been configured, click the Done button in the upper right corner of the screen to save and create the destination. To send the data to the configured Linear endpoint, open the destination resource menu, and select Activate.

The Nexset data will not be sent to the Linear endpoint until the destination is activated. Destinations can be activated immediately or at a later time, providing full control over data movement.