{"openapi":"3.1.0","info":{"title":"Vibration & Natural Frequency API","version":"1.0.0","description":"Single-degree-of-freedom vibration (spring-mass-damper) maths as an API, computed locally and deterministically. The natural endpoint gives the undamped natural frequency of a spring-mass system, ωn = √(k/m), fn = ωn/2π and the period T = 1/fn, and solves for whichever of the stiffness, mass or natural frequency you leave out. The damped endpoint analyses a damped system from the stiffness, mass and either a damping coefficient or a damping ratio: it returns the critical damping coefficient cc = 2√(km), the damping ratio ζ = c/cc, the classification (underdamped, critically damped or overdamped), and — for an underdamped system — the damped natural frequency ωd = ωn·√(1−ζ²), its period, and the logarithmic decrement δ = 2πζ/√(1−ζ²). The pendulum endpoint gives the period and frequency of a simple pendulum, T = 2π·√(L/g), and solves the length from a target period, with gravity adjustable. Everything is computed locally and deterministically, so it is instant and private. Ideal for mechanical, structural and earthquake-engineering tools, machine-condition-monitoring and isolation-design apps, instrument and clock design, and physics education. Pure local computation — no key, no third-party service, instant. Live, nothing stored. 3 endpoints. This is discrete spring-mass-damper vibration; for standing waves on strings and in air columns use a standing-wave API.","contact":{"name":"PremiumApi","url":"https://www.oanor.com/by/premiumapi"}},"servers":[{"url":"https://api.oanor.com/vibration-api","description":"oanor gateway"}],"tags":[{"name":"Vibration"},{"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/damped":{"get":{"operationId":"get_v1_damped","tags":["Vibration"],"summary":"Damped vibration & damping ratio","description":"","parameters":[{"name":"stiffness","in":"query","required":true,"description":"Spring stiffness k (N/m)","schema":{"type":"string"},"example":"1000"},{"name":"mass","in":"query","required":true,"description":"Mass m (kg)","schema":{"type":"string"},"example":"2"},{"name":"damping_coefficient","in":"query","required":false,"description":"Damping coefficient c (N·s/m)","schema":{"type":"string"},"example":"20"},{"name":"damping_ratio","in":"query","required":false,"description":"Or damping ratio ζ directly","schema":{"type":"string"}}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"formula":"ζ = c/(2√(km)); ωd = ωn√(1−ζ²); δ = 2πζ/√(1−ζ²).","mass_kg":2,"damping_ratio":0.2236068,"stiffness_n_m":1000,"classification":"underdamped","damped_period_s":0.288292,"damping_coefficient":20,"logarithmic_decrement":1.441462,"damped_natural_frequency_hz":3.468702,"critical_damping_coefficient":89.442719,"undamped_natural_frequency_hz":3.558813,"damped_natural_frequency_rad_s":21.794495,"undamped_natural_frequency_rad_s":22.36068},"meta":{"timestamp":"2026-06-04T10:18:49.559Z","request_id":"f8c73c15-a0ff-4350-929e-78d63c491e60"},"status":"ok","message":"Damped vibration","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/natural":{"get":{"operationId":"get_v1_natural","tags":["Vibration"],"summary":"Undamped natural frequency","description":"","parameters":[{"name":"stiffness","in":"query","required":false,"description":"Spring stiffness k (N/m)","schema":{"type":"string"},"example":"1000"},{"name":"mass","in":"query","required":false,"description":"Mass m (kg)","schema":{"type":"string"},"example":"2"},{"name":"natural_frequency","in":"query","required":false,"description":"Or natural frequency (Hz) to solve k/m","schema":{"type":"string"}}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"formula":"ωn = √(k/m); fn = ωn/2π; T = 1/fn.","mass_kg":2,"period_s":0.280993,"frequency_hz":3.558813,"stiffness_n_m":1000,"angular_frequency_rad_s":22.36068},"meta":{"timestamp":"2026-06-04T10:18:49.636Z","request_id":"c5f4a1e5-1fc3-466c-bed1-24d8df157700"},"status":"ok","message":"Natural frequency","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/pendulum":{"get":{"operationId":"get_v1_pendulum","tags":["Vibration"],"summary":"Simple pendulum period","description":"","parameters":[{"name":"length","in":"query","required":false,"description":"Pendulum length L (m)","schema":{"type":"string"},"example":"1"},{"name":"period","in":"query","required":false,"description":"Or period (s) to solve length","schema":{"type":"string"}},{"name":"gravity","in":"query","required":false,"description":"Gravity (default 9.80665)","schema":{"type":"string"}}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"formula":"T = 2π·√(L/g); ωn = √(g/L); valid for small swings.","length_m":1,"period_s":2.006409,"gravity_ms2":9.80665,"frequency_hz":0.498403,"angular_frequency_rad_s":3.131557},"meta":{"timestamp":"2026-06-04T10:18:49.743Z","request_id":"d1c176ff-4a73-4acf-b6e3-a31862023735"},"status":"ok","message":"Simple pendulum","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":{"api":"vibration","note":"Spring-mass-damper (SDOF) vibration — computed locally and deterministically, no key, no third-party service.","endpoints":["/v1/natural","/v1/damped","/v1/pendulum","/v1/meta"],"gravity_default_ms2":9.80665},"meta":{"timestamp":"2026-06-04T10:18:49.843Z","request_id":"ec80d3b3-30bf-4a20-8e09-a417d9f4d891"},"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":25000,"rps_limit":5,"hard_limit":true},{"slug":"pro","name":"Pro","price_cents_month":2400,"monthly_call_quota":150000,"rps_limit":15,"hard_limit":true},{"slug":"mega","name":"Mega","price_cents_month":7500,"monthly_call_quota":751000,"rps_limit":40,"hard_limit":true}],"x-oanor-marketplace-url":"https://www.oanor.com/api/vibration-api"}