{"openapi":"3.1.0","info":{"title":"HVAC Air-Side Load API","version":"1.0.0","description":"HVAC air-side heat maths as an API, computed locally and deterministically with the classic standard-air factors — the sensible, latent and airflow numbers a mechanical engineer or HVAC technician sizes ducts and equipment with. The sensible endpoint gives the sensible heat an airflow carries to change temperature: Qs = 1.08 × CFM × ΔT (dry-bulb difference), where the 1.08 bundles standard-air density and specific heat — 2,000 CFM across a 20 °F difference is 43,200 BTU/hr, 3.6 tons — with the result in BTU/hr, tons and kW. The latent endpoint gives the latent (moisture) heat: Ql = 0.68 × CFM × ΔW, where ΔW is the humidity-ratio difference in grains of water per pound of dry air, the dehumidification part of a cooling load that runs high in humid climates and from people and cooking, and why air conditioners are sized on total, not just temperature. The airflow endpoint inverts the sensible relation: CFM = sensible load ÷ (1.08 × ΔT), the supply air needed at a chosen supply-to-room temperature difference (comfort cooling runs ~18–22 °F below room), the number that sets fan and duct size — sanity-checked against ~400 CFM per ton. Everything is computed locally and deterministically, so it is instant and private. Ideal for HVAC-design and load-calc tools, mechanical-estimating and commissioning utilities, and building-engineering apps. Pure local computation — no key, no third-party service, instant. Standard-air factors — adjust for altitude. 3 compute endpoints. For room rule-of-thumb sizing use an HVAC API; for moist-air properties a psychrometric API; for duct sizing a ductwork API.","contact":{"name":"PremiumApi","url":"https://www.oanor.com/by/premiumapi"}},"servers":[{"url":"https://api.oanor.com/hvacload-api","description":"oanor gateway"}],"tags":[{"name":"Load"},{"name":"Meta"}],"components":{"securitySchemes":{"oanorKey":{"type":"apiKey","in":"header","name":"x-oanor-key","description":"Get your key at https://www.oanor.com/developer/keys"}}},"security":[{"oanorKey":[]}],"paths":{"/v1/airflow":{"get":{"operationId":"get_v1_airflow","tags":["Load"],"summary":"Airflow required for a sensible load","description":"","parameters":[{"name":"sensible_btu_hr","in":"query","required":true,"description":"Sensible load (BTU/hr)","schema":{"type":"string"},"example":"43200"},{"name":"delta_t_f","in":"query","required":true,"description":"Supply temperature difference (°F)","schema":{"type":"string"},"example":"20"}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"note":"Airflow CFM = sensible load ÷ (1.08 × ΔT), the supply air needed to meet a sensible load at a chosen temperature difference. A bigger supply-to-room ΔT (cooler supply) needs less air — but too cold dumps and feels draughty, so comfort cooling usually runs ~18–22 °F below room. This sets the fan and duct size; check it against the ~400 CFM per ton rule for a sanity check.","inputs":{"delta_t_f":20,"sensible_btu_hr":43200},"required_cfm":2000},"meta":{"timestamp":"2026-06-07T08:18:02.069Z","request_id":"b294e761-8728-4c95-91e0-851349498396"},"status":"ok","message":"Required airflow","success":true}}}},"401":{"description":"Missing or invalid x-oanor-key header"},"402":{"description":"Active subscription required"},"429":{"description":"Rate-limit or monthly quota reached"},"502":{"description":"Upstream did not respond"}}}},"/v1/latent":{"get":{"operationId":"get_v1_latent","tags":["Load"],"summary":"Latent heat from CFM and humidity diff","description":"","parameters":[{"name":"cfm","in":"query","required":true,"description":"Airflow (CFM)","schema":{"type":"string"},"example":"2000"},{"name":"delta_grains","in":"query","required":true,"description":"Humidity-ratio difference (grains/lb)","schema":{"type":"string"},"example":"30"}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"note":"Latent heat Ql = 0.68 × CFM × ΔW, where ΔW is the humidity-ratio difference in grains of water per pound of dry air, the heat involved in condensing or adding moisture without a temperature change. It is the dehumidification part of a cooling load — high in humid climates and from people and cooking — and it is why an air conditioner must be sized for total (sensible + latent), not just temperature.","tons":3.4,"inputs":{"cfm":2000,"delta_grains":30},"latent_btu_hr":40800},"meta":{"timestamp":"2026-06-07T08:18:02.150Z","request_id":"123a97ab-802d-43f6-8bdc-376791f001a9"},"status":"ok","message":"Latent heat","success":true}}}},"401":{"description":"Missing or invalid x-oanor-key header"},"402":{"description":"Active subscription required"},"429":{"description":"Rate-limit or monthly quota reached"},"502":{"description":"Upstream did not respond"}}}},"/v1/sensible":{"get":{"operationId":"get_v1_sensible","tags":["Load"],"summary":"Sensible heat from CFM and ΔT","description":"","parameters":[{"name":"cfm","in":"query","required":true,"description":"Airflow (CFM)","schema":{"type":"string"},"example":"2000"},{"name":"delta_t_f","in":"query","required":true,"description":"Dry-bulb temperature difference (°F)","schema":{"type":"string"},"example":"20"}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"kw":12.661,"note":"Sensible heat Qs = 1.08 × CFM × ΔT (dry-bulb temperature difference), the heat an airflow carries to change temperature only. The 1.08 bundles the standard-air density and specific heat (60 min/hr × 0.075 lb/ft³ × 0.24 BTU/lb·°F) — adjust it for altitude or very hot/cold air. This sizes the supply air for a sensible cooling or heating load; the air also moves latent (moisture) heat on top.","tons":3.6,"inputs":{"cfm":2000,"delta_t_f":20},"sensible_btu_hr":43200},"meta":{"timestamp":"2026-06-07T08:18:02.236Z","request_id":"78bf2049-bab9-46b1-a952-e47ba487cfbb"},"status":"ok","message":"Sensible heat","success":true}}}},"401":{"description":"Missing or invalid x-oanor-key header"},"402":{"description":"Active subscription required"},"429":{"description":"Rate-limit or monthly quota reached"},"502":{"description":"Upstream did not respond"}}}},"/v1/meta":{"get":{"operationId":"get_v1_meta","tags":["Meta"],"summary":"Spec","description":"","parameters":[],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"notes":"US units (CFM, °F, grains/lb, BTU/hr). Qs = 1.08·CFM·ΔT; Ql = 0.68·CFM·Δgrains; total = 4.5·CFM·Δh; CFM = Qs/(1.08·ΔT). Standard-air factors — adjust for altitude. For room rule-of-thumb sizing use an HVAC API; for moist-air properties a psychrometric API.","service":"hvacload-api","endpoints":{"GET /v1/meta":"This document.","GET /v1/latent":"Latent heat from CFM and the humidity-ratio difference (grains).","GET /v1/airflow":"Airflow (CFM) required for a sensible load at a ΔT.","GET /v1/sensible":"Sensible heat (BTU/hr, tons, kW) from CFM and ΔT."},"description":"HVAC air-side heat maths: sensible and latent heat from an airflow, and the airflow needed for a sensible load."},"meta":{"timestamp":"2026-06-07T08:18:02.334Z","request_id":"b0bcadec-5c01-4765-8071-9ae188cb6005"},"status":"ok","message":"Meta","success":true}}}},"401":{"description":"Missing or invalid x-oanor-key header"},"402":{"description":"Active subscription required"},"429":{"description":"Rate-limit or monthly quota reached"},"502":{"description":"Upstream did not respond"}}}}},"x-oanor-pricing":[{"slug":"free","name":"Free","price_cents_month":0,"monthly_call_quota":5700,"rps_limit":2,"hard_limit":true},{"slug":"starter","name":"Starter","price_cents_month":1170,"monthly_call_quota":57500,"rps_limit":6,"hard_limit":true},{"slug":"pro","name":"Pro","price_cents_month":3700,"monthly_call_quota":240000,"rps_limit":15,"hard_limit":true},{"slug":"mega","name":"Mega","price_cents_month":11380,"monthly_call_quota":1195000,"rps_limit":40,"hard_limit":true}],"x-oanor-marketplace-url":"https://www.oanor.com/api/hvacload-api"}