{"openapi":"3.1.0","info":{"title":"ADC & DAC Converter API","version":"1.0.0","description":"ADC/DAC data-converter maths as an API, computed locally and deterministically. The resolution endpoint turns a bit depth into the number of quantization levels (2^N), the LSB step for a given reference voltage (in V, mV and µV), the full-scale range, the ideal signal-to-noise ratio (6.02·N + 1.76 dB) and dynamic range, and — given an input voltage — the digital output code. The sampling endpoint covers Nyquist: the minimum sample rate for a signal bandwidth (2·f_max), the Nyquist frequency for a sample rate (fs/2), whether a signal is adequately sampled, and the alias frequency a tone folds to, |f_in − round(f_in/fs)·fs|. The quantization endpoint gives the maximum quantization error (LSB/2), the rms quantization noise (LSB/√12), the ideal SNR, and the effective number of bits (ENOB = (SNR − 1.76)/6.02) from a measured SNR. Everything is computed locally and deterministically, so it is instant and private. Ideal for embedded, DSP, audio and instrumentation app developers, data-acquisition and converter-selection tools, and electronics education. Pure local computation — no key, no third-party service, instant. Live, nothing stored. 3 endpoints. This is data-converter & sampling maths; for media bitrate and file size use a bitrate API and for AC reactance and resonance use a resonance API.","contact":{"name":"PremiumApi","url":"https://www.oanor.com/by/premiumapi"}},"servers":[{"url":"https://api.oanor.com/adc-api","description":"oanor gateway"}],"tags":[{"name":"Converter"},{"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/quantization":{"get":{"operationId":"get_v1_quantization","tags":["Converter"],"summary":"Quantization & ENOB","description":"","parameters":[{"name":"bits","in":"query","required":false,"description":"Bit depth N","schema":{"type":"string"},"example":"12"},{"name":"vref","in":"query","required":false,"description":"Reference voltage (V)","schema":{"type":"string"},"example":"5"},{"name":"measured_snr_db","in":"query","required":false,"description":"Measured SNR (dB) for ENOB","schema":{"type":"string"},"example":"70"}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"note":"Max quantization error = LSB/2, rms noise = LSB/√12. ENOB = (SNR − 1.76)/6.02.","lsb_v":0.001220703125,"inputs":{"bits":12,"vref_v":5,"measured_snr_db":70},"enob_bits":11.3355,"ideal_snr_db":74,"max_quantization_error_v":0.000610351563,"rms_quantization_noise_v":0.000352386639},"meta":{"timestamp":"2026-06-04T18:38:09.838Z","request_id":"86495119-ad7b-4f0c-8332-75654763e48a"},"status":"ok","message":"Quantization","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/resolution":{"get":{"operationId":"get_v1_resolution","tags":["Converter"],"summary":"Bit resolution","description":"","parameters":[{"name":"bits","in":"query","required":true,"description":"Bit depth N","schema":{"type":"string"},"example":"12"},{"name":"vref","in":"query","required":false,"description":"Reference voltage (V) for LSB","schema":{"type":"string"},"example":"5"},{"name":"voltage","in":"query","required":false,"description":"Input voltage (V) to get the code","schema":{"type":"string"},"example":"2.5"}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"note":"levels = 2^N, LSB = Vref/2^N, ideal SNR = 6.02·N + 1.76 dB.","lsb_v":0.001220703125,"inputs":{"bits":12,"vref_v":5},"levels":4096,"lsb_mv":1.220703125,"lsb_uv":1220.703125,"max_code":4095,"output_code":2048,"full_scale_v":5,"ideal_snr_db":74,"input_voltage_v":2.5,"dynamic_range_db":72.2472},"meta":{"timestamp":"2026-06-04T18:38:09.951Z","request_id":"e9290bd4-f9b8-4883-aa89-6ea1962020af"},"status":"ok","message":"Resolution","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/sampling":{"get":{"operationId":"get_v1_sampling","tags":["Converter"],"summary":"Nyquist & aliasing","description":"","parameters":[{"name":"max_frequency","in":"query","required":false,"description":"Highest signal frequency (Hz)","schema":{"type":"string"},"example":"20000"},{"name":"sample_rate","in":"query","required":false,"description":"Sample rate fs (Hz)","schema":{"type":"string"},"example":"44100"},{"name":"input_frequency","in":"query","required":false,"description":"Input tone (Hz) for the alias","schema":{"type":"string"},"example":"30000"}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"note":"Nyquist: sample at ≥ 2× the highest signal frequency. A tone above fs/2 folds to |fin − round(fin/fs)·fs|.","inputs":{"sample_rate_hz":44100,"max_frequency_hz":20000,"input_frequency_hz":30000},"aliased":true,"nyquist_rate_hz":40000,"adequately_sampled":true,"alias_frequency_hz":14100,"nyquist_frequency_hz":22050},"meta":{"timestamp":"2026-06-04T18:38:10.079Z","request_id":"3a84fa4c-466e-4789-90ef-c546b1135671"},"status":"ok","message":"Sampling/Nyquist","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":"Bits are whole numbers; voltages in volts, frequencies in hertz. Vref is optional — supply it to get LSB and quantization figures.","service":"adc-api","formulae":{"lsb":"Vref / 2^N","enob":"(SNR − 1.76) / 6.02","alias":"|f_in − round(f_in/fs)·fs|","levels":"2^N","ideal_snr":"6.02·N + 1.76 dB","nyquist_rate":"2 · f_max","rms_quantization_noise":"LSB / √12"},"endpoints":{"GET /v1/meta":"This document.","GET /v1/sampling":"Nyquist rate, Nyquist frequency and alias frequency.","GET /v1/resolution":"Bits → levels, LSB step, full-scale range, ideal SNR and the code for a voltage.","GET /v1/quantization":"Quantization error/noise, ideal SNR and ENOB from a measured SNR."},"description":"ADC/DAC data-converter calculator: bit resolution (levels, LSB, ideal SNR, dynamic range), Nyquist sampling and aliasing, and quantization error / noise / ENOB."},"meta":{"timestamp":"2026-06-04T18:38:10.186Z","request_id":"6f1e244f-74af-44e2-b31d-d76ee383f938"},"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":40000,"rps_limit":8,"hard_limit":true},{"slug":"pro","name":"Pro","price_cents_month":2400,"monthly_call_quota":250000,"rps_limit":25,"hard_limit":true},{"slug":"mega","name":"Mega","price_cents_month":7500,"monthly_call_quota":1500000,"rps_limit":80,"hard_limit":true}],"x-oanor-marketplace-url":"https://www.oanor.com/api/adc-api"}