{"openapi":"3.1.0","info":{"title":"Orbital Overview Decisions","version":"1.0.0","description":"Forecast screening from NOAA/NWS against customer thresholds. Results never state that equipment or work is safe.","contact":{"url":"https://orbitaloverview.com/developers"}},"servers":[{"url":"https://orbitaloverview.com"}],"paths":{"/api/v1/decisions/data-center-cooling":{"post":{"operationId":"data_center_cooling_windows","summary":"Data-Center Cooling","description":"Forecast periods when outdoor air meets your free-cooling requirements. Costs $0.01 in USDC per delivered decision via x402.","parameters":[{"name":"PAYMENT-SIGNATURE","in":"header","required":false,"schema":{"type":"string"},"description":"Base64 x402 v2 PaymentPayload. Omit it to receive the payment requirements."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["latitude","longitude","units","thresholds"],"properties":{"latitude":{"type":"number","minimum":-90,"maximum":90,"description":"Latitude in NOAA/NWS forecast coverage."},"longitude":{"type":"number","minimum":-180,"maximum":180,"description":"Longitude in NOAA/NWS forecast coverage."},"units":{"type":"string","enum":["us","si"],"description":"Temperatures in F or C, wind in mph or m/s, precipitation in in or mm, enthalpy in BTU/lb or kJ/kg, following \"units\"."},"horizon_hours":{"type":"integer","minimum":1,"maximum":168,"default":72,"description":"Hours ahead to evaluate, starting with the current hour."},"min_window_hours":{"type":"integer","minimum":1,"maximum":168,"default":1,"description":"Shortest run of consecutive eligible hours to report as a window."},"include_hourly":{"type":"boolean","default":false,"description":"Also return the hour-by-hour evaluation."},"thresholds":{"type":"object","additionalProperties":false,"minProperties":1,"description":"Your operating requirements. Send at least one. Only the limits you send are checked.","properties":{"max_dry_bulb":{"type":"number","description":"Highest acceptable outdoor dry-bulb temperature."},"min_dry_bulb":{"type":"number","description":"Lowest acceptable outdoor dry-bulb temperature."},"max_wet_bulb":{"type":"number","description":"Highest acceptable outdoor wet-bulb temperature (calculated)."},"max_dew_point":{"type":"number","description":"Highest acceptable outdoor dew point."},"min_dew_point":{"type":"number","description":"Lowest acceptable outdoor dew point."},"max_relative_humidity":{"type":"number","description":"Highest acceptable outdoor relative humidity, percent."},"min_relative_humidity":{"type":"number","description":"Lowest acceptable outdoor relative humidity, percent."}}}}},"example":{"latitude":39.0438,"longitude":-77.4874,"units":"us","horizon_hours":72,"min_window_hours":4,"thresholds":{"max_dry_bulb":65,"max_dew_point":59,"min_dew_point":16,"max_relative_humidity":80}}}}},"responses":{"200":{"description":"Decision delivered and payment settled.","content":{"application/json":{"example":{"api":"data-center-cooling","generated_at":"2026-10-30T18:05:00.000Z","location":{"latitude":39.0438,"longitude":-77.4874,"nws_grid":{"office":"LWX","x":86,"y":72},"elevation_m":88,"time_zone":"America/New_York"},"units":"us","eligibility":{"status":"eligible_later","eligible_now":false,"next_window_start":"2026-10-30T23:00:00.000Z","hours_evaluated":72,"hours_eligible":41,"hours_violated":31,"hours_unknown":0,"min_window_hours":4},"windows":[{"start":"2026-10-30T23:00:00.000Z","end":"2026-10-31T14:00:00.000Z","duration_hours":15,"ends_at_missing_data":false,"conditions":{"dry_bulb":{"min":47,"max":64,"unit":"F"}}}],"violations":[{"constraint":"max_dry_bulb","variable":"dry_bulb","requirement":"at most 65 F","hours_violated":31,"first_violation":"2026-10-30T18:00:00.000Z","last_violation":"2026-11-01T20:00:00.000Z","worst_value":71,"worst_time":"2026-10-31T19:00:00.000Z","unit":"F"}],"data_quality":{"status":"good","source":"NOAA/NWS gridpoint forecast (api.weather.gov)","forecast_updated_at":"2026-10-30T17:21:00+00:00","forecast_age_minutes":44,"served_from_stale_cache":false,"coverage":[{"variable":"dry_bulb","hours_available":72,"coverage_pct":100,"derived":false}],"calculated_values":[],"notes":[]},"scope":{"basis":"weather_forecast_only","safety_determination":false,"not_evaluated":["Air quality, particulates and smoke"],"available_but_not_constrained":["wet_bulb"],"disclaimer":"Forecast-based screening against thresholds you supplied."}}}}},"400":{"description":"Invalid request. Not charged."},"402":{"description":"Payment required, or the payment was refused. Read the PAYMENT-REQUIRED header."},"422":{"description":"No NOAA/NWS forecast for these coordinates. Not charged."},"429":{"description":"Rate limited. Not charged."},"503":{"description":"Payments are not open, or NOAA/NWS or the payment service is unavailable. Not charged."}}}},"/api/v1/decisions/industrial-coating":{"post":{"operationId":"industrial_coating_windows","summary":"Industrial Coating","description":"Forecast painting and coating windows from temperature, humidity, dew point, precipitation and wind. Costs $0.01 in USDC per delivered decision via x402.","parameters":[{"name":"PAYMENT-SIGNATURE","in":"header","required":false,"schema":{"type":"string"},"description":"Base64 x402 v2 PaymentPayload. Omit it to receive the payment requirements."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["latitude","longitude","units","thresholds"],"properties":{"latitude":{"type":"number","minimum":-90,"maximum":90,"description":"Latitude in NOAA/NWS forecast coverage."},"longitude":{"type":"number","minimum":-180,"maximum":180,"description":"Longitude in NOAA/NWS forecast coverage."},"units":{"type":"string","enum":["us","si"],"description":"Temperatures in F or C, wind in mph or m/s, precipitation in in or mm, enthalpy in BTU/lb or kJ/kg, following \"units\"."},"horizon_hours":{"type":"integer","minimum":1,"maximum":168,"default":72,"description":"Hours ahead to evaluate, starting with the current hour."},"min_window_hours":{"type":"integer","minimum":1,"maximum":168,"default":1,"description":"Shortest run of consecutive eligible hours to report as a window."},"include_hourly":{"type":"boolean","default":false,"description":"Also return the hour-by-hour evaluation."},"thresholds":{"type":"object","additionalProperties":false,"minProperties":1,"description":"Your operating requirements. Send at least one. Only the limits you send are checked.","properties":{"min_air_temperature":{"type":"number","description":"Lowest acceptable air temperature."},"max_air_temperature":{"type":"number","description":"Highest acceptable air temperature."},"max_relative_humidity":{"type":"number","description":"Highest acceptable relative humidity, percent."},"min_dew_point_spread":{"type":"number","description":"Smallest acceptable gap between air temperature and dew point. This uses air temperature, not surface temperature."},"max_dew_point":{"type":"number","description":"Highest acceptable dew point."},"max_precip_probability":{"type":"number","description":"Highest acceptable probability of precipitation, percent."},"max_precip_amount":{"type":"number","description":"Highest acceptable forecast precipitation in the NWS interval containing the hour."},"max_wind_speed":{"type":"number","description":"Highest acceptable sustained wind."},"max_wind_gust":{"type":"number","description":"Highest acceptable wind gust."}}}}},"example":{"latitude":35.5951,"longitude":-82.5515,"units":"us","horizon_hours":96,"min_window_hours":6,"thresholds":{"min_air_temperature":50,"max_air_temperature":95,"max_relative_humidity":85,"min_dew_point_spread":5,"max_precip_probability":20,"max_wind_speed":15,"max_wind_gust":25}}}}},"responses":{"200":{"description":"Decision delivered and payment settled.","content":{"application/json":{"example":{"api":"industrial-coating","generated_at":"2026-10-30T18:05:00.000Z","location":{"latitude":39.0438,"longitude":-77.4874,"nws_grid":{"office":"LWX","x":86,"y":72},"elevation_m":88,"time_zone":"America/New_York"},"units":"us","eligibility":{"status":"eligible_later","eligible_now":false,"next_window_start":"2026-10-30T23:00:00.000Z","hours_evaluated":72,"hours_eligible":41,"hours_violated":31,"hours_unknown":0,"min_window_hours":4},"windows":[{"start":"2026-10-30T23:00:00.000Z","end":"2026-10-31T14:00:00.000Z","duration_hours":15,"ends_at_missing_data":false,"conditions":{"dry_bulb":{"min":47,"max":64,"unit":"F"}}}],"violations":[{"constraint":"max_dry_bulb","variable":"dry_bulb","requirement":"at most 65 F","hours_violated":31,"first_violation":"2026-10-30T18:00:00.000Z","last_violation":"2026-11-01T20:00:00.000Z","worst_value":71,"worst_time":"2026-10-31T19:00:00.000Z","unit":"F"}],"data_quality":{"status":"good","source":"NOAA/NWS gridpoint forecast (api.weather.gov)","forecast_updated_at":"2026-10-30T17:21:00+00:00","forecast_age_minutes":44,"served_from_stale_cache":false,"coverage":[{"variable":"dry_bulb","hours_available":72,"coverage_pct":100,"derived":false}],"calculated_values":[],"notes":[]},"scope":{"basis":"weather_forecast_only","safety_determination":false,"not_evaluated":["Air quality, particulates and smoke"],"available_but_not_constrained":["wet_bulb"],"disclaimer":"Forecast-based screening against thresholds you supplied."}}}}},"400":{"description":"Invalid request. Not charged."},"402":{"description":"Payment required, or the payment was refused. Read the PAYMENT-REQUIRED header."},"422":{"description":"No NOAA/NWS forecast for these coordinates. Not charged."},"429":{"description":"Rate limited. Not charged."},"503":{"description":"Payments are not open, or NOAA/NWS or the payment service is unavailable. Not charged."}}}},"/api/v1/decisions/hvac-economizer":{"post":{"operationId":"hvac_economizer_windows","summary":"HVAC Economizer","description":"Forecast periods when outdoor air satisfies your economizer efficiency requirements. Costs $0.01 in USDC per delivered decision via x402.","parameters":[{"name":"PAYMENT-SIGNATURE","in":"header","required":false,"schema":{"type":"string"},"description":"Base64 x402 v2 PaymentPayload. Omit it to receive the payment requirements."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["latitude","longitude","units","thresholds"],"properties":{"latitude":{"type":"number","minimum":-90,"maximum":90,"description":"Latitude in NOAA/NWS forecast coverage."},"longitude":{"type":"number","minimum":-180,"maximum":180,"description":"Longitude in NOAA/NWS forecast coverage."},"units":{"type":"string","enum":["us","si"],"description":"Temperatures in F or C, wind in mph or m/s, precipitation in in or mm, enthalpy in BTU/lb or kJ/kg, following \"units\"."},"horizon_hours":{"type":"integer","minimum":1,"maximum":168,"default":72,"description":"Hours ahead to evaluate, starting with the current hour."},"min_window_hours":{"type":"integer","minimum":1,"maximum":168,"default":1,"description":"Shortest run of consecutive eligible hours to report as a window."},"include_hourly":{"type":"boolean","default":false,"description":"Also return the hour-by-hour evaluation."},"thresholds":{"type":"object","additionalProperties":false,"minProperties":1,"description":"Your operating requirements. Send at least one. Only the limits you send are checked.","properties":{"max_dry_bulb":{"type":"number","description":"Highest outdoor dry-bulb temperature for economizer use. For a differential setup, send your return-air temperature minus deadband."},"min_dry_bulb":{"type":"number","description":"Lowest outdoor dry-bulb temperature for economizer use."},"max_enthalpy":{"type":"number","description":"Highest outdoor moist-air enthalpy (calculated). For a differential setup, send your return-air enthalpy minus deadband."},"max_dew_point":{"type":"number","description":"Highest outdoor dew point for economizer use."},"max_relative_humidity":{"type":"number","description":"Highest outdoor relative humidity, percent."}}}}},"example":{"latitude":41.8781,"longitude":-87.6298,"units":"us","horizon_hours":48,"min_window_hours":2,"thresholds":{"min_dry_bulb":40,"max_dry_bulb":65,"max_enthalpy":28,"max_dew_point":55}}}}},"responses":{"200":{"description":"Decision delivered and payment settled.","content":{"application/json":{"example":{"api":"hvac-economizer","generated_at":"2026-10-30T18:05:00.000Z","location":{"latitude":39.0438,"longitude":-77.4874,"nws_grid":{"office":"LWX","x":86,"y":72},"elevation_m":88,"time_zone":"America/New_York"},"units":"us","eligibility":{"status":"eligible_later","eligible_now":false,"next_window_start":"2026-10-30T23:00:00.000Z","hours_evaluated":72,"hours_eligible":41,"hours_violated":31,"hours_unknown":0,"min_window_hours":4},"windows":[{"start":"2026-10-30T23:00:00.000Z","end":"2026-10-31T14:00:00.000Z","duration_hours":15,"ends_at_missing_data":false,"conditions":{"dry_bulb":{"min":47,"max":64,"unit":"F"}}}],"violations":[{"constraint":"max_dry_bulb","variable":"dry_bulb","requirement":"at most 65 F","hours_violated":31,"first_violation":"2026-10-30T18:00:00.000Z","last_violation":"2026-11-01T20:00:00.000Z","worst_value":71,"worst_time":"2026-10-31T19:00:00.000Z","unit":"F"}],"data_quality":{"status":"good","source":"NOAA/NWS gridpoint forecast (api.weather.gov)","forecast_updated_at":"2026-10-30T17:21:00+00:00","forecast_age_minutes":44,"served_from_stale_cache":false,"coverage":[{"variable":"dry_bulb","hours_available":72,"coverage_pct":100,"derived":false}],"calculated_values":[],"notes":[]},"scope":{"basis":"weather_forecast_only","safety_determination":false,"not_evaluated":["Air quality, particulates and smoke"],"available_but_not_constrained":["wet_bulb"],"disclaimer":"Forecast-based screening against thresholds you supplied."}}}}},"400":{"description":"Invalid request. Not charged."},"402":{"description":"Payment required, or the payment was refused. Read the PAYMENT-REQUIRED header."},"422":{"description":"No NOAA/NWS forecast for these coordinates. Not charged."},"429":{"description":"Rate limited. Not charged."},"503":{"description":"Payments are not open, or NOAA/NWS or the payment service is unavailable. Not charged."}}}}}}