# Signals

> News and risk signals feed with severity, entity, vault, category, and since filters.

## GET /v1/signals

List public news and risk signals.

### Query Parameters

| Parameter | Type   | Default | Description                                                      |
| --------- | ------ | ------- | ---------------------------------------------------------------- |
| page      | number | 1       | Page number                                                      |
| limit     | number | 30      | Results per page, max 100                                        |
| severity  | string | -       | Comma-separated `Info`, `Watch`, `RiskChange`, or `PolicyBreach` |
| entity    | string | -       | Entity filter                                                    |
| vault     | string | -       | Vault key filter in `{chainId}:{lowercaseAddress}` format        |
| category  | string | -       | Category filter                                                  |
| since     | string | 30 days | ISO-8601 lower bound. Defaults to the latest 30 days             |

### Example

```bash
curl "https://api.philidor.io/v1/signals?severity=RiskChange&limit=5"
```

### Response

```json
{
  "data": [
    {
      "id": 12,
      "title": "Risk signal",
      "url": "https://example.com/source",
      "severity": "RiskChange",
      "significance": 8,
      "entities": [{ "kind": "protocol", "id": "morpho", "label": "Morpho" }],
      "affectedVaultCount": 2,
      "breachCount": 1,
      "exposureUsd": "1250000",
      "category": "incident",
      "publishedAt": "2026-07-01T12:00:00Z"
    }
  ],
  "meta": {
    "page": 1,
    "limit": 5,
    "total": 1,
    "hasMore": false
  }
}
```

---

## GET /v1/signals/\{id\}

Get one signal with its full impact-card detail.

### Path Parameters

| Parameter | Type   | Description |
| --------- | ------ | ----------- |
| id        | number | Signal ID   |

### Example

```bash
curl https://api.philidor.io/v1/signals/12
```

### Response

```json
{
  "data": {
    "id": 12,
    "title": "Risk signal",
    "url": "https://example.com/source",
    "severity": "RiskChange",
    "significance": 8,
    "summary": "Signal detail",
    "severityReason": "Material risk signal for tracked vaults",
    "entities": [{ "kind": "protocol", "id": "morpho", "label": "Morpho" }],
    "entitiesFull": [],
    "affectedVaultCount": 2,
    "affectedVaults": [],
    "breachCount": 1,
    "exposureUsd": "1250000",
    "category": "incident",
    "publishedAt": "2026-07-01T12:00:00Z",
    "graphSnapshotId": "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
    "methodologyVersion": "v1",
    "evidence": {
      "sourceUrl": "https://example.com/source",
      "articleUrls": [],
      "snapshotId": null
    }
  }
}
```