Developer APIs

Environmental decisions, not raw forecasts

Send coordinates and your operating thresholds. Get back the time windows that meet them, what breaks them, and how good the data is, as JSON built for software and AI agents.

Checking payment status…

Three APIs, one engine

Data-Center Cooling

Forecast periods when outdoor conditions meet your free-cooling requirements.

POST /api/v1/decisions/data-center-cooling

Industrial Coating

Painting and coating windows from temperature, humidity, dew point, precipitation and wind.

POST /api/v1/decisions/industrial-coating

HVAC Economizer

When outdoor air satisfies your economizer efficiency limits, including calculated enthalpy.

POST /api/v1/decisions/hvac-economizer

Forecast screening only. Results compare NOAA/NWS forecasts with the limits you supply. They are not measurements and never state that equipment or work is safe. Missing values are reported as missing, never estimated.

Pricing

$0.01per delivered decision
  • Paid per request in USDC with x402. No account, API key or subscription.
  • You pay only when a decision is delivered. Invalid requests, locations outside coverage and NOAA/NWS outages are not charged.
  • The playground below is free, with a limit on requests per visitor.

Playground

Runs on live NOAA/NWS data, free, up to 48 hours ahead. The example limits are placeholders, so use your own requirements for real decisions.

Your thresholds

Results appear here.

JSON response
{}
Paid request (cURL)

Documentation

Request

FieldRequiredMeaning
latitude, longitudeYesA point in the NOAA/NWS forecast area.
unitsYesus (°F, mph, in, BTU/lb) or si (°C, m/s, mm, kJ/kg). Thresholds and results both use this system.
thresholdsYesYour limits, at least one. Only limits you send are checked, and unknown names are refused.
horizon_hoursNoHours ahead to check, 1 to 168. Default 72.
min_window_hoursNoShortest run of eligible hours to report. Default 1.
include_hourlyNoAlso return the hour-by-hour evaluation.

Response

FieldMeaning
eligibility.statuseligible_now, eligible_later, not_eligible (every hour was checked and no window qualified) or insufficient_data (no window, and some hours could not be checked).
windowsEach suitable period: UTC start and end, length, the range of conditions, and whether it stops only because data ran out.
violationsEach limit that was broken: hours affected, first and last time, and the worst value.
data_qualitygood or degraded, plus forecast age, coverage per variable, calculated values and their methods, and notes.
scopeWhat the result does not cover, limits you did not set, and the disclaimer. safety_determination is always false.

Paying with x402

  1. POST your request. A valid request without payment returns 402 with a base64 PAYMENT-REQUIRED header, and the same object as the body.
  2. Sign the payment with an x402 v2 client, using the exact scheme.
  3. Send the same request with the PAYMENT-SIGNATURE header.
  4. We verify the payment, run the decision, settle, then return 200 with a PAYMENT-RESPONSE header. If settlement fails, the decision is withheld.

Errors

StatusMeaningCharged
400Invalid field, listed in error.detailsNo
402Payment needed or refusedNo
422No NOAA/NWS forecast for the coordinatesNo
429Rate limited, see Retry-AfterNo
503Payments not open, or NOAA/NWS or the payment service unavailableNo

For AI agents