{"openapi":"3.1.0","info":{"title":"Reverberation Time API","version":"1.0.0","description":"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.","contact":{"name":"PremiumApi","url":"https://www.oanor.com/by/premiumapi"}},"servers":[{"url":"https://api.oanor.com/reverb-api","description":"oanor gateway"}],"tags":[{"name":"Reverb"},{"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/absorption":{"get":{"operationId":"get_v1_absorption","tags":["Reverb"],"summary":"Absorption budget","description":"","parameters":[{"name":"surfaces","in":"query","required":false,"description":"JSON array of {area, coefficient}","schema":{"type":"string"},"example":"[{\"area\":100,\"coefficient\":0.1},{\"area\":140,\"coefficient\":0.3}]"},{"name":"area1","in":"query","required":false,"description":"Or area1 (m²)","schema":{"type":"string"},"example":"100"},{"name":"coefficient1","in":"query","required":false,"description":"and coefficient1 (0–1)","schema":{"type":"string"},"example":"0.1"},{"name":"area2","in":"query","required":false,"description":"area2","schema":{"type":"string"},"example":"140"},{"name":"coefficient2","in":"query","required":false,"description":"coefficient2","schema":{"type":"string"},"example":"0.3"},{"name":"volume","in":"query","required":false,"description":"Volume (m³) for RT60","schema":{"type":"string"},"example":"200"},{"name":"target_rt60","in":"query","required":false,"description":"Target RT60 (s)","schema":{"type":"string"}}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"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}}}},"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/eyring":{"get":{"operationId":"get_v1_eyring","tags":["Reverb"],"summary":"Eyring-Norris RT60","description":"","parameters":[{"name":"volume","in":"query","required":true,"description":"Room volume V (m³)","schema":{"type":"string"},"example":"200"},{"name":"surface_area","in":"query","required":true,"description":"Total surface area S (m²)","schema":{"type":"string"},"example":"240"},{"name":"average_absorption","in":"query","required":false,"description":"Average coefficient ᾱ (0–1)","schema":{"type":"string"},"example":"0.2"},{"name":"absorption","in":"query","required":false,"description":"Or total absorption A (m² sabins)","schema":{"type":"string"}}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"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}}}},"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/sabine":{"get":{"operationId":"get_v1_sabine","tags":["Reverb"],"summary":"Sabine reverberation time","description":"","parameters":[{"name":"volume","in":"query","required":true,"description":"Room volume V (m³)","schema":{"type":"string"},"example":"200"},{"name":"absorption","in":"query","required":false,"description":"Total absorption A (m² sabins)","schema":{"type":"string"},"example":"50"},{"name":"surface_area","in":"query","required":false,"description":"Or surface area S (m²)","schema":{"type":"string"},"example":"240"},{"name":"average_absorption","in":"query","required":false,"description":"with average coefficient ᾱ (0–1)","schema":{"type":"string"},"example":"0.2"},{"name":"target_rt60","in":"query","required":false,"description":"Target RT60 (s) to solve absorption","schema":{"type":"string"}}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"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}}}},"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":{"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}}}},"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":15000,"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":7200,"monthly_call_quota":900000,"rps_limit":40,"hard_limit":true}],"x-oanor-marketplace-url":"https://www.oanor.com/api/reverb-api"}