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

# Linear sync webhook

> Receive Linear webhook events for real-time signal streaming. Distinct from the recommendation completion webhook.

Receive Linear webhook events for real-time signal streaming. Configure this URL in Linear under `Settings > API > Webhooks` for an integration. Subscribe to `Issue` (create, update) and `Cycle` (update). Distinct from `/api/webhooks/linear`, which handles DAC recommendation completion tracking.

```http theme={null}
POST /api/webhooks/linear/sync?integration_id=int_xyz
Content-Type: application/json
linear-signature: <hmac-sha256>
```

| Property           | Value                                                                                                       |
| ------------------ | ----------------------------------------------------------------------------------------------------------- |
| **Auth**           | None on the route. Validated via `linear-signature` HMAC against the integration's stored `webhook_secret`. |
| **Required query** | `integration_id`                                                                                            |
| **Idempotent**     | Yes (Linear's event ID is the dedup key)                                                                    |

## Query

| Field            | Type   | Required | Notes                                           |
| ---------------- | ------ | -------- | ----------------------------------------------- |
| `integration_id` | string | yes      | The Dacard integration this webhook belongs to. |

## Headers

| Header             | Notes                                                                                                              |
| ------------------ | ------------------------------------------------------------------------------------------------------------------ |
| `linear-signature` | HMAC-SHA256 of the raw body. Verified against the integration's stored secret. Required if a secret is configured. |

## Response

`200 OK` with `{ ok: true, processed: <count> }` on accepted events. `200 OK` with `{ ok: true, skipped: true }` on events Dacard does not parse (e.g., comment-only updates).

## Errors

| Status | Code                        | When                                        |
| ------ | --------------------------- | ------------------------------------------- |
| 400    | `Missing integration_id`    | Query missing.                              |
| 401    | `Missing webhook signature` | Header missing when a secret is configured. |
| 401    | `Invalid webhook signature` | HMAC mismatch.                              |
| 404    | `Integration not found`     | Bad `integration_id`.                       |
| 500    | `INTERNAL_ERROR`            | Parse or write failed. Sentry traced.       |

## Events parsed

`Issue.create`, `Issue.update`, `Cycle.update`. Other event types are accepted and acknowledged but not extracted into signals.
