# HVAC Air-Side Load API
> 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.

## Authentication
All requests require your oanor API key in the `x-oanor-key` header. Get one at https://www.oanor.com/developer/keys.

```bash
curl -H "x-oanor-key: oanor_live_…" "https://api.oanor.com/hvacload-api/..."
```

## Pricing
- **Free** (Free) — 5,700 calls/Mo, 2 req/s
- **Starter** ($12/Mo) — 57,500 calls/Mo, 6 req/s
- **Pro** ($37/Mo) — 240,000 calls/Mo, 15 req/s
- **Mega** ($114/Mo) — 1,195,000 calls/Mo, 40 req/s

## Endpoints

### Load

#### `GET /v1/airflow` — Airflow required for a sensible load

**Parameters:**
- `sensible_btu_hr` (query, required, string) — Sensible load (BTU/hr) Example: `43200`
- `delta_t_f` (query, required, string) — Supply temperature difference (°F) Example: `20`

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/hvacload-api/v1/airflow?sensible_btu_hr=43200&delta_t_f=20"
```

**Response:**
```json
{
    "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
}
```

#### `GET /v1/latent` — Latent heat from CFM and humidity diff

**Parameters:**
- `cfm` (query, required, string) — Airflow (CFM) Example: `2000`
- `delta_grains` (query, required, string) — Humidity-ratio difference (grains/lb) Example: `30`

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/hvacload-api/v1/latent?cfm=2000&delta_grains=30"
```

**Response:**
```json
{
    "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
}
```

#### `GET /v1/sensible` — Sensible heat from CFM and ΔT

**Parameters:**
- `cfm` (query, required, string) — Airflow (CFM) Example: `2000`
- `delta_t_f` (query, required, string) — Dry-bulb temperature difference (°F) Example: `20`

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/hvacload-api/v1/sensible?cfm=2000&delta_t_f=20"
```

**Response:**
```json
{
    "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
}
```

### Meta

#### `GET /v1/meta` — Spec

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/hvacload-api/v1/meta"
```

**Response:**
```json
{
    "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
}
```


---
Marketplace page: https://www.oanor.com/api/hvacload-api
OpenAPI spec: https://www.oanor.com/api/hvacload-api/openapi.json
