{"openapi":"3.1.0","info":{"title":"HVAC Airflow & Load Calc","version":"1.0.0","description":"Airflow heat load, air changes, duct sizing, velocity, fan laws, efficiency conversions and mixed-air temperature. One call, one computed answer, no accounts or API keys. Machine-payable over x402.","x-guidance":"HVAC Airflow & Load Calc: Airflow heat load, air changes, duct sizing, velocity, fan laws, efficiency conversions and mixed-air temperature. Use /sensible-heat for airflow heat load, /air-changes for ACH and CFM, /duct-equivalent for rectangular to round duct, /duct-velocity for velocity and pressure, /fan-laws for speed changes, /efficiency-convert for EER COP and kW per ton and /mixed-air for blended air temperature. Each paid GET returns a computed verdict with the reasons, the source and what was NOT checked. A verdict of UNVERIFIED means a lookup failed: treat it as unknown. No account or key: pay per call in USDC over x402."},"servers":[{"url":"https://hvac-calc.x402tookit.com"}],"paths":{"/air-changes":{"get":{"operationId":"air_changes","summary":"Air changes per hour (ACH) from airflow and room volume, or the CFM needed for a target ACH.","description":"Air changes per hour (ACH) from airflow and room volume, or the CFM needed for a target ACH.","tags":["hvac","ventilation","ach","airflow"],"parameters":[{"name":"volumeCubicFeet","in":"query","required":false,"description":"Room volume in cubic feet; or send lengthFt, widthFt and heightFt","schema":{"type":"number"}},{"name":"lengthFt","in":"query","required":false,"description":"Room length in feet","schema":{"type":"number"}},{"name":"widthFt","in":"query","required":false,"description":"Room width in feet","schema":{"type":"number"}},{"name":"heightFt","in":"query","required":false,"description":"Room height in feet","schema":{"type":"number"}},{"name":"cfm","in":"query","required":false,"description":"Airflow in CFM to get the ACH; send this or ach","schema":{"type":"number"}},{"name":"ach","in":"query","required":false,"description":"Target air changes per hour to get the CFM needed","schema":{"type":"number"}}],"responses":{"200":{"description":"The answer.","content":{"application/json":{"schema":{"type":"object","properties":{"verdict":{"type":["null","string"]},"summary":{"type":["null","string"]},"reasons":{"type":["array","null"],"items":{"type":"string"}},"volumeCubicFeet":{"type":["null","number"]},"cfm":{"type":["null","number"]},"ach":{"type":["null","number"]},"minutesPerChange":{"type":["null","number"]},"degraded":{"type":["boolean","null"]},"notChecked":{"type":["array","null"],"items":{"type":"string"}},"source":{"type":["null","string"]},"asOf":{"type":["null","string"]},"disclaimer":{"type":["null","string"]}}},"example":{"verdict":"COMPUTED","summary":"2000 ft3 at 333.3 CFM is 10 air changes per hour.","reasons":["ACH = CFM x 60 / room volume."],"volumeCubicFeet":2000,"cfm":333.33,"ach":10,"minutesPerChange":6,"degraded":false,"notChecked":["whether the air actually mixes through the whole room","the ACH your code or standard requires for this room type","…1 more"],"source":"computed locally (ACH = CFM x 60 / volume)","asOf":"2026-10-12T23:00:19.970Z","disclaimer":"Screening signal computed from the named public source. Not financial, legal or investment advice; provided as is. Verify at the source before acting."}}}},"400":{"description":"A parameter was missing or out of range."},"402":{"description":"Payment Required"},"502":{"description":"The upstream source failed or timed out."}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.0200"},"protocols":[{"x402":{"network":"eip155:8453","scheme":"exact","currency":"USDC","endpoint":"https://hvac-calc.x402tookit.com/air-changes"}},{"x402":{"network":"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp","scheme":"exact","currency":"USDC","endpoint":"https://hvac-calc.x402tookit.com/air-changes"}},{"x402":{"network":"eip155:137","scheme":"exact","currency":"USDC","endpoint":"https://hvac-calc.x402tookit.com/air-changes"}},{"x402":{"network":"eip155:42161","scheme":"exact","currency":"USDC","endpoint":"https://hvac-calc.x402tookit.com/air-changes"}}]}}},"/duct-equivalent":{"get":{"operationId":"duct_equivalent","summary":"Equivalent round diameter of a rectangular duct (same friction), or the second side that matches a round duct.","description":"Equivalent round diameter of a rectangular duct (same friction), or the second side that matches a round duct.","tags":["hvac","duct","sizing","rectangular"],"parameters":[{"name":"sideA","in":"query","required":true,"description":"One side of the rectangular duct (inches or any unit)","schema":{"type":"number"}},{"name":"sideB","in":"query","required":false,"description":"Other side, same unit; send this or roundDiameter","schema":{"type":"number"}},{"name":"roundDiameter","in":"query","required":false,"description":"Round duct diameter to find the matching second side","schema":{"type":"number"}}],"responses":{"200":{"description":"The answer.","content":{"application/json":{"schema":{"type":"object","properties":{"verdict":{"type":["null","string"]},"summary":{"type":["null","string"]},"reasons":{"type":["array","null"],"items":{"type":"string"}},"sideA":{"type":["null","number"]},"sideB":{"type":["null","number"]},"equivalentRoundDiameter":{"type":["null","number"]},"aspectRatio":{"type":["null","number"]},"rectangularArea":{"type":["null","number"]},"roundArea":{"type":["null","number"]},"degraded":{"type":["boolean","null"]},"notChecked":{"type":["array","null"],"items":{"type":"string"}},"source":{"type":["null","string"]},"asOf":{"type":["null","string"]},"disclaimer":{"type":["null","string"]}}},"example":{"verdict":"COMPUTED","summary":"12 x 8 rectangular is equivalent to a 10.66 round duct.","reasons":["Equal friction at equal airflow (Huebscher)."],"sideA":12,"sideB":8,"equivalentRoundDiameter":10.656,"aspectRatio":1.5,"rectangularArea":96,"roundArea":89.187,"degraded":false,"notChecked":["aspect ratio limits (keep it under about 4:1 for low noise and loss)","equal friction does not give equal velocity or equal area","…1 more"],"source":"computed locally (Huebscher equal-friction equation De = 1.30 (ab)^0.625 / (a+b)^0.25)","asOf":"2026-10-12T23:00:20.229Z","disclaimer":"Screening signal computed from the named public source. Not financial, legal or investment advice; provided as is. Verify at the source before acting."}}}},"400":{"description":"A parameter was missing or out of range."},"402":{"description":"Payment Required"},"502":{"description":"The upstream source failed or timed out."}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.0200"},"protocols":[{"x402":{"network":"eip155:8453","scheme":"exact","currency":"USDC","endpoint":"https://hvac-calc.x402tookit.com/duct-equivalent"}},{"x402":{"network":"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp","scheme":"exact","currency":"USDC","endpoint":"https://hvac-calc.x402tookit.com/duct-equivalent"}},{"x402":{"network":"eip155:137","scheme":"exact","currency":"USDC","endpoint":"https://hvac-calc.x402tookit.com/duct-equivalent"}},{"x402":{"network":"eip155:42161","scheme":"exact","currency":"USDC","endpoint":"https://hvac-calc.x402tookit.com/duct-equivalent"}}]}}},"/duct-velocity":{"get":{"operationId":"duct_velocity","summary":"Air velocity (FPM) and velocity pressure (in. wg) in a round or rectangular duct from CFM, or the CFM at a velocity.","description":"Air velocity (FPM) and velocity pressure (in. wg) in a round or rectangular duct from CFM, or the CFM at a velocity.","tags":["hvac","duct","velocity","pressure"],"parameters":[{"name":"diameterIn","in":"query","required":false,"description":"Round duct diameter in inches; or send widthIn and heightIn","schema":{"type":"number"}},{"name":"widthIn","in":"query","required":false,"description":"Rectangular duct width in inches","schema":{"type":"number"}},{"name":"heightIn","in":"query","required":false,"description":"Rectangular duct height in inches","schema":{"type":"number"}},{"name":"cfm","in":"query","required":false,"description":"Airflow in CFM to get the velocity; send this or fpm","schema":{"type":"number"}},{"name":"fpm","in":"query","required":false,"description":"Velocity in feet per minute to get the CFM","schema":{"type":"number"}}],"responses":{"200":{"description":"The answer.","content":{"application/json":{"schema":{"type":"object","properties":{"verdict":{"type":["null","string"]},"summary":{"type":["null","string"]},"reasons":{"type":["array","null"],"items":{"type":"string"}},"areaSquareFeet":{"type":["null","number"]},"areaSquareInches":{"type":["null","number"]},"cfm":{"type":["null","number"]},"fpm":{"type":["null","number"]},"velocityPressureInWg":{"type":["null","number"]},"degraded":{"type":["boolean","null"]},"notChecked":{"type":["array","null"],"items":{"type":"string"}},"source":{"type":["null","string"]},"asOf":{"type":["null","string"]},"disclaimer":{"type":["null","string"]}}},"example":{"verdict":"COMPUTED","summary":"1000 CFM through 113.1 in2 is 1273 FPM (velocity pressure 0.1011 in. wg).","reasons":["Velocity = airflow / duct area.","Velocity pressure = (V / 4005)^2 for standard air."],"areaSquareFeet":0.7854,"areaSquareInches":113.097,"cfm":1000,"fpm":1273.24,"velocityPressureInWg":0.10107,"degraded":false,"notChecked":["noise at this velocity","friction loss per 100 feet","…1 more"],"source":"computed locally (V = CFM / area in ft2; velocity pressure = (V / 4005)^2 in. wg at standard air)","asOf":"2026-10-12T23:00:20.480Z","disclaimer":"Screening signal computed from the named public source. Not financial, legal or investment advice; provided as is. Verify at the source before acting."}}}},"400":{"description":"A parameter was missing or out of range."},"402":{"description":"Payment Required"},"502":{"description":"The upstream source failed or timed out."}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.0200"},"protocols":[{"x402":{"network":"eip155:8453","scheme":"exact","currency":"USDC","endpoint":"https://hvac-calc.x402tookit.com/duct-velocity"}},{"x402":{"network":"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp","scheme":"exact","currency":"USDC","endpoint":"https://hvac-calc.x402tookit.com/duct-velocity"}},{"x402":{"network":"eip155:137","scheme":"exact","currency":"USDC","endpoint":"https://hvac-calc.x402tookit.com/duct-velocity"}},{"x402":{"network":"eip155:42161","scheme":"exact","currency":"USDC","endpoint":"https://hvac-calc.x402tookit.com/duct-velocity"}}]}}},"/efficiency-convert":{"get":{"operationId":"efficiency_convert","summary":"Convert EER, COP and kW per ton, and tons, BTU/h and kW of cooling capacity.","description":"Convert EER, COP and kW per ton, and tons, BTU/h and kW of cooling capacity.","tags":["hvac","eer","cop","tons"],"parameters":[{"name":"eer","in":"query","required":false,"description":"Energy efficiency ratio (BTU/h per watt); send exactly one of eer, cop or kwPerTon","schema":{"type":"number"}},{"name":"cop","in":"query","required":false,"description":"Coefficient of performance","schema":{"type":"number"}},{"name":"kwPerTon","in":"query","required":false,"description":"Electrical kW per ton of cooling","schema":{"type":"number"}},{"name":"tons","in":"query","required":false,"description":"Capacity in tons; optional, send exactly one of tons, btuh or kw for capacity","schema":{"type":"number"}},{"name":"btuh","in":"query","required":false,"description":"Capacity in BTU/h","schema":{"type":"number"}},{"name":"kw","in":"query","required":false,"description":"Capacity in kW (thermal)","schema":{"type":"number"}}],"responses":{"200":{"description":"The answer.","content":{"application/json":{"schema":{"type":"object","properties":{"verdict":{"type":["null","string"]},"summary":{"type":["null","string"]},"reasons":{"type":["array","null"],"items":{"type":"string"}},"eer":{"type":["null","number"]},"cop":{"type":["null","number"]},"kwPerTon":{"type":["null","number"]},"tons":{"type":["null","number"]},"btuh":{"type":["null","number"]},"kw":{"type":["null","number"]},"electricalKw":{"type":["null","number"]},"degraded":{"type":["boolean","null"]},"notChecked":{"type":["array","null"],"items":{"type":"string"}},"source":{"type":["null","string"]},"asOf":{"type":["null","string"]},"disclaimer":{"type":["null","string"]}}},"example":{"verdict":"COMPUTED","summary":"EER 12 = COP 3.5169 = 1 kW per ton; 3 tons = 36000 BTU/h = 10.5506 kW; about 3 kW of electricity.","reasons":["EER = COP x 3.412 and kW per ton = 12 / EER.","1 ton of cooling = 12,000 BTU/h."],"eer":12,"cop":3.5169,"kwPerTon":1,"tons":3,"btuh":36000,"kw":10.5506,"electricalKw":3,"degraded":false,"notChecked":["SEER and HSPF seasonal ratings (they depend on a test cycle and are not a unit conversion of EER)","part-load behaviour","…1 more"],"source":"computed locally (EER = COP x 3.412 = 12 / kW per ton; 1 ton = 12,000 BTU/h = 3.517 kW)","asOf":"2026-10-12T23:00:20.733Z","disclaimer":"Screening signal computed from the named public source. Not financial, legal or investment advice; provided as is. Verify at the source before acting."}}}},"400":{"description":"A parameter was missing or out of range."},"402":{"description":"Payment Required"},"502":{"description":"The upstream source failed or timed out."}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.0200"},"protocols":[{"x402":{"network":"eip155:8453","scheme":"exact","currency":"USDC","endpoint":"https://hvac-calc.x402tookit.com/efficiency-convert"}},{"x402":{"network":"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp","scheme":"exact","currency":"USDC","endpoint":"https://hvac-calc.x402tookit.com/efficiency-convert"}},{"x402":{"network":"eip155:137","scheme":"exact","currency":"USDC","endpoint":"https://hvac-calc.x402tookit.com/efficiency-convert"}},{"x402":{"network":"eip155:42161","scheme":"exact","currency":"USDC","endpoint":"https://hvac-calc.x402tookit.com/efficiency-convert"}}]}}},"/fan-laws":{"get":{"operationId":"fan_laws","summary":"Fan affinity laws: new airflow, pressure and power after a speed change (flow ~ N, pressure ~ N^2, power ~ N^3).","description":"Fan affinity laws: new airflow, pressure and power after a speed change (flow ~ N, pressure ~ N^2, power ~ N^3).","tags":["hvac","fan","affinity","vfd"],"parameters":[{"name":"rpmFrom","in":"query","required":true,"description":"Current fan speed (rpm or hertz)","schema":{"type":"number"}},{"name":"rpmTo","in":"query","required":true,"description":"New fan speed, same unit","schema":{"type":"number"}},{"name":"cfm","in":"query","required":false,"description":"Current airflow in CFM","schema":{"type":"number"}},{"name":"staticPressureInWg","in":"query","required":false,"description":"Current static pressure in in. wg","schema":{"type":"number"}},{"name":"power","in":"query","required":false,"description":"Current shaft power (hp or kW)","schema":{"type":"number"}}],"responses":{"200":{"description":"The answer.","content":{"application/json":{"schema":{"type":"object","properties":{"verdict":{"type":["null","string"]},"summary":{"type":["null","string"]},"reasons":{"type":["array","null"],"items":{"type":"string"}},"speedRatio":{"type":["null","number"]},"flowRatio":{"type":["null","number"]},"pressureRatio":{"type":["null","number"]},"powerRatio":{"type":["null","number"]},"newCfm":{"type":["null","number"]},"newStaticPressureInWg":{"type":["null","number"]},"newPower":{"type":["null","number"]},"degraded":{"type":["boolean","null"]},"notChecked":{"type":["array","null"],"items":{"type":"string"}},"source":{"type":["null","string"]},"asOf":{"type":["null","string"]},"disclaimer":{"type":["null","string"]}}},"example":{"verdict":"COMPUTED","summary":"Speed x1.2: flow x1.2, pressure x1.44, power x1.728.","reasons":["Flow scales with speed, pressure with speed squared, power with speed cubed."],"speedRatio":1.2,"flowRatio":1.2,"pressureRatio":1.44,"powerRatio":1.728,"newCfm":1200,"newStaticPressureInWg":1.44,"newPower":3.456,"degraded":false,"notChecked":["the fan curve and operating point (the laws hold on the same system curve)","motor and drive efficiency changes","…1 more"],"source":"computed locally (fan affinity laws: Q2/Q1 = N2/N1, P2/P1 = (N2/N1)^2, W2/W1 = (N2/N1)^3)","asOf":"2026-10-12T23:00:20.997Z","disclaimer":"Screening signal computed from the named public source. Not financial, legal or investment advice; provided as is. Verify at the source before acting."}}}},"400":{"description":"A parameter was missing or out of range."},"402":{"description":"Payment Required"},"502":{"description":"The upstream source failed or timed out."}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.0200"},"protocols":[{"x402":{"network":"eip155:8453","scheme":"exact","currency":"USDC","endpoint":"https://hvac-calc.x402tookit.com/fan-laws"}},{"x402":{"network":"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp","scheme":"exact","currency":"USDC","endpoint":"https://hvac-calc.x402tookit.com/fan-laws"}},{"x402":{"network":"eip155:137","scheme":"exact","currency":"USDC","endpoint":"https://hvac-calc.x402tookit.com/fan-laws"}},{"x402":{"network":"eip155:42161","scheme":"exact","currency":"USDC","endpoint":"https://hvac-calc.x402tookit.com/fan-laws"}}]}}},"/mixed-air":{"get":{"operationId":"mixed_air","summary":"Mixed-air temperature of two airstreams (return plus outside air) and the outside-air fraction.","description":"Mixed-air temperature of two airstreams (return plus outside air) and the outside-air fraction.","tags":["hvac","mixing","outside-air","economizer"],"parameters":[{"name":"cfmA","in":"query","required":true,"description":"Airflow of stream A in CFM (for example return air)","schema":{"type":"number"}},{"name":"tempA","in":"query","required":true,"description":"Dry-bulb temperature of stream A (any unit, same as tempB)","schema":{"type":"number"}},{"name":"cfmB","in":"query","required":true,"description":"Airflow of stream B in CFM (for example outside air)","schema":{"type":"number"}},{"name":"tempB","in":"query","required":true,"description":"Dry-bulb temperature of stream B","schema":{"type":"number"}}],"responses":{"200":{"description":"The answer.","content":{"application/json":{"schema":{"type":"object","properties":{"verdict":{"type":["null","string"]},"summary":{"type":["null","string"]},"reasons":{"type":["array","null"],"items":{"type":"string"}},"totalCfm":{"type":["null","number"]},"mixedTemperature":{"type":["null","number"]},"streamBFractionPercent":{"type":["null","number"]},"degraded":{"type":["boolean","null"]},"notChecked":{"type":["array","null"],"items":{"type":"string"}},"source":{"type":["null","string"]},"asOf":{"type":["null","string"]},"disclaimer":{"type":["null","string"]}}},"example":{"verdict":"COMPUTED","summary":"4000 CFM mixes to 80 (stream B is 25 percent of the flow).","reasons":["Dry-bulb temperature blends in proportion to airflow."],"totalCfm":4000,"mixedTemperature":80,"streamBFractionPercent":25,"degraded":false,"notChecked":["moisture (wet-bulb and humidity of the mixture)","stratification in the mixing box","…1 more"],"source":"computed locally (flow-weighted average: T = (Q1 T1 + Q2 T2) / (Q1 + Q2))","asOf":"2026-10-12T23:00:21.249Z","disclaimer":"Screening signal computed from the named public source. Not financial, legal or investment advice; provided as is. Verify at the source before acting."}}}},"400":{"description":"A parameter was missing or out of range."},"402":{"description":"Payment Required"},"502":{"description":"The upstream source failed or timed out."}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.0200"},"protocols":[{"x402":{"network":"eip155:8453","scheme":"exact","currency":"USDC","endpoint":"https://hvac-calc.x402tookit.com/mixed-air"}},{"x402":{"network":"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp","scheme":"exact","currency":"USDC","endpoint":"https://hvac-calc.x402tookit.com/mixed-air"}},{"x402":{"network":"eip155:137","scheme":"exact","currency":"USDC","endpoint":"https://hvac-calc.x402tookit.com/mixed-air"}},{"x402":{"network":"eip155:42161","scheme":"exact","currency":"USDC","endpoint":"https://hvac-calc.x402tookit.com/mixed-air"}}]}}},"/sensible-heat":{"get":{"operationId":"sensible_heat","summary":"Sensible heat from airflow and temperature difference (1.08 x CFM x dT), or the CFM needed for a heat load.","description":"Sensible heat from airflow and temperature difference (1.08 x CFM x dT), or the CFM needed for a heat load.","tags":["hvac","airflow","cooling","heating"],"parameters":[{"name":"deltaTF","in":"query","required":true,"description":"Air temperature difference in degrees F (supply versus room), above 0","schema":{"type":"number"}},{"name":"cfm","in":"query","required":false,"description":"Airflow in CFM; send this or loadBtuh","schema":{"type":"number"}},{"name":"loadBtuh","in":"query","required":false,"description":"Sensible load in BTU/h to get the CFM needed instead","schema":{"type":"number"}}],"responses":{"200":{"description":"The answer.","content":{"application/json":{"schema":{"type":"object","properties":{"verdict":{"type":["null","string"]},"summary":{"type":["null","string"]},"reasons":{"type":["array","null"],"items":{"type":"string"}},"cfm":{"type":["null","number"]},"deltaTF":{"type":["null","number"]},"sensibleBtuh":{"type":["null","number"]},"tons":{"type":["null","number"]},"kilowatts":{"type":["null","number"]},"degraded":{"type":["boolean","null"]},"notChecked":{"type":["array","null"],"items":{"type":"string"}},"source":{"type":["null","string"]},"asOf":{"type":["null","string"]},"disclaimer":{"type":["null","string"]}}},"example":{"verdict":"COMPUTED","summary":"1000 CFM at a 20 F difference carries 21600 BTU/h sensible (1.8 tons).","reasons":["Sensible heat = 1.08 x CFM x temperature difference, for standard air."],"cfm":1000,"deltaTF":20,"sensibleBtuh":21600,"tons":1.8,"kilowatts":6.3303,"degraded":false,"notChecked":["latent (moisture) load","air density at altitude or unusual temperature (the 1.08 factor is for standard air)","…1 more"],"source":"computed locally (standard air: Q = 1.08 x CFM x dT BTU/h; 12,000 BTU/h per ton)","asOf":"2026-10-12T23:00:21.500Z","disclaimer":"Screening signal computed from the named public source. Not financial, legal or investment advice; provided as is. Verify at the source before acting."}}}},"400":{"description":"A parameter was missing or out of range."},"402":{"description":"Payment Required"},"502":{"description":"The upstream source failed or timed out."}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.0200"},"protocols":[{"x402":{"network":"eip155:8453","scheme":"exact","currency":"USDC","endpoint":"https://hvac-calc.x402tookit.com/sensible-heat"}},{"x402":{"network":"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp","scheme":"exact","currency":"USDC","endpoint":"https://hvac-calc.x402tookit.com/sensible-heat"}},{"x402":{"network":"eip155:137","scheme":"exact","currency":"USDC","endpoint":"https://hvac-calc.x402tookit.com/sensible-heat"}},{"x402":{"network":"eip155:42161","scheme":"exact","currency":"USDC","endpoint":"https://hvac-calc.x402tookit.com/sensible-heat"}}]}}}}}