Skip to contentCALCHIS

API Documentation

Calchis API v1 provides programmatic access to US catastrophe intelligence. All event output is OGC-compliant GeoJSON. All coordinates WGS84. All timestamps UTC ISO 8601. Hazard score endpoints support ?format=oasis for OASIS LMF integration.

Get started in 5 minutes

1

Create a free account

Sign up at calchis.com/pricing to get started. Live event feeds and consequence rings need no key. Hazard scores need a free API key or a signed-in session, and the free tier allows 100 score lookups a day.

2

Get your API token

Sign in with your email (magic link) to receive a JWT access token. Pass it as a Bearer token in the Authorization header for protected endpoints. Any account, free included, can create API keys for server-to-server calls to the hazard score endpoints, the bulk export and the ILS read endpoints.

3

Make your first request

Fetch all active US disaster events as GeoJSON. No authentication required.

curl -s "https://calchis.com/api/v1/events/live" \
  -H "Accept: application/json" | jq .

Code Examples

Get hazard score for a location

GET /api/v1/risk/score — Returns multi-peril hazard scores with full score component breakdown, every relevant peril on every plan. Daily quota: 100 requests free, 10,000 Analyst, 100,000 Team or Agency, uncapped Institutional or Enterprise.

curl -s "https://calchis.com/api/v1/risk/score?lat=29.76&lng=-95.37&perils=hurricane" \
  -H "Authorization: Bearer YOUR_TOKEN" | jq .

Export in OASIS LMF format

GET /api/v1/risk/score?format=oasis — Same endpoint, OASIS Loss Modeling Framework output. Compatible with Moody's RMS and Verisk integration pipelines. Available wherever the score is.

curl -s "https://calchis.com/api/v1/risk/score?lat=29.76&lng=-95.37&perils=hurricane&format=oasis" \
  -H "Authorization: Bearer YOUR_TOKEN" -o hazard_score.json

Create an ILS parametric trigger

POST /api/v1/triggers — Monitor cat bond positions against live event data. Threshold types: wind speed (kt), storm surge (ft), magnitude, gauge stage (ft) and wildfire containment failure (%). Industry-loss thresholds are not offered: Calchis carries no PCS or PERILS index. Triggers per plan: Explorer (free) 3, Analyst 10, Team 500, Agency 100, Institutional or Enterprise unlimited.

curl -X POST "https://calchis.com/api/v1/triggers" \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Gulf Hurricane CAT3+ Monitor",
    "peril": "hurricane",
    "lat": 29.76,
    "lng": -95.37,
    "radius_km": 200,
    "threshold_type": "wind_speed",
    "threshold_value": 96,
    "threshold_unit": "kt",
    "alert_at_pct": 80,
    "notes": "Alert when a storm reaches 80% of CAT3 threshold within 200km of Houston"
  }'

Base URL

https://calchis.com/api/v1

Authentication

Public endpoints (no auth required)

Live events and consequence rings are available without authentication, rate limited to 60 requests/minute by IP. Hazard scores are not public: they need an API key or a session, with a daily quota by plan (free: 100 a day).

Bearer token (every plan)

After signing in, include your session’s access token in every request to protected endpoints. Creating or changing triggers and positions, and the cat bond catalog, take this token only.

Authorization: Bearer eyJhbGciOiJIUzI1NiIs...

API keys (every plan)

Server-to-server API keys are available on every plan, the free one included (100 calls a day). A key reads what its owner can read: hazard scores, your triggers and their history, backtests and forecasts, the ILS dashboard, positions and alerts, and portfolio EP curves, loss and export. Keys are read-only: creating or changing triggers and positions needs a signed-in session, and the cat bond catalog is not available by key. Generate keys from your API key settings. Pass them as Bearer tokens.

Authorization: Bearer YOUR_API_KEY

Rate Limits

All API routes use sliding-window rate limiting. Rate limit headers X-RateLimit-Remaining and X-RateLimit-Reset are included on every response. Exceeding the limit returns 429 with a Retry-After header.

Free60 req/min
Analyst · Agency300 req/min
ILS Team600 req/min
Institutional · Enterprise1,000 req/min

Response Format

Event feeds return OGC-compliant GeoJSON FeatureCollections. Each feature includes a Point geometry (WGS84 coordinates as [lng, lat]) and a properties object with event metadata, severity, status, and source provenance.

Sample response from /api/v1/events/live
{
  "type": "FeatureCollection",
  "features": [
    {
      "type": "Feature",
      "geometry": {
        "type": "Point",
        "coordinates": [-118.2437, 34.0522]
      },
      "properties": {
        "id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
        "title": "M5.2 Earthquake — Los Angeles, CA",
        "event_type": "earthquake",
        "severity": 5.2,
        "severity_label": "M5.2 MODERATE",
        "status": "active",
        "started_at": "2026-03-20T14:23:00Z",
        "source": "usgs",
        "source_url": "https://earthquake.usgs.gov/earthquakes/eventpage/ci12345678",
        "confidence_score": 1.0,
        "slug": "m52-earthquake-los-angeles-ca-2026-03-20"
      }
    }
  ]
}

Events

Live US multi-peril disaster event feeds

GET/api/v1/events/livepublic
GET/api/v1/events/{id}public
GET/api/v1/events/{id}/ringspublic
GET/api/v1/events/{id}/footprintspublic
GET/api/v1/events/nearbypublic

Analysis

Deterministic event analysis, predictions, and timelines

GET/api/v1/events/{id}/predictionanalyst
GET/api/v1/events/{id}/timelineagency
GET/api/v1/events/{id}/exposureanalyst
GET/api/v1/events/{id}/briefinganalyst
GET/api/v1/events/{id}/ics209agency

Scenarios

What-if scenario planning for tabletop exercises and preparedness

POST/api/v1/scenarios/runanalyst

Infrastructure

HIFLD critical infrastructure (hospitals, fire stations, schools, EMS)

GET/api/v1/infrastructurepublic

Scoring

Multi-peril hazard scores with full methodology transparency

GET/api/v1/risk/scorepublic
GET/api/v1/events/{id}/scorepublic

Portfolio

Portfolio management and exposure analysis

GET/api/v1/portfolioagency
POST/api/v1/portfolioagency
GET/api/v1/portfolio/exposureagency
POST/api/v1/portfolio/ep-curveanalyst

Triggers

ILS parametric trigger monitoring for cat bond positions

GET/api/v1/triggersagency
POST/api/v1/triggersagency
GET/api/v1/triggers/{id}/historyagency

Locations

Saved locations with alerting and exposure checking

GET/api/v1/locationspublic
POST/api/v1/locationspublic
GET/api/v1/locations/exposurepublic
GET/api/v1/locations/alertspublic

MCP server for agents

Calchis is also a Model Context Protocol tool server, so your own agent can call it: JSON-RPC 2.0 over the Streamable HTTP transport at POST /api/v1/mcp. Calchis calls no model — yours is the only one in the loop. Every message needs an API key; each tool call counts once against the same daily quota as the REST API, and a call refused for its arguments or its plan is not counted.

score_location

lat/lng or a US address → hazard scores with every component (as /risk/score)

event_footprints

event id → observed and modeled footprints, labeled by kind

portfolio_ep_curve

one of your portfolios → modeled EP curve (Analyst plan or higher)

verify_determination

determination record → verification result

list_active_events

active events, optional bbox and event-type filter

Client configuration (any MCP client with HTTP transport)
{
  "mcpServers": {
    "calchis": {
      "type": "http",
      "url": "https://calchis.com/api/v1/mcp",
      "headers": { "Authorization": "Bearer cs_live_YOUR_KEY" }
    }
  }
}

Errors are JSON-RPC errors, never an HTTP 500: -32602 unknown tool or bad arguments, -32001 missing or invalid key (HTTP 401), -32002 daily quota spent (with reset_at), -32003 plan does not include the tool (with upgrade_to), -32004 not found. Scores are hazard scores, not risk scores; footprints are labeled observed or modeled on every feature. Full contract in docs/openapi.yaml under /mcp.

Output Formats

JSON (default)

All responses default to JSON. Event feeds use OGC-compliant GeoJSON FeatureCollection format.

OASIS LMF

Add ?format=oasis to scoring endpoints for OASIS Loss Modeling Framework output. Compatible with Moody's RMS and Verisk platforms.

OASIS LMF v2.5.0 Compatible · Portfolio export on Team, Agency and higher

OpenAPI Specification

Full OpenAPI 3.0.3 specification with request/response schemas, authentication, and parameter documentation. Available for import into Postman, Swagger UI, or automated client generation.

Download it at calchis.com/docs/openapi.yaml. It is generated from the same file the test suite checks against every route.

Method documents

The document behind each record, served as written from the repository at /docs/<name>.md. Each states what the record holds, how it is computed, and what it does not say.

The record

What Calchis keeps rather than computes: every federal product as received, and the records derived from it with provenance on every row. These are the endpoints a data team integrates first; the integration quickstart walks the manifest, a day of the export, verifying a body against the archive and the public ledger, and citing a month of the revision record. All are public and read without a key, except the bulk export, which takes any account’s key and counts one call per page. Each record’s method is a document at /docs/<name>.md (listed below under the OpenAPI section); the datasets and their record= names are on /data.

EndpointReturnsMethod
GET /api/v1/archive/summaryThe as-issued archive's counts by source: bodies, polls, first and last receipt.as-issued-archive.md
GET /api/v1/archive/products/{sha256}One archived product by the hash of its body: source, issued and received times, source URL, the body.as-issued-archive.md
GET /api/v1/archive/continuity?month=The interval between consecutive reads of each feed, the longest gap, and a status per source — the archive's own continuity, measured.as-issued-archive.md
GET /api/v1/archive/export?record=&day= (key)Bulk NDJSON of any record, one UTC day per page by primary-key cursor; /archive/export/manifest names the records with counts and spans.archive-export.md
GET /api/v1/verification/warning-exposure?month=The 2020 housing under every NWS warning polygon at issuance, with the issue-to-receipt and receipt-to-compute lags.warning-exposure.md
GET /api/v1/verification/footprint-exposure?month=&kind=The same figure for every SPC Day 1 outlook category polygon and every NIFC fire perimeter version.footprint-exposure.md
GET /api/v1/verification/tornado-warnings?month=The warning performance ledger: every surveyed tornado track against the warning in effect at touchdown.warning-ledger.md
GET /api/v1/verification/revisions?month=What the USGS feed said first against what it settled on, by magnitude band and threshold; /revisions/extract serves the frozen monthly CSV with its sealed id.revision-record.md
GET /api/v1/verification/reference-determinations?month=Every reference determination read on the public catalog at receipt; /{cdt2-id} returns one with its evidence and inclusion proof; /history replays each structure's terms over the record.reference-determinations.md
GET /api/v1/events/{id}/outcomeThe event joined to its FEMA declarations, the dollars under them, and what agencies measured afterward.event-outcomes.md
GET /api/v1/determinations/logThe daily Merkle digests; /determinations/{id}/proof returns an inclusion proof; /determinations/anchors?period= the independent timestamp of each root.digest-anchoring.md
GET /api/v1/status/availability?month=Every feed outage as the platform saw it, paired from the failed/recovered transitions, with availability per source.source-availability.md
GET /api/v1/storms?season= · /storms/{atcf_id}/advisoriesNHC's operational advisory record since 1998 as issued (positions, radii, official forecasts by lead time), marked backfilled; 404 loaded:false until the load has reached a season.historical-advisories.md

Walk a day of the bulk export: request ?record=warning-exposures&day=2026-11-05, read rows until the response carries no X-Next-After header, and pass that header back as &after= until it does. Every row is the table’s own columns; nothing is renamed on the way out.

Data Standards

Coordinate SystemWGS84 (EPSG:4326)
TimestampsUTC ISO 8601
Event OutputOGC-compliant GeoJSON
Field NamingACORD-compatible on insurance outputs
Score Format0.00–10.00 with score_components JSONB
Source Provenancesource + source_url + ingested_at on every record
View PricingScoring Methodology

API access is subject to rate limits and subscription tier. For situational awareness and decision support only — not a primary alerting or dispatch system. Verify against official sources before operational use.