{"openapi":"3.1.0","info":{"title":"Heat Exchanger LMTD API","version":"1.0.0","description":"Heat-exchanger LMTD and effectiveness-NTU maths as an API, computed locally and deterministically. The lmtd endpoint computes the log mean temperature difference, LMTD = (ΔT1 − ΔT2)/ln(ΔT1/ΔT2), the true average driving temperature of a heat exchanger, from the hot and cold stream inlet and outlet temperatures for either a counterflow or a parallel-flow arrangement, and flags a temperature cross. The duty endpoint applies Q = U·A·LMTD·F — the heat duty equals the overall heat-transfer coefficient times the area times the LMTD times an optional correction factor — and solves for whichever of the duty, the coefficient, the area or the LMTD you leave out, taking the LMTD directly or from the four temperatures. The effectiveness endpoint uses the effectiveness-NTU method: from the hot and cold heat-capacity rates (given directly or as mass flow times specific heat) and the number of transfer units NTU = U·A/Cmin, it returns the capacity ratio, the effectiveness for the arrangement, and — given the inlet temperatures — the maximum and actual heat duty and the outlet temperatures. Everything is computed locally and deterministically, so it is instant and private. Ideal for process, chemical and mechanical engineering tools, HVAC, refrigeration and thermal-design apps, and engineering education. Pure local computation — no key, no third-party service, instant. Live, nothing stored. 3 endpoints. This is two-stream heat-exchanger analysis; for the sensible heat of a single stream Q = m·c·ΔT use a specific-heat API.","contact":{"name":"PremiumApi","url":"https://www.oanor.com/by/premiumapi"}},"servers":[{"url":"https://api.oanor.com/lmtd-api","description":"oanor gateway"}],"tags":[{"name":"Heat Exchanger"},{"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/duty":{"get":{"operationId":"get_v1_duty","tags":["Heat Exchanger"],"summary":"Heat duty Q = U·A·LMTD","description":"","parameters":[{"name":"overall_heat_transfer_coefficient","in":"query","required":false,"description":"U (W/m²K)","schema":{"type":"string"},"example":"500"},{"name":"area","in":"query","required":false,"description":"Area A (m²)","schema":{"type":"string"},"example":"10"},{"name":"lmtd","in":"query","required":false,"description":"LMTD (or give temperatures)","schema":{"type":"string"},"example":"69.52"},{"name":"heat_duty","in":"query","required":false,"description":"Or heat duty Q (W) to solve another","schema":{"type":"string"}},{"name":"hot_inlet","in":"query","required":false,"description":"Hot inlet (with the other temps for LMTD)","schema":{"type":"string"}},{"name":"hot_outlet","in":"query","required":false,"description":"Hot outlet","schema":{"type":"string"}},{"name":"cold_inlet","in":"query","required":false,"description":"Cold inlet","schema":{"type":"string"}},{"name":"cold_outlet","in":"query","required":false,"description":"Cold outlet","schema":{"type":"string"}},{"name":"correction_factor","in":"query","required":false,"description":"F (default 1)","schema":{"type":"string"}}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"lmtd":69.52,"area_m2":10,"formula":"Q = U·A·LMTD·F.","heat_duty_w":347600,"heat_duty_kw":347.6,"correction_factor":1,"overall_heat_transfer_coefficient_w_m2k":500},"meta":{"timestamp":"2026-06-04T10:18:49.101Z","request_id":"02eca498-6e5c-40e7-a6ff-ff6821211bd6"},"status":"ok","message":"Heat duty Q = U·A·LMTD","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/effectiveness":{"get":{"operationId":"get_v1_effectiveness","tags":["Heat Exchanger"],"summary":"Effectiveness-NTU method","description":"","parameters":[{"name":"c_hot","in":"query","required":false,"description":"Hot heat-capacity rate (W/K)","schema":{"type":"string"},"example":"2000"},{"name":"c_cold","in":"query","required":false,"description":"Cold heat-capacity rate (W/K)","schema":{"type":"string"},"example":"3000"},{"name":"mass_flow_hot","in":"query","required":false,"description":"Or hot mass flow (kg/s)","schema":{"type":"string"}},{"name":"cp_hot","in":"query","required":false,"description":"And hot specific heat (J/kg·K)","schema":{"type":"string"}},{"name":"ua","in":"query","required":false,"description":"U·A (W/K)","schema":{"type":"string"},"example":"5000"},{"name":"ntu","in":"query","required":false,"description":"Or NTU directly","schema":{"type":"string"}},{"name":"arrangement","in":"query","required":false,"description":"counterflow | parallel","schema":{"type":"string"},"example":"counterflow"},{"name":"hot_inlet","in":"query","required":false,"description":"Hot inlet temperature for duty","schema":{"type":"string"},"example":"150"},{"name":"cold_inlet","in":"query","required":false,"description":"Cold inlet temperature for duty","schema":{"type":"string"},"example":"30"}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"ntu":2.5,"c_hot":2000,"c_max":3000,"c_min":2000,"c_cold":3000,"formula":"ε = (1−e^(−NTU(1−Cr)))/(1−Cr·e^(−NTU(1−Cr))); ε = NTU/(1+NTU) when Cr=1.","q_max_w":240000,"hot_inlet":150,"cold_inlet":30,"hot_outlet":54.475172,"arrangement":"counterflow","cold_outlet":93.683218,"heat_duty_w":191049.6552,"heat_duty_kw":191.049655,"effectiveness":0.79604023,"capacity_ratio":0.666667},"meta":{"timestamp":"2026-06-04T10:18:49.239Z","request_id":"65ce47f2-7172-43db-a1bc-5b3d2a9c8052"},"status":"ok","message":"Effectiveness-NTU","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/lmtd":{"get":{"operationId":"get_v1_lmtd","tags":["Heat Exchanger"],"summary":"Log mean temperature difference","description":"","parameters":[{"name":"hot_inlet","in":"query","required":true,"description":"Hot stream inlet temperature","schema":{"type":"string"},"example":"150"},{"name":"hot_outlet","in":"query","required":true,"description":"Hot stream outlet temperature","schema":{"type":"string"},"example":"90"},{"name":"cold_inlet","in":"query","required":true,"description":"Cold stream inlet temperature","schema":{"type":"string"},"example":"30"},{"name":"cold_outlet","in":"query","required":true,"description":"Cold stream outlet temperature","schema":{"type":"string"},"example":"70"},{"name":"arrangement","in":"query","required":false,"description":"counterflow | parallel (default counterflow)","schema":{"type":"string"},"example":"counterflow"}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"lmtd":69.52119,"formula":"LMTD = (ΔT1 − ΔT2)/ln(ΔT1/ΔT2).","delta_t1":80,"delta_t2":60,"hot_inlet":150,"cold_inlet":30,"hot_outlet":90,"arrangement":"counterflow","cold_outlet":70},"meta":{"timestamp":"2026-06-04T10:18:49.343Z","request_id":"75186ad4-5068-412c-a6d6-ec068a6a877f"},"status":"ok","message":"Log mean temperature difference","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":{"api":"lmtd","note":"Heat-exchanger LMTD & effectiveness-NTU — computed locally and deterministically, no key, no third-party service.","endpoints":["/v1/lmtd","/v1/duty","/v1/effectiveness","/v1/meta"],"arrangements":["counterflow","parallel"]},"meta":{"timestamp":"2026-06-04T10:18:49.421Z","request_id":"8df37242-d57a-4c3a-8a2b-8b9a67cb2f3b"},"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":2000,"rps_limit":2,"hard_limit":true},{"slug":"starter","name":"Starter","price_cents_month":900,"monthly_call_quota":20000,"rps_limit":5,"hard_limit":true},{"slug":"pro","name":"Pro","price_cents_month":2400,"monthly_call_quota":120000,"rps_limit":15,"hard_limit":true},{"slug":"mega","name":"Mega","price_cents_month":7400,"monthly_call_quota":637000,"rps_limit":40,"hard_limit":true}],"x-oanor-marketplace-url":"https://www.oanor.com/api/lmtd-api"}