# Heat Transfer Numbers API
> Convective heat-transfer dimensionless numbers as an API, computed locally and deterministically. The prandtl endpoint computes the Prandtl number Pr = μ·cp/k (or ν/α), the ratio of momentum to thermal diffusivity that sets the relative thickness of the velocity and thermal boundary layers — air is about 0.71 and water about 7 at 20 °C. The grashof endpoint computes the Grashof number Gr = g·β·|ΔT|·L³/ν², buoyancy versus viscous forces in natural convection (for an ideal gas the thermal-expansion coefficient β ≈ 1/T). The rayleigh endpoint gives the Rayleigh number Ra = Gr·Pr, either from Gr and Pr or from the full natural-convection inputs, which governs the onset of convection (critical ≈ 1708 for a heated horizontal layer). The peclet endpoint computes the Péclet number Pe = Re·Pr = v·L/α, advection versus diffusion of heat. The biot endpoint computes the Biot number Bi = h·L/k and flags whether the lumped-capacitance transient model applies (Bi < 0.1). All inputs are SI. Everything is computed locally and deterministically, so it is instant and private. Ideal for thermal-engineering, HVAC, electronics-cooling, CFD, process-engineering and heat-transfer-education app developers, natural-convection and transient-conduction tools, and simulation software. Pure local computation — no key, no third-party service, instant. Live, nothing stored. 5 endpoints. These are convective heat-transfer groups; for the Reynolds number alone use a Reynolds API and for surface-tension numbers a Weber 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/prandtl-api/..."
```

## Pricing
- **Free** (Free) — 3,700 calls/Mo, 2 req/s
- **Starter** ($7/Mo) — 35,000 calls/Mo, 6 req/s
- **Pro** ($21/Mo) — 172,000 calls/Mo, 15 req/s
- **Mega** ($63/Mo) — 1,040,000 calls/Mo, 40 req/s

## Endpoints

### HeatTransfer

#### `GET /v1/biot` — Biot number

**Parameters:**
- `heat_transfer_coefficient` (query, required, string) — h (W/m²·K) Example: `100`
- `length` (query, required, string) — Characteristic length L=V/A (m) Example: `0.05`
- `thermal_conductivity` (query, required, string) — k (W/m·K) Example: `15`

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/prandtl-api/v1/biot?heat_transfer_coefficient=100&length=0.05&thermal_conductivity=15"
```

**Response:**
```json
{
    "data": {
        "note": "Bi = h·L/k with L = V/A the characteristic length. Bi < 0.1 means the body is nearly isothermal, so the lumped-capacitance transient model applies.",
        "inputs": {
            "length": 0.05,
            "thermal_conductivity": 15,
            "heat_transfer_coefficient": 100
        },
        "biot_number": 0.33333333,
        "lumped_capacitance_valid": false
    },
    "meta": {
        "timestamp": "2026-06-05T19:50:26.818Z",
        "request_id": "bce7689b-29b1-44e0-b37a-a6e8d34b95a2"
    },
    "status": "ok",
    "message": "Biot number",
    "success": true
}
```

#### `GET /v1/grashof` — Grashof number

**Parameters:**
- `expansion_coefficient` (query, required, string) — β (1/K) Example: `0.00333`
- `temperature_difference` (query, required, string) — ΔT (K) Example: `10`
- `length` (query, required, string) — Characteristic length L (m) Example: `0.1`
- `kinematic_viscosity` (query, required, string) — ν (m²/s) Example: `0.000015`
- `gravity` (query, optional, string) — g (m/s²)

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/prandtl-api/v1/grashof?expansion_coefficient=0.00333&temperature_difference=10&length=0.1&kinematic_viscosity=0.000015"
```

**Response:**
```json
{
    "data": {
        "note": "Gr = g·β·|ΔT|·L³/ν² — ratio of buoyancy to viscous forces in natural convection. For an ideal gas β ≈ 1/T (K).",
        "inputs": {
            "length": 0.1,
            "gravity": 9.80665,
            "kinematic_viscosity": 1.5e-5,
            "expansion_coefficient": 0.00333,
            "temperature_difference": 10
        },
        "grashof_number": 1451384.2
    },
    "meta": {
        "timestamp": "2026-06-05T19:50:26.896Z",
        "request_id": "ba8825ed-26af-4e36-98c5-7462387d951b"
    },
    "status": "ok",
    "message": "Grashof number",
    "success": true
}
```

#### `GET /v1/peclet` — Péclet number

**Parameters:**
- `reynolds` (query, optional, string) — Reynolds number Example: `10000`
- `prandtl` (query, optional, string) — Prandtl number Example: `0.71`
- `velocity` (query, optional, string) — v (m/s)
- `length` (query, optional, string) — L (m)
- `thermal_diffusivity` (query, optional, string) — α (m²/s)

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/prandtl-api/v1/peclet?reynolds=10000&prandtl=0.71"
```

**Response:**
```json
{
    "data": {
        "note": "Pe = Re·Pr.",
        "inputs": {
            "prandtl": 0.71,
            "reynolds": 10000
        },
        "peclet_number": 7100
    },
    "meta": {
        "timestamp": "2026-06-05T19:50:26.996Z",
        "request_id": "4f0f42a2-8896-4692-8bb0-20339465856b"
    },
    "status": "ok",
    "message": "Peclet number",
    "success": true
}
```

#### `GET /v1/prandtl` — Prandtl number

**Parameters:**
- `viscosity` (query, optional, string) — Dynamic viscosity μ (Pa·s) Example: `0.0000181`
- `specific_heat` (query, optional, string) — cp (J/kg·K) Example: `1005`
- `thermal_conductivity` (query, optional, string) — k (W/m·K) Example: `0.0257`
- `kinematic_viscosity` (query, optional, string) — ν (m²/s)
- `thermal_diffusivity` (query, optional, string) — α (m²/s)

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/prandtl-api/v1/prandtl?viscosity=0.0000181&specific_heat=1005&thermal_conductivity=0.0257"
```

**Response:**
```json
{
    "data": {
        "note": "Pr = μ·cp/k — ratio of momentum to thermal diffusivity. μ in Pa·s, cp in J/(kg·K), k in W/(m·K). Air ≈0.71, water ≈7.",
        "inputs": {
            "viscosity": 1.81e-5,
            "specific_heat": 1005,
            "thermal_conductivity": 0.0257
        },
        "prandtl_number": 0.70780156
    },
    "meta": {
        "timestamp": "2026-06-05T19:50:27.098Z",
        "request_id": "dcfc25c3-7ee7-4a8a-96b7-8356461771d9"
    },
    "status": "ok",
    "message": "Prandtl number",
    "success": true
}
```

#### `GET /v1/rayleigh` — Rayleigh number

**Parameters:**
- `grashof` (query, optional, string) — Grashof number Example: `1452837`
- `prandtl` (query, optional, string) — Prandtl number Example: `0.71`
- `expansion_coefficient` (query, optional, string) — β (1/K)
- `temperature_difference` (query, optional, string) — ΔT (K)
- `length` (query, optional, string) — L (m)
- `kinematic_viscosity` (query, optional, string) — ν (m²/s)
- `thermal_diffusivity` (query, optional, string) — α (m²/s)

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/prandtl-api/v1/rayleigh?grashof=1452837&prandtl=0.71"
```

**Response:**
```json
{
    "data": {
        "note": "Ra = Gr·Pr.",
        "inputs": {
            "grashof": 1452837,
            "prandtl": 0.71
        },
        "rayleigh_number": 1031514.3
    },
    "meta": {
        "timestamp": "2026-06-05T19:50:27.180Z",
        "request_id": "9088a404-80d6-450d-83a1-c5f9a6ec6ae8"
    },
    "status": "ok",
    "message": "Rayleigh number",
    "success": true
}
```

### Meta

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

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

**Response:**
```json
{
    "data": {
        "notes": "SI units throughout. These are convective heat-transfer groups; for the Reynolds number alone use a Reynolds API and for surface-tension numbers a Weber API.",
        "service": "prandtl-api",
        "endpoints": {
            "GET /v1/biot": "Biot number Bi = h·L/k and lumped-capacitance validity.",
            "GET /v1/meta": "This document.",
            "GET /v1/peclet": "Péclet number Pe = Re·Pr = v·L/α.",
            "GET /v1/grashof": "Grashof number Gr = g·β·ΔT·L³/ν².",
            "GET /v1/prandtl": "Prandtl number Pr = μ·cp/k (or ν/α).",
            "GET /v1/rayleigh": "Rayleigh number Ra = Gr·Pr."
        },
        "description": "Convective heat-transfer dimensionless numbers: Prandtl, Grashof, Rayleigh, Péclet and Biot."
    },
    "meta": {
        "timestamp": "2026-06-05T19:50:27.274Z",
        "request_id": "d5d23034-86c8-4921-8ad5-7efbf5abc6c5"
    },
    "status": "ok",
    "message": "Meta",
    "success": true
}
```


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