Skip to content

Create Linear issues

Connect one Linear team, map reviewed findings to issues, and verify issue creation before production use.

The Linear integration creates an issue in one configured team for each successful submission.

You need:

  • permission to create a personal API key in Linear
  • permission to create issues in the destination team
  • the Linear team UUID
  • permission to create integration connections in Dreadnode

In Linear, open Settings → Account → Security & Access, create a personal API key, and copy it to your secret manager. Linear shows the value once. See Linear API and webhooks for current permission and team-access options.

Limit the key to the destination team when your Linear workspace supports team restrictions.

Query Linear’s GraphQL API with the same key. The response lists every team available to the key.

Terminal window
read -rsp "Linear API key: " LINEAR_API_KEY && export LINEAR_API_KEY
curl --silent --show-error https://api.linear.app/graphql \
--header "Authorization: ${LINEAR_API_KEY}" \
--header "Content-Type: application/json" \
--data '{"query":"query { teams { nodes { id name key } } }"}'

A successful response has this shape:

{
"data": {
"teams": {
"nodes": [
{
"id": "6dab0288-0e18-4833-9384-af94372163de",
"name": "Security",
"key": "SEC"
}
]
}
}
}

Use the id value, not the short team key.

  1. Open Org Settings → Integrations.
  2. In Connections, choose the + button (Add connection).
  3. Set Destination to Linear.
  4. Enter a descriptive Name, the API key, and the Team ID.
  5. Choose Create.
  6. Choose Test connection on the saved connection.

For API clients, use these canonical fields:

{
"name": "Linear production",
"type": "linear",
"config": {
"team_id": "6dab0288-0e18-4833-9384-af94372163de"
},
"credentials": {
"api_token": "REPLACE_WITH_LINEAR_API_KEY"
}
}

Select the target project in Projects, then choose the + button (Add project action) from Actions. Point the action at the Linear connection. Linear requires a top-level title after template rendering.

{
"title": "{{title}}",
"description": "{{data.description}}",
"severity": "{{data.severity}}",
"evidence": "{{data.evidence}}"
}

Linear receives:

  • title as the issue title
  • description and evidence in the issue description
  • critical, high, medium, low, or info mapped to Linear priority 1 through 4

After success, Dreadnode stores the Linear issue identifier and URL under External References.

SymptomCheck
Connection test failsRegenerate the API key and confirm it has workspace access.
Test passes but submission failsVerify the team UUID and the key’s team permissions.
Issue title is missingAdd a top-level title to the action template.
Priority is lower than expectedRender a supported lowercase severity in the payload.