Sapilon becomes publicly available on 1 December 2026: 42 days to go. The core goes open source the same day →

Linear integration

In short

Query and create issues, projects and comments. Connect it on the Integrations page; your app then calls Linear through Sapilon without ever holding a Linear credential.

Lets your app read and write Linear data — issues, projects, cycles, comments — through Linear’s GraphQL API, as the workspace member whose API key you use.

Connecting

On the Integrations page choose Connect on Linear and fill in:

  • Personal API key — Linear → Settings → Security & access → Personal API keys → New API key. Limit it to the teams and permissions the app needs.

Sapilon checks the key with the provider before it saves it, and stores it encrypted; it is never shown again.

What your app can do

Only these requests are available; anything else is refused.

  • POST /graphql

How the agent uses it

Use integrations.request('linear', …). Everything is one GraphQL endpoint, relative to https://api.linear.app.

  • POST /graphql — body: { query, variables }. Read: { method: 'POST', path: '/graphql', body: { query: '{ issues(first: 20, filter: { state: { type: { eq: "started" } } }) { nodes { id identifier title assignee { name } } } }' } }. Create: body: { query: 'mutation($input: IssueCreateInput!) { issueCreate(input: $input) { success issue { identifier url } } }', variables: { input: { teamId, title: 'Login fails' } } }.

List teams first ({ teams { nodes { id key name } } }): creating an issue needs a teamId. GraphQL errors come back with HTTP 200 in body.errors — check it. What the key may change is set on the key in Linear.

More from Linear: https://linear.app/developers/graphql

Last updated .

Was this page helpful?