{"openapi":"3.1.0","info":{"title":"Sound Level API","version":"1.0.0","description":"Acoustics and decibel maths as an API. The decibel endpoint converts between a linear ratio and decibels, in either the power convention (10·log₁₀) or the amplitude/pressure convention (20·log₁₀), in both directions. The combine endpoint adds sound levels the way real (incoherent) sources combine — by energy summation, so two equal 80 dB sources give 83 dB, not 160 — and can also subtract a known source from a measured total. The distance endpoint applies the inverse-square law to a point source in a free field (−6 dB per doubling of distance) to find the level at a new distance. The wavelength endpoint converts between frequency and wavelength for sound, deriving the speed of sound from the air temperature (or a value you provide). Everything is computed locally and deterministically, so it is instant and private. Ideal for audio engineering and live sound, room and architectural acoustics, noise assessment and environmental monitoring, and physics teaching. Pure local computation — no key, no third-party service, instant. Live, nothing stored. 5 endpoints. This is acoustics maths; for electrical circuits use an Ohm's-law API and for general unit conversion use a unit API.","contact":{"name":"PremiumApi","url":"https://www.oanor.com/by/premiumapi"}},"servers":[{"url":"https://api.oanor.com/soundlevel-api","description":"oanor gateway"}],"tags":[{"name":"Sound"},{"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/combine":{"get":{"operationId":"get_v1_combine","tags":["Sound"],"summary":"Add/subtract sound levels","description":"","parameters":[{"name":"levels","in":"query","required":true,"description":"List of dB values","schema":{"type":"string"},"example":"80,80"},{"name":"mode","in":"query","required":false,"description":"add|subtract","schema":{"type":"string"},"example":"add"}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"mode":"add","note":"incoherent (energy) summation","levels":[80,80],"total_db":83.0103},"meta":{"timestamp":"2026-06-03T17:42:09.551Z","request_id":"c7104f7c-8b62-46d2-bb7e-33379fb6a007"},"status":"ok","message":"Combine levels","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/decibel":{"get":{"operationId":"get_v1_decibel","tags":["Sound"],"summary":"Ratio <-> decibels","description":"","parameters":[{"name":"ratio","in":"query","required":false,"description":"A linear ratio","schema":{"type":"string"},"example":"2"},{"name":"decibels","in":"query","required":false,"description":"Or a dB value","schema":{"type":"string"}},{"name":"type","in":"query","required":false,"description":"power|amplitude","schema":{"type":"string"},"example":"power"}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"type":"power","ratio":2,"factor":10,"decibels":3.0103},"meta":{"timestamp":"2026-06-03T17:42:09.648Z","request_id":"1ff2c041-cc51-410a-8872-2f10eab7f910"},"status":"ok","message":"Decibel","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/distance":{"get":{"operationId":"get_v1_distance","tags":["Sound"],"summary":"Distance attenuation","description":"","parameters":[{"name":"level","in":"query","required":true,"description":"dB at d1","schema":{"type":"string"},"example":"100"},{"name":"from_distance","in":"query","required":true,"description":"d1","schema":{"type":"string"},"example":"1"},{"name":"to_distance","in":"query","required":true,"description":"d2","schema":{"type":"string"},"example":"10"}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"note":"point source in free field (−6 dB per distance doubling)","level_db":100,"change_db":-20,"to_distance":10,"new_level_db":80,"from_distance":1},"meta":{"timestamp":"2026-06-03T17:42:09.759Z","request_id":"27d7384b-9e5b-466f-a5cc-f00cccec06ab"},"status":"ok","message":"Distance attenuation","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/wavelength":{"get":{"operationId":"get_v1_wavelength","tags":["Sound"],"summary":"Wavelength <-> frequency","description":"","parameters":[{"name":"frequency","in":"query","required":false,"description":"Hz","schema":{"type":"string"},"example":"1000"},{"name":"wavelength","in":"query","required":false,"description":"Or metres","schema":{"type":"string"}},{"name":"temperature","in":"query","required":false,"description":"Air °C (default 20)","schema":{"type":"string"},"example":"20"},{"name":"speed","in":"query","required":false,"description":"Or speed of sound m/s","schema":{"type":"string"}}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"frequency_hz":1000,"wavelength_m":0.343215,"speed_of_sound_m_s":343.215},"meta":{"timestamp":"2026-06-03T17:42:09.835Z","request_id":"00f413fb-75fd-4c88-8799-18efd5ae1a48"},"status":"ok","message":"Wavelength","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":{"name":"Sound Level API","notes":"Power: dB = 10·log₁₀(ratio). Amplitude/pressure: dB = 20·log₁₀(ratio). Levels combine by energy. Speed of sound ≈ 331.3·√(1+T/273.15) m/s. Nothing is stored.","version":"v1","endpoints":[{"path":"/v1/decibel","params":{"type":"power (10log) | amplitude (20log)","ratio":"a linear ratio (-> dB)","decibels":"or a dB value (-> ratio)"},"returns":"the conversion"},{"path":"/v1/combine","params":{"mode":"add | subtract","levels":"list of dB values"},"returns":"the combined sound level"},{"path":"/v1/distance","params":{"level":"dB at the first distance","to_distance":"d2","from_distance":"d1"},"returns":"the level at the new distance"},{"path":"/v1/wavelength","params":{"speed":"or speed of sound m/s","frequency":"Hz","wavelength":"or metres","temperature":"air °C (default 20)"},"returns":"the wavelength/frequency and speed of sound"},{"path":"/v1/meta","params":[],"returns":"this document"}],"description":"Acoustics and decibel maths as an API. The decibel endpoint converts between a linear ratio and decibels, in either the power convention (10·log₁₀) or the amplitude/pressure convention (20·log₁₀), in both directions. The combine endpoint adds sound levels the way real (incoherent) sources combine — by energy summation, so two equal 80 dB sources give 83 dB, not 160 — and can also subtract a known source from a total. The distance endpoint applies the inverse-square law to a point source in a free field (−6 dB per doubling of distance) to find the level at a new distance. The wavelength endpoint converts between frequency and wavelength for sound, deriving the speed of sound from the air temperature (or a value you give). Everything is computed locally and deterministically, so it is instant and private. Ideal for audio engineering and live sound, room and architectural acoustics, noise assessment, and physics teaching. Pure local computation — no key, no third-party service, instant. Live, nothing stored. 5 endpoints. This is acoustics maths; for electrical circuits use an Ohm's-law API and for unit conversion use a unit API."},"meta":{"timestamp":"2026-06-03T17:42:09.931Z","request_id":"b359516e-7a08-419f-a138-665c27d67103"},"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":7235,"rps_limit":2,"hard_limit":true},{"slug":"starter","name":"Starter","price_cents_month":875,"monthly_call_quota":16750,"rps_limit":8,"hard_limit":true},{"slug":"pro","name":"Pro","price_cents_month":2865,"monthly_call_quota":218500,"rps_limit":20,"hard_limit":true},{"slug":"mega","name":"Mega","price_cents_month":6665,"monthly_call_quota":1135000,"rps_limit":50,"hard_limit":true}],"x-oanor-marketplace-url":"https://www.oanor.com/api/soundlevel-api"}