# Reverberation Time API
> Room-acoustics reverberation-time maths as an API, computed locally and deterministically. The sabine endpoint computes the reverberation time of a room — the RT60, the time for the sound to decay by 60 dB — from the Sabine formula RT60 = 0.161·V/A, where V is the room volume and A the total absorption in metric sabins; you can give the absorption directly, or as a surface area times an average absorption coefficient, and it also solves the absorption you would need to hit a target reverberation time. The eyring endpoint uses the Eyring-Norris formula RT60 = 0.161·V/(−S·ln(1−ᾱ)), which is more accurate than Sabine for absorbent rooms with a high average coefficient, and reports both for comparison. The absorption endpoint builds the absorption budget from a list of surfaces, each with its area and absorption coefficient, returning the total and average absorption and the resulting Sabine RT60, plus the extra absorption needed to reach a target. Everything is computed locally and deterministically, so it is instant and private. Ideal for acoustic-design, studio, classroom and home-theatre tools, room-treatment planning and building-acoustics apps, and audio-engineering education. Pure local computation — no key, no third-party service, instant. Live, nothing stored. 3 endpoints. This is room reverberation time; for decibel conversion and combining sound levels use a sound-level 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/reverb-api/..."
```

## Pricing
- **Free** (Free) — 2,000 calls/Mo, 2 req/s
- **Starter** ($9/Mo) — 15,000 calls/Mo, 5 req/s
- **Pro** ($24/Mo) — 120,000 calls/Mo, 15 req/s
- **Mega** ($72/Mo) — 900,000 calls/Mo, 40 req/s

## Endpoints

### Reverb

#### `GET /v1/absorption` — Absorption budget

**Parameters:**
- `surfaces` (query, optional, string) — JSON array of {area, coefficient} Example: `[{"area":100,"coefficient":0.1},{"area":140,"coefficient":0.3}]`
- `area1` (query, optional, string) — Or area1 (m²) Example: `100`
- `coefficient1` (query, optional, string) — and coefficient1 (0–1) Example: `0.1`
- `area2` (query, optional, string) — area2 Example: `140`
- `coefficient2` (query, optional, string) — coefficient2 Example: `0.3`
- `volume` (query, optional, string) — Volume (m³) for RT60 Example: `200`
- `target_rt60` (query, optional, string) — Target RT60 (s)

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/reverb-api/v1/absorption?surfaces=%5B%7B%22area%22%3A100%2C%22coefficient%22%3A0.1%7D%2C%7B%22area%22%3A140%2C%22coefficient%22%3A0.3%7D%5D&area1=100&coefficient1=0.1&area2=140&coefficient2=0.3&volume=200"
```

**Response:**
```json
{
    "data": {
        "note": "Total absorption A = Σ areaᵢ·coefficientᵢ. Give a 'volume' for the Sabine RT60, and a 'target_rt60' for the extra absorption needed.",
        "surfaces": [
            {
                "area": 100,
                "absorption": 10,
                "coefficient": 0.1
            },
            {
                "area": 140,
                "absorption": 42,
                "coefficient": 0.3
            }
        ],
        "sabine_rt60_s": 0.6192,
        "average_absorption": 0.216667,
        "total_surface_area_m2": 240,
        "total_absorption_m2sabins": 52
    },
    "meta": {
        "timestamp": "2026-06-04T18:38:27.460Z",
        "request_id": "1c972cef-fba5-4ccb-9e58-34aef44e9312"
    },
    "status": "ok",
    "message": "Absorption budget",
    "success": true
}
```

#### `GET /v1/eyring` — Eyring-Norris RT60

**Parameters:**
- `volume` (query, required, string) — Room volume V (m³) Example: `200`
- `surface_area` (query, required, string) — Total surface area S (m²) Example: `240`
- `average_absorption` (query, optional, string) — Average coefficient ᾱ (0–1) Example: `0.2`
- `absorption` (query, optional, string) — Or total absorption A (m² sabins)

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/reverb-api/v1/eyring?volume=200&surface_area=240&average_absorption=0.2"
```

**Response:**
```json
{
    "data": {
        "note": "RT60 = 0.161·V/(−S·ln(1−ᾱ)) (Eyring-Norris). Shorter than Sabine; preferred when ᾱ exceeds ~0.2.",
        "inputs": {
            "volume": 200,
            "surface_area": 240,
            "average_absorption": 0.2
        },
        "rt60_s": 0.6013,
        "sabine_rt60_s": 0.6708,
        "effective_absorption_m2sabins": 53.5545
    },
    "meta": {
        "timestamp": "2026-06-04T18:38:27.547Z",
        "request_id": "3b27021f-c52f-40b2-a7de-6dea0758c578"
    },
    "status": "ok",
    "message": "Eyring RT60",
    "success": true
}
```

#### `GET /v1/sabine` — Sabine reverberation time

**Parameters:**
- `volume` (query, required, string) — Room volume V (m³) Example: `200`
- `absorption` (query, optional, string) — Total absorption A (m² sabins) Example: `50`
- `surface_area` (query, optional, string) — Or surface area S (m²) Example: `240`
- `average_absorption` (query, optional, string) — with average coefficient ᾱ (0–1) Example: `0.2`
- `target_rt60` (query, optional, string) — Target RT60 (s) to solve absorption

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/reverb-api/v1/sabine?volume=200&absorption=50&surface_area=240&average_absorption=0.2"
```

**Response:**
```json
{
    "data": {
        "mode": "reverberation_time",
        "note": "RT60 = 0.161·V/A (Sabine). Good for live rooms with low average absorption.",
        "inputs": {
            "volume": 200,
            "absorption_m2sabins": 50
        },
        "rt60_s": 0.644,
        "average_absorption": 0.208333
    },
    "meta": {
        "timestamp": "2026-06-04T18:38:27.652Z",
        "request_id": "cc0f8ecb-02b7-47e5-b68d-07823f99a6cb"
    },
    "status": "ok",
    "message": "Sabine RT60",
    "success": true
}
```

### Meta

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

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

**Response:**
```json
{
    "data": {
        "notes": "Volume in m³, areas in m², absorption in m² sabins. The 0.161 metric Sabine constant assumes a sound speed of ~343 m/s. Absorption coefficients run 0 (reflective) to 1 (fully absorbing).",
        "service": "reverb-api",
        "formulae": {
            "eyring": "RT60 = 0.161·V/(−S·ln(1−ᾱ))",
            "sabine": "RT60 = 0.161·V/A,  A = Σ Sᵢ·αᵢ",
            "average_absorption": "ᾱ = A/S_total"
        },
        "endpoints": {
            "GET /v1/meta": "This document.",
            "GET /v1/eyring": "Eyring-Norris RT60 = 0.161·V/(−S·ln(1−ᾱ)) for more absorbent rooms.",
            "GET /v1/sabine": "Sabine reverberation time RT60 = 0.161·V/A; solves absorption for a target RT60.",
            "GET /v1/absorption": "Total and average absorption from a list of surfaces, with the resulting RT60."
        },
        "description": "Room-acoustics reverberation-time calculator: Sabine and Eyring RT60, absorption budgeting from surface areas and coefficients, and target-RT60 solving."
    },
    "meta": {
        "timestamp": "2026-06-04T18:38:27.746Z",
        "request_id": "132ca18d-b112-4bfc-9d87-346c3f2495fc"
    },
    "status": "ok",
    "message": "Meta",
    "success": true
}
```


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