Skip to content

Incidents API

The Incidents API provides access to power and network incident data from multiple sources.

GET /incidents

Returns current incidents from all configured data sources.

Query Parameters

Parameter Type Description
start string ISO 8601 timestamp for time window start
end string ISO 8601 timestamp for time window end
source string Filter by source: radar, odin, bgpstream, nws, kentik, caloes
status string Filter by status: ongoing, resolved
severity string Filter by severity: minor, moderate, major
limit number Maximum number of results
offset number Pagination offset

Response

{
  "items": [
    {
      "id": "odin-pge-12345-0",
      "kind": "power",
      "status": "ongoing",
      "startedAt": "2025-01-15T10:30:00Z",
      "endedAt": null,
      "confidence": 0.7,
      "summary": "Power outage in Alameda, CA (utility: PG&E)",
      "region": "Alameda, CA",
      "asn": null,
      "customersAffectedEstimate": 1500,
      "source": "odin",
      "incidentCause": "WEATHER",
      "expectedResolutionTime": "2025-01-15T14:00:00Z",
      "lat": 37.7652,
      "lon": -122.2416
    }
  ]
}

Example

curl "https://ods-api.m-8b1.workers.dev/incidents?status=ongoing&source=odin"
const response = await fetch(
  'https://ods-api.m-8b1.workers.dev/incidents?status=ongoing'
);
const { items } = await response.json();
console.log(`Found ${items.length} incidents`);
import requests

response = requests.get(
    'https://ods-api.m-8b1.workers.dev/incidents',
    params={'status': 'ongoing'}
)
data = response.json()
print(f"Found {len(data['items'])} incidents")

GET /incidents/history

Returns historical incidents from the last 90 days.

Response

Same format as /incidents.

Example

curl https://ods-api.m-8b1.workers.dev/incidents/history

Incident Object

Field Type Description
id string Unique identifier (format: {source}-{detail}-{index})
kind string "power" or "network"
status string "ongoing" or "resolved"
startedAt string ISO 8601 timestamp
endedAt string|null ISO 8601 timestamp or null if ongoing
confidence number Confidence score (0.0 - 1.0)
summary string Human-readable description
region string Geographic region (e.g., "County, State")
asn string|null Autonomous System Number (e.g., "AS13335")
customersAffectedEstimate number|null Estimated affected customers
source string Data source identifier
incidentCause string|null Cause category (e.g., "WEATHER", "BGP_WITHDRAWAL")
expectedResolutionTime string|null Estimated time of restoration
lat number|null Latitude for mapping
lon number|null Longitude for mapping

Confidence Scores

Confidence scores indicate data reliability:

Range Interpretation
0.8 - 1.0 High confidence (curated sources like Radar, Kentik)
0.6 - 0.8 Medium confidence (government data like ODIN, Cal OES)
0.4 - 0.6 Lower confidence (raw feeds like BGP events)