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

# Linear

> 3 production-ready jobs — feature release content pipelines, bug report sentiment focus groups, and cycle velocity launch planning

Linear's GraphQL API exposes the full state of your engineering workflow: issues, cycles, labels, projects, and velocity metrics. These three jobs pull structured data from Linear into Mavera (Generate, Focus Groups, Mave Agent) to automate release content from completed features, run synthetic focus groups on customer-reported bugs, and align marketing launch timelines with engineering cycle velocity.

***

## API Reference Card

| Detail          | Value                                                  |
| --------------- | ------------------------------------------------------ |
| **Base URL**    | `https://api.linear.app/graphql`                       |
| **Auth**        | Personal API Key or OAuth 2.0                          |
| **Rate limits** | 5,000 requests/hr; 250,000 complexity points/hr        |
| **Key queries** | `issues`, `cycles`, `projects`, `teams`, `issueLabels` |
| **Mavera base** | `https://app.mavera.io/api/v1`                         |
| **Mavera auth** | `Authorization: Bearer mvra_live_...`                  |

<Info>
  All examples use `LINEAR_API_KEY` (a Personal API Key from [Linear Settings → API](https://linear.app/settings/api)) and `MAVERA_API_KEY`. Personal API keys inherit the permissions of the user who created them.
</Info>

***

## Prerequisites

<Steps>
  <Step title="Create a Linear API key">Go to [linear.app/settings/api](https://linear.app/settings/api) → Personal API Keys → Create Key. Copy the key immediately — it is only shown once.</Step>
  <Step title="Identify team and project IDs">Every Linear team, project, cycle, and issue has a UUID. Find them via the API or from URLs: `linear.app/{workspace}/issue/{ISSUE-ID}`.</Step>
  <Step title="Mavera API key">Get your key from [Mavera dashboard](https://app.mavera.io/settings/api-keys).</Step>

  <Step title="Environment variables">
    ```bash theme={"dark"}
    export LINEAR_API_KEY="lin_api_xxxxxxxxxxxxxxxx"
    export MAVERA_API_KEY="mvra_live_xxxxx"
    ```
  </Step>
</Steps>

***

## Jobs

| # | Job                                                                                       | Linear Data                                | Mavera Surface | Output                                      |
| - | ----------------------------------------------------------------------------------------- | ------------------------------------------ | -------------- | ------------------------------------------- |
| 1 | [Feature Release → Content Pipeline](/integrations/linear/feature-release-content)        | Completed issues from recent cycles        | Generate       | Release notes + blog draft + social copy    |
| 2 | [Bug Report Sentiment → Product Focus Group](/integrations/linear/bug-report-focus-group) | Issues labeled "bug" + "customer-reported" | Focus Groups   | Severity ratings + workflow impact analysis |
| 3 | [Cycle Velocity → Launch Planning](/integrations/linear/cycle-velocity-planning)          | Cycle history with completed issue counts  | Mave Agent     | Marketing timeline aligned to eng capacity  |

***

## Rate Limits & Production Notes

| Limit Type        | Allowance      | Strategy                                             |
| ----------------- | -------------- | ---------------------------------------------------- |
| Request rate      | 5,000 req/hr   | 300ms delay between calls; batch with nested queries |
| Complexity points | 250,000 pts/hr | Limit `first:` on connections; avoid deep nesting    |
| Payload size      | 5 MB response  | Paginate large teams; filter with date ranges        |

<Warning>
  Linear charges **complexity points** per query based on nesting depth and connection sizes. Monitor usage via `X-Complexity` response headers and keep queries under 10,000 points each. For production, use [Linear webhooks](https://developers.linear.app/docs/graphql/webhooks) instead of polling to stay within limits.
</Warning>

**Production checklist:**

* **Auth**: Personal keys don't expire but can be revoked. For automations, use OAuth 2.0 with a service account.
* **Pagination**: Connections accept `first` (max 250) and `after` (cursor). Follow `pageInfo.hasNextPage`.
* **Filtering**: Use query-level filters (`eq`, `in`, `gte`, `contains`) instead of client-side filtering.
* **Webhooks**: For release notes, trigger on issue state changes instead of polling.
* **Idempotency**: Track processed issue IDs to avoid duplicate content generation.
* **Mavera credits**: Monitor at [Dashboard](https://app.mavera.io/settings/usage).

***

<CardGroup cols={3}>
  <Card title="All Integrations" icon="plug" href="/integrations" />

  <Card title="Linear API Docs" icon="square-kanban" href="https://developers.linear.app/docs/graphql/working-with-the-graphql-api" />

  <Card title="Focus Groups" icon="users" href="/features/focus-groups" />

  <Card title="Mave Agent" icon="brain" href="/features/mave-agent" />

  <Card title="Generate" icon="pen" href="/features/content-generation" />
</CardGroup>
