---
ref: tool:linear/create-issue
name: Create or update an issue
company: company:linear
workflows: [workflow:feature-requests-to-linear]
access: [mcp, api]
tags: [capability:manage-tasks, category:project-management, has:api, has:mcp]
docs: https://linear.app/developers/graphql
updated: 2026-09-29
---

# Create or update an issue

Creates an issue in a team with its title, description, assignee, labels and priority, or updates an existing issue when you pass its id.

Note: Needs a `teamId`. Without a `stateId`, an API-created issue lands in the team's first Backlog state, or in Triage when the team uses it.

## Set up

Use the first option your agent supports.

### MCP (official, remote)

Add this server to your agent's MCP settings, then sign in when asked.

```json
{ "mcpServers": { "linear": { "url": "https://mcp.linear.app/mcp" } } }
```

Call the MCP tool `save_issue`.

Server URL: https://mcp.linear.app/mcp

### API (official)

- Base URL: https://api.linear.app
- Endpoint: `POST /graphql`
- Auth: send the header `Authorization: $LINEAR_API_KEY`
- Get a key: https://linear.app/settings/account/security
- Docs: https://linear.app/developers/graphql

Before anything else, confirm access with the cheapest read-only call, like a list or a search. Never send or change anything to test access.

## Rules

- Ask the user before anything that sends messages, costs money, or changes data, and say how many records it touches. One approval covers a batch the user has seen.
- Never print API keys.
