Events

Event feed, event detail, deduped group lookup, and the public SSE stream.

GET /v1/events

List DeFi events with filters, cursor-style metadata, and full-text search.

Query Parameters

ParameterTypeDefaultDescription
pagenumber1Page number
limitnumber20Results per page
eventTypestring-Event type such as Incident or DepositabilityChange
severitystring-Critical, Warning, or Info
protocolIdstring-Protocol ID
curatorIdstring-Curator ID
chainIdstring-Chain ID
incidentSeveritystring-minor or major
remediationStatusstring-resolved or unresolved
searchstring-Full-text search on title and description
excludeSourcestring-Exclude a source such as peg-monitor
sortBystringoccurred_atSort field
sortOrderstringdescasc or desc
daysBackstringadaptiveLookback window, capped at 730 days

Example

curl "https://api.philidor.io/v1/events?severity=Critical&limit=5"

Response

{
  "data": [
    {
      "id": "42",
      "event_type": "Incident",
      "severity": "Critical",
      "title": "Vault incident",
      "description": "Incident summary",
      "occurred_at": "2026-07-01T12:00:00Z",
      "protocol_id": "morpho",
      "protocol_name": "Morpho",
      "chain_id": 1,
      "chain_name": "Ethereum",
      "curator_id": "gauntlet",
      "curator_name": "Gauntlet",
      "incident_severity": "major",
      "loss_amount_usd": null,
      "remediation_status": "unresolved",
      "links": [],
      "occurrence_count": 1,
      "group_key": "incident:morpho:42"
    }
  ],
  "meta": {
    "page": 1,
    "limit": 5,
    "hasMore": false
  }
}

GET /v1/events/{id}

Get one event with affected vaults.

Path Parameters

ParameterTypeDescription
idstringEvent ID

Example

curl https://api.philidor.io/v1/events/42

Response

{
  "data": {
    "id": "42",
    "event_type": "Incident",
    "severity": "Critical",
    "title": "Vault incident",
    "affected_vaults": [
      {
        "vault_id": "morpho-1-0x...",
        "vault_name": "Gauntlet USDC Core",
        "tvl_usd": 125000000,
        "chain_id": 1,
        "address": "0x..."
      }
    ]
  }
}

GET /v1/events/group/{groupKey}

Return the current representative for a deduped event group. This helps clients recover when a grouped event is retracted.

Example

curl https://api.philidor.io/v1/events/group/rating-change:morpho:2026-06-22

Response

Same shape as a single event list item.


GET /v1/events/stream

Open a public Server-Sent Events stream. No key is required.

The stream sends a ready frame, then event frames named published, promoted, or retracted. Heartbeat comments are sent every 20 seconds by the current implementation. The stream allows up to 5 concurrent connections per IP and returns 429 after that cap.

Query Parameters

ParameterTypeDefaultDescription
vaultIdstring-Optional vault filter

Example

const stream = new EventSource('https://api.philidor.io/v1/events/stream');

stream.addEventListener('published', (event) => {
  const row = JSON.parse(event.data);
  console.log(row.title);
});

Response

event: ready
data: {"vaultId":null}

id: 42
event: published
data: {"id":42,"title":"Vault incident"}

On this page

Raw