Overview

Storm Evidence Weather API

Query observed severe-weather evidence, forecast guidance, supported catalog values, and Pro weather reports for U.S. addresses and coordinates.

Base URL https://api.getstormevidence.com
Authentication Authorization: Bearer $STORMEVIDENCE_API_KEY
Coverage Supported U.S. severe-weather coverage area
Concept Details
data Successful endpoint payload.
meta.request_id Request identifier for support and debugging.
meta.rate_limit Per-minute limit, remaining requests, and reset timestamp.
meta.lookup_quota Monthly weather lookup usage. Present on observed and forecast lookup responses.
meta.pagination Collection, limit, returned count, next cursor, and whether summary scope is complete or page-level.

AI usage

The public OpenAPI spec includes the customer-facing weather lookup and report routes. Give it to an AI coding assistant to generate typed clients, integration tests, lookup workflows, or report generation flows.

OpenAPI 3.1 Storm Evidence weather API spec /openapi.yml

Example prompt

Using this OpenAPI spec, write a TypeScript function that previews hail and wind report candidates for a U.S. address on an event date, generates a PDF report for selected event IDs, and handles 400, 401, 403, and 429 responses.

Access limits

Plan Lookups Rate Radius Lookup access
Free250/mo10/min5 miCurrent-day lookup. No date, hour, time range, or forecast archive selectors.
Basic10k/mo50/min10 miDate-level observed and forecast lookup.
Pro100k/mo100/min25 miHour-level lookup, explicit time ranges, forecast archive selectors, and 100 reports/month.
EnterpriseCustomCustomCustomCustom lookup and report volume.

Endpoint

GET /v1/weather/observed

Returns observed severe-weather evidence near a coordinate or geocoded U.S. address.

Query parameters

Parameter Type Details
latnumberRequired with lng when address is omitted. Valid range: -90 to 90.
lngnumberRequired with lat when address is omitted. Valid range: -180 to 180.
addressstringRequired when coordinates are omitted. Coordinates take precedence when both are supplied.
datedateYYYY-MM-DD in timezone. Defaults to current local day. Cannot be combined with start_time/end_time.
hourstringHH:00. Requires date. Forward-looking hour; 04:00 covers 04:00 to before 05:00.
start_timedate-timeExplicit observed-window start. Requires end_time. ISO 8601.
end_timedate-timeExplicit observed-window end. Requires start_time. Must be after start. Max observed window is 31 days.
timezonestringIANA timezone used for date and hour. Default: UTC.
radius_milesnumberPositive lookup radius in miles. Default: 1. Plan limits apply.
radiusnumberAlias for radius_miles. Prefer radius_miles.
perilsstringComma-separated subset of hail, rain, wind, tornado. Default: all.
providersstringComma-separated subset of mrms, spc, lsr, storm_events, warnings.
productsstringComma-separated observed product IDs. Defaults from selected perils and time granularity.
includestringComma-separated subset of summary, events, evidence. Default: summary,events.
limitintegerPage size for evidence. Default/max: 500.
cursorstringOpaque cursor from meta.pagination.next_cursor. Cursor requests may include only cursor and the same limit.
Observed time windows

start_time/end_time define an explicit search window. Hourly or daily raster products are returned when their valid window overlaps the request, so a partial-hour search can still return the enclosing hourly artifact with its own valid_start and valid_end.

Response attributes

Attribute Type Details
data.queryobjectEndpoint, resolved location, window, radius, perils, providers, and products.
data.summaryobjectReturned when included. Counts, detected perils, providers, max values, and rotation context.
data.events[]arrayGrouped weather incidents with peril, start/end, confidence, providers, nearest distance, and evidence IDs.
data.evidence[]arrayReturned when included. Source-level evidence rows that support events.
meta.lookup_quotaobjectMonthly lookup quota state.
meta.paginationobjectPagination metadata for the evidence collection.

Response objects

query

FieldTypeDetails
endpointstringEndpoint that handled the request.
locationobjectResolved location input with type, latitude, longitude, and address details when supplied.
windowobjectResolved observed time window, timezone, and granularity.
radius_milesnumberLookup radius used for point, report, and raster matching.
perilsarrayResolved peril filters used by the lookup.
providersarrayResolved provider filters used by the lookup.
productsarrayResolved product filters used by the lookup.

summary

FieldTypeDetails
has_observed_weatherbooleanWhether the lookup found observed evidence.
event_countintegerNumber of grouped events.
evidence_countintegerNumber of source evidence rows.
perils_detectedarrayPerils represented in the response.
providersarrayProviders represented in the response.
max_valuesobjectLargest measurement by peril, keyed by peril ID.
rotation_context_detectedbooleanWhether rotation-context evidence was detected.

value

FieldTypeDetails
valuenumberPrimary measurement value.
unitsstringMeasurement units, such as inches or mph.
aggregationstringAggregation used for raster samples, such as max or sum.
minnumberOptional minimum raster sample value.
maxnumberOptional maximum raster sample value.
sumnumberOptional sum of raster sample values.
sampled_cell_countintegerOptional count of sampled raster cells.
valid_cell_countintegerOptional count of valid sampled raster cells.

events[]

FieldTypeDetails
idstringEvent identifier within the response.
perilstringPrimary peril represented by the event.
event_startdate-timeEvent start time.
event_enddate-timeEvent end time.
max_valueobjectLargest measurement associated with the event.
confidencestringConfidence label for the grouped event.
providersarrayProviders supporting the event.
evidence_idsarrayEvidence row IDs included in the event.

evidence[]

FieldTypeDetails
idstringEvidence row ID.
event_idstringGrouped event ID.
providerstringProvider display name.
sourcestringProduct or feed source.
perilstringPeril represented by the evidence row.
evidence_typestringEvidence classification.
confidence_tierstringConfidence tier when available.
observed_atdate-timeObservation timestamp when available.
valid_startdate-timeStart of the source validity window.
valid_enddate-timeEnd of the source validity window.
valueobjectNested measurement details.
location_matchobjectNested location matching details.
qualityobjectNested artifact quality details when available.
artifactobjectNested raster artifact reference when available.

location_match

FieldTypeDetails
match_typestringHow the source matched the request, such as within radius or raster radius.
distance_milesnumberDistance from the requested point when applicable.
radius_milesnumberSearch radius used for matching.

quality

FieldTypeDetails
completeness_statusstringWhether the raster artifact is complete or partial.
quality_statusstringQuality state of the source artifact.
generation_statusstringArtifact generation state.

artifact

FieldTypeDetails
idstringRaster artifact identifier.
productstringObserved product ID.
versionstringArtifact schema or generation version.

Endpoint

GET /v1/weather/forecast

Returns forecast model guidance and outlook polygons for a location and valid time.

Query parameters

Parameter Type Details
latnumberRequired with lng when address is omitted. Valid range: -90 to 90.
lngnumberRequired with lat when address is omitted. Valid range: -180 to 180.
addressstringRequired when coordinates are omitted. Coordinates take precedence when both are supplied.
datedateYYYY-MM-DD in timezone. Cannot be combined with valid_start/valid_end.
hourstringHH:00. Requires date. Returns a one-hour valid window.
valid_startdate-timeExplicit forecast valid-window start. Requires valid_end. ISO 8601.
valid_enddate-timeExplicit forecast valid-window end. Requires valid_start.
timezonestringIANA timezone used for date and hour. Default: UTC.
as_ofdate-timeLatest forecast available at or before this timestamp. Cannot be combined with run_time or issued_at.
run_timedate-timeSelect a specific model run. Requires forecast_sources=models if sources are supplied.
issued_atdate-timeSelect a specific outlook issue time. Requires forecast_sources=outlooks if sources are supplied.
forecast_sourcesstringComma-separated subset of models, outlooks. Default: both.
radius_milesnumberPositive lookup radius in miles. Default: 1. Plan limits apply.
radiusnumberAlias for radius_miles. Prefer radius_miles.
perilsstringComma-separated subset of hail, rain, wind, tornado. Default: all.
providersstringComma-separated subset of noaa, spc, wpc.
modelsstringComma-separated subset of hrrr, nbm. Applies to model guidance.
productsstringComma-separated forecast product IDs. Defaults from selected filters.
include_generalbooleanInclude broad convective products. Default: false.
includestringComma-separated subset of summary, forecasts. Default: both.
limitintegerPage size for forecasts. Default/max: 500.
cursorstringOpaque cursor from meta.pagination.next_cursor. Cursor requests may include only cursor and the same limit.

Response attributes

Attribute Type Details
data.queryobjectEndpoint, location, valid window, forecast selection, radius, sources, providers, models, and products.
data.summaryobjectReturned when included. Counts, providers, models, perils, max probabilities, max values, and context values.
data.forecasts[]arrayForecast model samples and outlook polygons matching the request.
meta.lookup_quotaobjectMonthly lookup quota state.
meta.paginationobjectPagination metadata for the forecasts collection.

Response objects

query

FieldTypeDetails
endpointstringEndpoint that handled the request.
locationobjectResolved location input with type, latitude, longitude, and address details when supplied.
valid_windowobjectForecast valid period and timezone.
forecast_timeobjectAs-of, run-time, or issue-time selection used by the lookup.
forecast_sourcesarrayResolved forecast source filters used by the lookup.
providersarrayResolved provider filters used by the lookup.
modelsarrayResolved model filters used by the lookup.
perilsarrayResolved peril filters used by the lookup.
productsarrayResolved product filters used by the lookup.

summary

FieldTypeDetails
has_forecast_guidancebooleanWhether the lookup found forecast guidance.
forecast_countintegerNumber of returned forecast rows.
providersarrayForecast providers represented in the response.
modelsarrayForecast models represented in the response.
perilsarrayPerils represented in the response.
max_probabilitiesobjectHighest forecast probability by peril or broader forecast family.
max_valuesobjectLargest sampled model values when available.
context_valuesobjectAdditional context values when available.

value

FieldTypeDetails
valuenumberForecast probability or sampled model value.
unitsstringValue units, such as percent, inches, or mph.
sourcestringSource product for summary values when present.
aggregationstringRaster aggregation when a model field is sampled.

forecasts[]

FieldTypeDetails
idstringForecast row identifier.
providerstringForecast provider display name.
sourcestringForecast source group.
productstringForecast product ID.
forecast_typestringForecast representation, such as model raster or outlook polygon.
forecast_kindstringForecast kind, such as probability or categorical outlook.
perilstringPeril represented by the forecast row.
categorystringForecast risk category when available.
probabilitynumberForecast probability when available.
thresholdstringForecast threshold label when available.
issued_atdate-timeForecast issue time.
valid_startdate-timeForecast valid period start.
valid_enddate-timeForecast valid period end.
lead_time_hoursnumberLead time from issuance to valid period.
valueobjectNested forecast value details.
location_matchobjectNested location matching details.
qualityobjectNested artifact quality details when available.
artifactobjectNested raster artifact reference when available.

location_match

FieldTypeDetails
match_typestringHow the forecast matched the request, such as polygon containment or raster sampling.
distance_milesnumberDistance from the requested point when applicable.
radius_milesnumberSearch radius used for model raster sampling.

quality

FieldTypeDetails
completeness_statusstringWhether the model artifact is complete or partial.
quality_statusstringQuality state of the model artifact.
generation_statusstringArtifact generation state.

artifact

FieldTypeDetails
idstringModel raster artifact identifier.
productstringForecast product ID.
versionstringArtifact schema or generation version.

Endpoint

GET /v1/weather/catalog

Returns supported perils, providers, models, products, include values, and pagination defaults.

Query parameters

Parameter Details
NoneAPI-key authenticated and rate limited. Does not consume monthly lookup quota.

Response attributes

Attribute Type Details
data.perils[]arraySupported peril identifiers and labels.
data.observed.providers[]arrayObserved provider IDs, labels, and descriptions.
data.observed.products[]arrayObserved product IDs with peril, evidence type, granularity, and aggregation.
data.forecast.sources[]arrayForecast source groups.
data.forecast.providers[]arrayForecast provider IDs, labels, and descriptions.
data.forecast.models[]arraySupported forecast model identifiers.
data.forecast.products[]arrayForecast product IDs with source, provider, peril or broader forecast family, forecast kind, and general flag.
data.queryobjectSupported include values and pagination defaults.

Response objects

perils[]

FieldTypeDetails
idstringPeril identifier used in request filters.
labelstringHuman-readable peril label.

providers[]

FieldTypeDetails
idstringProvider filter value.
labelstringProvider display name.
descriptionstringShort explanation of the feed or provider family.

observed.products[]

FieldTypeDetails
idstringObserved product identifier.
labelstringObserved product display name.
providerstringProvider associated with the product.
perilstringPeril associated with the product.
evidence_typestringEvidence classification returned by observed lookups.
granularitystringProduct time granularity.
aggregationstringProduct aggregation behavior.

forecast.sources[]

FieldTypeDetails
idstringSource group filter value, such as models or outlooks.
labelstringHuman-readable source group label.
descriptionstringExplanation of the forecast source group.

forecast.models[]

FieldTypeDetails
idstringModel filter value.
labelstringModel display name.
providerstringProvider family for the model.

forecast.products[]

FieldTypeDetails
idstringForecast product identifier.
labelstringForecast product display name.
providerstringProvider associated with the product.
sourcestringForecast source group.
modelstringForecast model when applicable.
perilstringPeril associated with the product.
hazard_familystringBroader forecast family when applicable.
forecast_typestringForecast representation.
forecast_kindstringForecast kind.
generalbooleanWhether the product is broad contextual guidance rather than a peril-specific filter.

query

FieldTypeDetails
includeobjectSupported include values for observed and forecast endpoints.
paginationobjectDefault and maximum pagination limits.

Reports

Generate customer-ready weather evidence PDFs

Pro and Enterprise accounts can preview report candidates, select the events that belong in the final packet, generate a customer-ready PDF, and retrieve report metadata through API-key authenticated endpoints.

Report workflow

Preview first when you want user control over the final PDF. Date-of-loss preview uses daily radar artifacts for speed; generated reports use hourly radar artifacts for final precision. Send selected candidate IDs back with the preview_token so unselected events stay out of the PDF. The final report can contain fewer selected events when hourly evidence does not confirm a daily preview match inside the selected 24-hour window.

Availability and quota

PlanReport accessMonthly reportsNotes
FreeNo0Upgrade required.
BasicNo0Upgrade required.
ProYes100Dashboard and API-key report generation.
EnterpriseYesCustomCustom report volume and operational requirements.

Endpoint

POST /v1/weather/reports/preview

Returns normalized query details, report quota metadata, coverage context, and selectable candidate events. Preview does not create a PDF.

Request fieldTypeDetails
report_typestringUse date_of_loss for the dashboard-style single-date workflow. property_history remains available for API callers.
addressstringRequired when coordinates are omitted.
lat / lngnumberOptional coordinate input. Coordinates take precedence when supplied.
loss_datedateRequired for date_of_loss. Format: YYYY-MM-DD.
timezonestringIANA timezone for date interpretation and local PDF timestamps.
perilsarraySubset of hail, wind, and tornado. Default: all report perils.
radius_milesnumberSearch radius. Plan limits apply.
include_forecast_contextbooleanIncludes forecast context rows when the plan allows forecast archive access.
claim_referencestringOptional report reference. Maximum 120 characters.
insured_or_customer_namestringOptional customer or project name. Maximum 160 characters.
private_notesstringOptional internal note. Accepted on requests but not returned in report query payloads or PDFs.

Endpoint

POST /v1/weather/reports

Starts asynchronous generation for the immutable report snapshot and PDF. Include the preview_token and selected candidate IDs when the user chose events from preview. Supplying a preview token with an empty selection preserves an empty report instead of adding newly found hourly events. Poll the report detail endpoint until status is ready or failed.

Selected events

selected_event_ids must reference candidates from the preview response. For date-of-loss reports, preview candidates use daily radar artifacts and generated PDFs use hourly radar artifacts, so the final report may include fewer selected events when hourly evidence does not confirm a preview match inside the selected 24-hour window.

Retrieve reports and PDFs

EndpointReturnsNotes
GET /v1/weather/reports/{id}Report metadata and, when ready, the stored snapshot.Poll no faster than poll_after_seconds while status is processing.
GET /v1/weather/reports/{id}/pdfThe generated report PDF.Returns application/pdf when ready, 409 report_processing while generating, and 409 report_failed after failed generation.

Endpoint

GET /v1/weather/reports/{id}

Returns report metadata and, for ready reports, may include the stored immutable snapshot used to generate the PDF.

Response objects

query

FieldDetails
display_addressResolved customer-facing location label.
coarse_display_addressCoarser location label used for summary displays.
window_start / window_endUTC report search window after date/timezone normalization.
radius_bands_milesRadius bands used for report evidence summaries.
selected_event_idsCandidate IDs selected for the final report when preview selection is used. Date-of-loss examples use stable IDs such as candidate_2026-05-20_hail.

report

FieldDetails
statusready, processing, failed, or deleted.
links.pdfPDF download path when the report is ready.
snapshotIncluded on detail responses when the ready report snapshot is available.
error_code / error_messagePresent when generation failed.

Providers

Provider acronyms and meaning

Provider fields identify the source family behind a result. They are useful for interpreting confidence, not for treating any single row as definitive proof of property-level conditions.

Observed data

API value Provider or feed What it means Interpretation
mrms MRMS, Multi-Radar/Multi-Sensor System Radar-derived raster estimates for hail, precipitation, and low-level rotation. Best used as gridded weather evidence near a point or radius. It is a radar-derived estimate, not a direct observation at every property.
spc SPC, Storm Prediction Center Severe-weather point reports and convective forecast outlook products. Point reports are strong observed context near the report location. Outlooks are forecasts, not observations.
lsr NWS Local Storm Reports Local storm reports from National Weather Service offices. Reports can corroborate observed conditions, but coverage is sparse and reporting-biased.
storm_events NOAA Storm Events Official historical severe-weather event records. Useful for historical context. Records may be lagged and often describe county or zone-level events.
warnings NWS warning polygons Warning polygons for severe thunderstorm, tornado, flash flood, and related perils. Indicates warning context for an area. It does not prove the peril occurred at every point inside the polygon.

Forecast data

Forecast source groups

models are gridded model forecasts sampled at the requested point or radius, such as HRRR and NBM. outlooks are forecast risk polygons that cover the requested location, such as SPC convective outlooks and WPC excessive rainfall outlooks.

API value Provider or model What it means Interpretation
noaa NOAA, National Oceanic and Atmospheric Administration Parent provider for selected forecast model guidance. Use with model and product fields to understand the specific forecast artifact being sampled.
hrrr HRRR, High-Resolution Rapid Refresh Hourly high-resolution model guidance for hail, rain, gusts, and rotation context. Represents model guidance for a valid time. It is forecast data, not observed weather.
nbm NBM, National Blend of Models Blended forecast model guidance for rainfall, wind gusts, and thunder probability. Useful for probabilistic or blended guidance. It should be interpreted as forecast risk or guidance.
spc SPC, Storm Prediction Center Convective outlook polygons for hail, wind, tornado, and broad severe-weather risk. Indicates forecast risk over a valid period. It does not mean the peril occurred.
wpc WPC, Weather Prediction Center Excessive rainfall outlook polygons. Indicates forecast rainfall risk categories for the valid period, not measured rainfall totals.

Supported values

Filters

Call GET /v1/weather/catalog for dynamic filter values.

Observed products
ProductPerilGranularityAggregation
hail_hourly_maxhailhourmax
hail_daily_maxhaildaymax
rain_hourly_totalrainhourmax
rain_daily_totalraindaymax
rotation_low_hourly_maxtornadohourmax
rotation_low_daily_maxtornadodaymax
Forecast products
ProductSourcePeril or family
hrrr_hail_hourly_maxmodelshail
hrrr_rain_hourly_totalmodelsrain
hrrr_gust_hourly_maxmodelswind
hrrr_rotation_hourly_maxmodelstornado context
nbm_rain_hourly_totalmodelsrain
nbm_gust_hourly_maxmodelswind
nbm_thunder_probabilitymodelsconvective
spc_hail_probabilityoutlookshail
spc_hail_significant_probabilityoutlookshail
spc_hail_conditional_intensityoutlookshail
spc_wind_probabilityoutlookswind
spc_wind_significant_probabilityoutlookswind
spc_wind_conditional_intensityoutlookswind
spc_tornado_probabilityoutlookstornado
spc_tornado_significant_probabilityoutlookstornado
spc_tornado_conditional_intensityoutlookstornado
spc_categorical_outlookoutlooksconvective
spc_severe_probabilityoutlooksconvective
spc_severe_significant_probabilityoutlooksconvective
spc_severe_conditional_intensityoutlooksconvective
wpc_excessive_rainfall_outlookoutlooksrain

Errors

Error envelope

Errors return error.code, error.message, and meta.request_id.

StatusCommon codesMeaning
400invalid_query, invalid_cursor, query_too_broadQuery parameters are invalid or too broad.
401unauthorizedMissing or invalid API key.
403access_deniedThe active plan does not allow the lookup.
422unsupported_location, geocode_failedThe location could not be used.
429rate_limited, lookup_quota_exceededRate limit or monthly quota exceeded.
400invalid_report_request, invalid_preview_tokenReport request fields are invalid or selected event IDs do not match the preview.
404report_not_foundThe report does not exist, is not ready, or is not available to the API key.
429report_quota_exceededMonthly report quota exceeded.
500weather_query_failed, pagination_failedLookup failed after the request was accepted.
503rate_limiter_unavailable, rate_limit_unavailableA required platform service is unavailable.