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
curl "https://api.philidor.io/v1/signals?severity=RiskChange&limit=5"Response
{
"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
curl https://api.philidor.io/v1/signals/12Response
{
"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
}
}
}