Skip to main content

Linear

Linear's unified query interface lets you create and manage issues, sub-issues, and projects directly from Appsmith. Each command returns JSON so you can wire Linear workflows into widgets, automations, or downstream datasources without custom wrappers.

Connect Linear​

Authenticate with Linear using Appsmith's built-in OAuth portal—no tokens or client IDs are required.

  1. Go to Datasources → + New and pick Linear.
  2. Click Connect to open the Linear consent screen in a pop-up window.
  3. Review the scopes Appsmith requests (issue and project access) and click Authorize.

If you ever revoke the OAuth grant inside Linear, return to the datasource and click Reconnect to refresh the credentials.

Query Linear​

All Linear commands return JSON that mirrors Linear's GraphQL schema. Use the Commands dropdown inside the query editor to switch between the supported operations listed below.

Create Issue​

Creates a new issue for a team and returns the freshly created record (id, identifier, timestamps, and workflow metadata).

Team Id string​

The Linear team that should own the new issue. Collect the UUID from Linear's team settings or copy it from another issue payload. This field is required.

Title string​

The issue title shown inside Linear. Keep it short and action-oriented so automations stay readable. This field is required.

Description string​

Optional Markdown body that explains context, reproduction steps, or acceptance criteria.

Status Id string​

The Linear workflow state to place the issue into (for example, "In Progress"). Leave blank to use the team's default first status.

Priority integer​

A numeric priority from Linear's scale (1 = urgent, 4 = low). Omitting this value keeps the default priority.

Due Date string​

ISO 8601 date (for example, 2025-12-31) that Linear uses to populate the due date chip.

Cycle Id string​

Connects the issue to a Linear cycle. Provide the UUID returned by Search Issue or Linear's API.

Additional Fields object​

JSON blob for any extra properties Linear exposes—such as assigneeId, labelIds, or custom fields.
{
"assigneeId": "a70bdf0f-530a-4887-857d-46151b52b47c",
"labelIds": ["de4ef1e9-9ac5-4a03-96a0-4d9686c8afee"]
}

Update Issue​

Partially updates an existing issue—only the fields you send will change. The response includes the updated issue payload for downstream widgets.

Issue Id string​

The Linear UUID of the issue you want to modify. Required.

Title string​

New title for the issue. Skip this field to keep the current title.

Description string​

Updated Markdown body.

Status Id string​

Moves the issue to a new workflow state.

Priority integer​

Resets priority using Linear's integer scale.

Due Date string​

New ISO 8601 due date.

Cycle Id string​

Associates the issue with a different cycle.

Additional Fields object​

Advanced JSON payload for other mutable fields—such as reassigning via assigneeId or toggling custom booleans.

Get Issue by ID​

Fetches the full issue record using its canonical UUID—ideal for refreshing widgets after updates.

Issue Id string​

The record ID copied from Linear URLs or query results.

Get Issue by Issue Identifier​

Retrieves an issue using the friendly key shown in Linear (for example, ENG-142).

External Id string​

The issue identifier composed of the team key and sequence number.

Search Issue​

Searches Linear issues with pagination and filtering using GraphQL API. Returns issues matching the filter criteria with pagination support.

Filter object​

JSON filter object for filtering issues. Use Linear's IssueFilter format. Leave it as empty object {} if not being used. Example:
{
"team": {
"id": {
"eq": "team-id"
}
},
"state": {
"type": {
"eq": "started"
}
}
}

Limit integer​

The maximum number of issues to return (pagination limit). Default is 50.

Cursor string​

The cursor for pagination (endCursor from previous page). Leave empty for first page. Use the endCursor value from the pageInfo object in the previous response to fetch the next page.

Delete Issue​

Permanently removes an issue. Linear returns the deleted record's id so you can confirm the operation.

Issue Id string​

The UUID of the issue to delete.

Archive Issue​

Soft-archives an issue so it no longer appears in active boards but can still be restored later.

Issue Id string​

The UUID of the issue to archive.

Create Sub Issue​

Creates a child issue inside a parent issue's thread and inherits team metadata automatically.

Parent Id string​

UUID of the parent issue. Required.

Team Id string​

Team responsible for the sub-issue. Must match the parent's team. Required.

Title string​

Sub-issue title. Required.

Description string​

Optional Markdown body.

Additional Fields object​

JSON payload for fields like lead, assigneeId, or SLA custom fields.

Create Project​

Creates a Linear project spanning one or more teams and returns the project id for scheduling.

Team Ids string | array​

Accepts either a single team UUID or a JSON array of UUIDs if the project should span multiple teams.

Project Name string​

Human-readable name shown in Linear. Required.

Description string​

Optional long-form project summary.

Additional Fields object​

JSON payload for state, color, target dates, or other project metadata.
{
"state": "planned",
"description": "Launch automation initiative"
}

Update Project​

Updates an existing project. Send only the fields you want to change; the response returns the full record.

Project Id string​

The UUID of the project to update. Required.

Project Name string​

New project name.

Description string​

Updated project summary.

Additional Fields object​

JSON for properties like state, targetDate, or custom fields.

Get Project by ID​

Fetches a single project record for dashboards or automations.

Project Id string​

The UUID of the project to retrieve.

Delete Project​

Deletes a project permanently. Use with caution because Linear cannot restore deleted projects.

Project Id string​

The UUID of the project to delete.

Search Teams​

Searches Linear teams by name using GraphQL API. Returns teams matching the search criteria with optional member and state information.

Team Name string​

The team name to search for (partial match supported). This field is required.

Include Members boolean​

Include team members in the response. Default is false.

Include States boolean​

Include team states in the response. Default is false.

Custom GraphQL Action​

Build bespoke Linear calls with Custom Action when you need mutations or queries that are not exposed above.

Set the Custom Action type to POST and the endpoint to /graphql, then use the Body tab to craft the request body and variables. Follow the Linear GraphQL docs for available queries and mutations. Test the call before wiring it into widgets to make sure the schema matches your expectations.

Example: Query users Linear custom action example showing POST and graphql settings

Troubleshooting​

  • Re-authenticate: If a query suddenly returns 401 errors, open the Linear datasource and click Reconnect to refresh the OAuth grant.
  • Validate IDs: Copy issueId, projectId, and teamId straight from Linear's URLs or API responses to avoid typos.
  • Inspect responses: Use the Run button and the Response panel to read Linear's error messages—they often call out missing scopes or malformed filter formulas.