> ## Documentation Index
> Fetch the complete documentation index at: https://filament.getgalaxy.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Linear

> Read teams, users, projects, and issues from Linear's GraphQL API

The Linear source reads teams, users, projects, and issues through Linear's
GraphQL API. It is built with an
[HTTP manifest](/pages/connectors/building-a-connector/http-manifests) and is
**beta**. Its resources are stable, though future releases may add columns.

## Configuration

| Field | Scope | Default | Description |
| - | - | - | - |
| `api_key` | Connection | | Required. Secret. Linear API key. |

## Resources

Each resource has its own GraphQL query, reads 100 rows per page, and includes
archived records. Issue relationships such as team, state, assignee, creator,
and project are available both as flat ID columns and compact JSON objects.
Issue rows include up to the first 50 labels.

## Modes

All resources support full reads. If interrupted, a full read resumes after
the last completed page.

All four resources are incremental, following the same pattern.

| Resource | Cursor field | Request parameter | Checkpoint key |
| - | - | - | - |
| `teams` | `updated_at` | `variables.updatedAfter` (body) | `teams_updated_at` |
| `users` | `updated_at` | `variables.updatedAfter` (body) | `users_updated_at` |
| `projects` | `updated_at` | `variables.updatedAfter` (body) | `projects_updated_at` |
| `issues` | `updated_at` | `variables.updatedAfter` (body) | `issues_updated_at` |

The first incremental run uses `1970-01-01T00:00:00Z`, so it also backfills
existing records. Later runs send the saved `updated_at` value as
`updatedAfter`. The manifest fixes the cursor field, but the pipeline can add a
lookback window if needed.

## Behavior

* **Auth**: the API key is sent as a raw `Authorization` header value, with
  no `Bearer` prefix. This is Linear's personal-key convention.
* **Pagination**: Relay-style cursors. `pageInfo.endCursor` from each
  response feeds `variables.after` in the next request body, terminating when
  `pageInfo.hasNextPage` is false.
* **Errors**: GraphQL returns HTTP 200 for query failures, so the manifest
  declares an error envelope. Any response with an `errors` array fails the
  run with the first error's message.
* **Rate limiting**: no client-side limiter is configured. The engine backs
  off on 429 responses using `Retry-After`.
* Every resource carries a `raw` remainder column preserving fields the
  manifest does not project.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.