# Apparent Temperature API
> Apparent ("feels-like") temperature maths as an API, computed locally and deterministically from the official meteorological formulas — the three indices a weather app, dashboard or safety tool reports alongside the raw thermometer reading. The heat-index endpoint gives the US National Weather Service heat index from the air temperature and relative humidity using the full Rothfusz regression with its low- and high-humidity adjustments: because high humidity stops sweat evaporating, the body cannot shed heat and it feels far hotter than the thermometer — 90 °F at 70 % humidity feels like about 106 °F — and the result comes with a risk category from caution through danger to extreme danger. The wind-chill endpoint gives the 2001 NWS / Environment Canada wind chill from the temperature and wind speed, the cold-weather counterpart, with the frostbite-time risk band — 0 °F in a 15 mph wind feels like about −19 °F. The humidex endpoint gives Canada's warm-weather index from the temperature and humidity on the same Celsius scale, derived through the water-vapour pressure. Everything is returned in both °F and °C and computed locally and deterministically, so it is instant and private. Ideal for weather and outdoor apps, occupational-safety and sports tools, smart-home and HVAC dashboards, and climate and health utilities. Pure local computation — no key, no third-party service, instant. Human-comfort estimates in shade and light wind. 3 compute endpoints. For dew point and moist-air properties use a psychrometric API; for live conditions a weather 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/apparenttemp-api/..."
```

## Pricing
- **Free** (Free) — 7,400 calls/Mo, 2 req/s
- **Starter** ($9/Mo) — 78,000 calls/Mo, 6 req/s
- **Pro** ($30/Mo) — 318,000 calls/Mo, 15 req/s
- **Mega** ($89/Mo) — 1,510,000 calls/Mo, 40 req/s

## Endpoints

### Apparent

#### `GET /v1/heat-index` — NWS heat index

**Parameters:**
- `temp_f` (query, required, string) — Air temperature (°F) Example: `90`
- `humidity_pct` (query, required, string) — Relative humidity (%) Example: `70`

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/apparenttemp-api/v1/heat-index?temp_f=90&humidity_pct=70"
```

**Response:**
```json
{
    "data": {
        "note": "The heat index is how hot it feels when humidity is folded into the air temperature, from the US NWS Rothfusz regression. High humidity stops sweat evaporating, so the body cannot shed heat and the apparent temperature climbs well above the thermometer — at 90 °F and 70 % humidity it feels like about 106 °F. It is defined for shade and light wind; full sun can add up to ~15 °F.",
        "inputs": {
            "temp_f": 90,
            "humidity_pct": 70
        },
        "heat_index_c": 41.1,
        "heat_index_f": 105.9,
        "risk_category": "danger — heat exhaustion likely"
    },
    "meta": {
        "timestamp": "2026-06-06T23:53:54.325Z",
        "request_id": "856eef77-c6ab-46af-9945-b61497888751"
    },
    "status": "ok",
    "message": "Heat index",
    "success": true
}
```

#### `GET /v1/humidex` — Canadian humidex

**Parameters:**
- `temp_c` (query, required, string) — Air temperature (°C) Example: `30`
- `humidity_pct` (query, required, string) — Relative humidity (%) Example: `70`

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/apparenttemp-api/v1/humidex?temp_c=30&humidity_pct=70"
```

**Response:**
```json
{
    "data": {
        "note": "The humidex is Canada's feels-like index, combining the air temperature with the humidity through the water-vapour pressure. It is read on the same Celsius scale as the temperature: 30–39 is some discomfort, 40–45 great discomfort and 46+ dangerous. Like the heat index it assumes shade — it is only defined for warm, humid conditions, so it is reported as the air temperature when it would fall below it.",
        "inputs": {
            "temp_c": 30,
            "humidity_pct": 70
        },
        "humidex": 40.9,
        "risk_category": "great discomfort — avoid exertion",
        "vapour_pressure_hpa": 29.64
    },
    "meta": {
        "timestamp": "2026-06-06T23:53:54.429Z",
        "request_id": "07c2850e-1530-4f33-ba73-10e6b22a19b7"
    },
    "status": "ok",
    "message": "Humidex",
    "success": true
}
```

#### `GET /v1/wind-chill` — Wind chill

**Parameters:**
- `temp_f` (query, required, string) — Air temperature (°F) Example: `0`
- `wind_mph` (query, required, string) — Wind speed (mph) Example: `15`

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/apparenttemp-api/v1/wind-chill?temp_f=0&wind_mph=15"
```

**Response:**
```json
{
    "data": {
        "note": "Wind chill is how cold it feels as wind strips the thin warm layer of air off the skin, from the 2001 NWS / Environment Canada formula (valid at or below 50 °F and above 3 mph). It speeds heat loss and frostbite but never cools an object below the actual air temperature — it is a human-comfort and frostbite measure, not a true temperature. At 0 °F and 15 mph it feels like about −19 °F.",
        "inputs": {
            "temp_f": 0,
            "wind_mph": 15
        },
        "wind_chill_c": -28.6,
        "wind_chill_f": -19.4,
        "risk_category": "frostbite in 10–30 min — exposed skin at risk"
    },
    "meta": {
        "timestamp": "2026-06-06T23:53:54.530Z",
        "request_id": "a175a441-3a0a-4246-a62f-9f992e317be0"
    },
    "status": "ok",
    "message": "Wind chill",
    "success": true
}
```

### Meta

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

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

**Response:**
```json
{
    "data": {
        "notes": "Heat index & wind chill in °F (also °C); humidex in °C. Heat index = Rothfusz regression; wind chill = 2001 NWS formula; humidex = T + 0.5555·(e − 10). Human-comfort estimates in shade. For dew point / moist-air properties use a psychrometric API.",
        "service": "apparenttemp-api",
        "endpoints": {
            "GET /v1/meta": "This document.",
            "GET /v1/humidex": "Canadian humidex from temperature (°C) and humidity.",
            "GET /v1/heat-index": "NWS heat index from temperature (°F) and humidity.",
            "GET /v1/wind-chill": "Wind chill from temperature (°F) and wind speed (mph)."
        },
        "description": "Apparent ('feels-like') temperature maths: the NWS heat index, the NWS/Environment Canada wind chill, and the Canadian humidex."
    },
    "meta": {
        "timestamp": "2026-06-06T23:53:54.625Z",
        "request_id": "fa533354-b68f-4c03-a9ce-679a86d5017d"
    },
    "status": "ok",
    "message": "Meta",
    "success": true
}
```


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