API Reference

DOCUMENTATION

Everything you need to integrate StormPull into your application. All endpoints return JSON and require an API key via the Authorization header.

All API requests require your API key in the X-API-Key header. Get your API key from the Dashboard.

curl https://stormpull.com/api/v1/hail/address?address=... \
  -H "X-API-Key: ht_live_your_key_here"
https://stormpull.com/api
GET/v1/hail/address

Look up hail history for a US street address. The address is geocoded automatically and matched against NOAA radar and storm event data.

Parameters

NameTypeRequiredDefaultDescription
addressstringyesFull US street address (e.g. "1234 Main St, Dallas, TX 75201")
radius_milesnumberno1Search radius in miles (max 25). Use 1 for property-level matches; widen for area scans.
years_backnumberno5How many years of history to return (max 10)
min_hail_sizenumberno0.75Minimum hail size in inches to include
include_scorebooleannofalseAppend Storm Exposure Score to response

Example Request

curl "https://stormpull.com/api/v1/hail/address?address=1234+Main+St,+Dallas,+TX+75201&radius_miles=5&years_back=5" \
  -H "X-API-Key: ht_live_your_key_here"

Example Response

{
  "address": {
    "input": "1234 Main St, Dallas, TX 75201",
    "formatted": "1234 Main St, Dallas, TX 75201, USA",
    "lat": 32.7876,
    "lon": -96.7985,
    "confidence": "ROOFTOP"
  },
  "search": {
    "radius_miles": 5,
    "years_back": 5,
    "min_hail_size": 0.75
  },
  "results": {
    "events_found": 12,
    "events": [
      {
        "date": "2024-06-12",
        "hail_size_inches": 1.75,
        "source": "MESH",
        "distance_miles": 0.8,
        "lat": 32.789,
        "lon": -96.801
      }
    ]
  },
  "usage": {
    "lookups_used": 47,
    "lookups_included": 2500,
    "is_overage": false
  }
}
GET/v1/hail/coordinate

Look up hail history for a specific latitude/longitude within CONUS (continental US). Use this when you already have geocoded coordinates.

Parameters

NameTypeRequiredDefaultDescription
latnumberyesLatitude (24 to 50)
lonnumberyesLongitude (-125 to -66)
radius_milesnumberno1Search radius in miles (max 25). Use 1 for property-level matches; widen for area scans.
years_backnumberno5How many years of history to return (max 10)
min_hail_sizenumberno0.75Minimum hail size in inches to include
include_scorebooleannofalseAppend Storm Exposure Score to response

Example Request

curl "https://stormpull.com/api/v1/hail/coordinate?lat=32.7876&lon=-96.7985&radius_miles=3" \
  -H "X-API-Key: ht_live_your_key_here"

Example Response

{
  "coordinates": {
    "lat": 32.7876,
    "lon": -96.7985
  },
  "search": {
    "radius_miles": 3,
    "years_back": 5,
    "min_hail_size": 0.75
  },
  "results": {
    "events_found": 8,
    "events": [
      {
        "date": "2024-06-12",
        "hail_size_inches": 2.0,
        "source": "MESH",
        "distance_miles": 1.2,
        "lat": 32.791,
        "lon": -96.802
      }
    ]
  },
  "usage": {
    "lookups_used": 48,
    "lookups_included": 2500,
    "is_overage": false
  }
}
GET/v1/account/usage

Check your current usage and plan limits. This endpoint does not count as a lookup.

Parameters

NameTypeRequiredDefaultDescription

Example Request

curl "https://stormpull.com/api/v1/account/usage" \
  -H "X-API-Key: ht_live_your_key_here"

Example Response

{
  "plan": "starter",
  "lookups_used": 47,
  "lookups_included": 2500,
  "overage": false,
  "total_api_calls": 156,
  "calls_last_24h": 12
}

Add include_score=true to any hail lookup to receive a computed Storm Exposure Score alongside your event history. No additional lookup is consumed.

The score (0–100) weighs five factors: recent severity, damaging event frequency, peak historical size, long-term frequency, and recency of activity.

Tiers

  • Low (0–24) — Minimal documented hail exposure
  • Moderate (25–49) — Some hail history, limited recent activity
  • High (50–74) — Meaningful hail history with notable events
  • Severe (75–100) — Significant recent and historical hail exposure

Important: Score computation uses all available event history regardless of the years_back or min_hail_size parameters you pass, to ensure consistent and comparable scores across all lookups.

Example Request

curl "https://stormpull.com/api/v1/hail/address?address=1234+Main+St,+Dallas,+TX+75201&include_score=true" \
  -H "X-API-Key: ht_live_your_key_here"

Score Object

"score": {
  "value": 74,
  "tier": "High",
  "tier_color": "#ea580c",
  "factors": {
    "recent_severity_pts": 22,
    "damaging_count_36mo_pts": 16,
    "peak_historical_pts": 20,
    "damaging_frequency_pts": 10,
    "recency_pts": 6
  },
  "summary": {
    "total_events_10yr": 12,
    "damaging_events_10yr": 7,
    "largest_hail_inches": 1.75,
    "largest_hail_date": "2024-06-12",
    "events_last_12mo": 1,
    "events_last_36mo": 4,
    "most_recent_event_date": "2024-06-12",
    "most_recent_hail_inches": 1.75,
    "largest_last_24mo_inches": 1.75,
    "largest_last_24mo_date": "2024-06-12",
    "days_since_last_event": 325
  }
}

Rate limits are enforced per API key based on your plan:

PlanRequests/minLookups/mo
Sandbox10100 total
Starter602,500
Growth12010,000
Scale30040,000

All errors return a JSON body with an error object containing code, message, and docs fields.

{
  "error": {
    "code": "INVALID_API_KEY",
    "message": "API key is missing, revoked, or malformed.",
    "docs": "https://stormpull.com/docs/errors#INVALID_API_KEY"
  }
}
StatusCodeDescription
400INVALID_ADDRESSAddress could not be geocoded with sufficient confidence.
400INVALID_PARAMSA required parameter is missing or invalid.
401INVALID_API_KEYAPI key is missing, revoked, or malformed.
402PAYMENT_REQUIREDAccount over limit with no valid payment method.
429RATE_LIMIT_EXCEEDEDToo many requests per minute for your plan.
500INTERNAL_ERRORInternal server error. Retry with exponential backoff.

MESH (NEXRAD Radar)

  • Maximum Estimated Size of Hail from NOAA NEXRAD
  • ~1km spatial resolution
  • Available from 2020 to present
  • Ingested nightly
  • Precise lat/lon coordinates

Storm Events (NOAA)

  • NOAA's curated severe weather database
  • County-level resolution
  • Available from 1950 to present
  • Updated monthly
  • Includes ground reports and damage data