{"openapi":"3.1.0","info":{"title":"Material Fatigue API","version":"1.0.0","description":"Mechanical-fatigue engineering maths as an API, computed locally and deterministically. The stress-cycle endpoint decomposes a cyclic load given by its maximum and minimum stress into the alternating stress σa = (σmax − σmin)/2, the mean stress σm = (σmax + σmin)/2, the stress range and the stress ratio R = σmin/σmax, and names the loading (fully reversed at R = −1, repeated at R = 0). The criteria endpoint computes the infinite-life safety factor against fatigue using the three classic mean-stress theories — Goodman (1/n = σa/Se + σm/Sut, standard and safe), Soderberg (uses the yield strength, conservative) and Gerber (a parabola, least conservative) — from the alternating and mean stress, the endurance limit Se, the ultimate strength Sut and an optional yield strength. The endurance-limit endpoint estimates the corrected endurance limit Se = ka·kb·kc·kd·ke·Se' from the ultimate strength, with Se' = 0.5·Sut for steel and the Marin modifying factors for surface finish, size, load type, temperature and reliability. Stresses and strengths use any one consistent unit (MPa is typical). Everything is computed locally and deterministically, so it is instant and private. Ideal for mechanical, structural, automotive and aerospace-design app developers, durability and safety-factor tools, and engineering education. Pure local computation — no key, no third-party service, instant. Live, nothing stored. 3 endpoints. This is fatigue and endurance; for static stress transformation use a Mohr-circle API and for column buckling a buckling API.","contact":{"name":"PremiumApi","url":"https://www.oanor.com/by/premiumapi"}},"servers":[{"url":"https://api.oanor.com/fatigue-api","description":"oanor gateway"}],"tags":[{"name":"Fatigue"},{"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/criteria":{"get":{"operationId":"get_v1_criteria","tags":["Fatigue"],"summary":"Fatigue safety factors","description":"","parameters":[{"name":"stress_amplitude","in":"query","required":true,"description":"Alternating stress σa","schema":{"type":"string"},"example":"125"},{"name":"mean_stress","in":"query","required":true,"description":"Mean stress σm","schema":{"type":"string"},"example":"75"},{"name":"endurance_limit","in":"query","required":true,"description":"Endurance limit Se","schema":{"type":"string"},"example":"200"},{"name":"ultimate_strength","in":"query","required":true,"description":"Ultimate strength Sut","schema":{"type":"string"},"example":"400"},{"name":"yield_strength","in":"query","required":false,"description":"Yield strength Sy","schema":{"type":"string"},"example":"300"}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"note":"Mean-stress criteria for infinite life. Goodman is standard/safe, Soderberg conservative (uses yield), Gerber least conservative (parabola). A safety factor below 1 predicts fatigue failure.","inputs":{"mean_stress":75,"yield_strength":300,"endurance_limit":200,"stress_amplitude":125,"ultimate_strength":400},"infinite_life":true,"yield_safety_factor":1.5,"gerber_safety_factor":1.477248,"goodman_safety_factor":1.230769,"soderberg_safety_factor":1.142857},"meta":{"timestamp":"2026-06-05T11:30:33.667Z","request_id":"d283ad05-50b1-4ff9-b254-e1f28de82c70"},"status":"ok","message":"Fatigue criteria","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/endurance-limit":{"get":{"operationId":"get_v1_endurance_limit","tags":["Fatigue"],"summary":"Corrected endurance limit","description":"","parameters":[{"name":"ultimate_strength","in":"query","required":true,"description":"Ultimate strength Sut (MPa)","schema":{"type":"string"},"example":"400"},{"name":"surface_factor","in":"query","required":false,"description":"Surface ka","schema":{"type":"string"},"example":"1"},{"name":"size_factor","in":"query","required":false,"description":"Size kb","schema":{"type":"string"},"example":"1"},{"name":"load_factor","in":"query","required":false,"description":"Load kc","schema":{"type":"string"},"example":"1"},{"name":"temperature_factor","in":"query","required":false,"description":"Temperature kd","schema":{"type":"string"},"example":"1"},{"name":"reliability_factor","in":"query","required":false,"description":"Reliability ke","schema":{"type":"string"},"example":"1"}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"note":"Se' = 0.5·Sut for steel (capped at 700 MPa above Sut ≈ 1400 MPa). The Marin factors ka·kb·kc·kd·ke correct for surface finish, size, load type, temperature and reliability.","inputs":{"load_factor":1,"size_factor":1,"surface_factor":1,"ultimate_strength":400,"reliability_factor":1,"temperature_factor":1},"corrected_endurance_limit":200,"rotating_beam_endurance_limit":200},"meta":{"timestamp":"2026-06-05T11:30:33.775Z","request_id":"9a6949c1-79dc-43a0-a981-b1b950326a38"},"status":"ok","message":"Endurance limit","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/stress-cycle":{"get":{"operationId":"get_v1_stress_cycle","tags":["Fatigue"],"summary":"Stress cycle","description":"","parameters":[{"name":"stress_max","in":"query","required":true,"description":"Maximum stress","schema":{"type":"string"},"example":"200"},{"name":"stress_min","in":"query","required":true,"description":"Minimum stress","schema":{"type":"string"},"example":"-50"}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"note":"Alternating stress σa = (σmax − σmin)/2 and mean stress σm = (σmax + σmin)/2. R = σmin/σmax: −1 is fully reversed, 0 is repeated.","inputs":{"stress_max":200,"stress_min":-50},"mean_stress":75,"loading_type":"fluctuating","stress_range":250,"stress_ratio_R":-0.25,"stress_amplitude":125,"amplitude_ratio_A":1.666667},"meta":{"timestamp":"2026-06-05T11:30:33.871Z","request_id":"cff9df14-34b9-4632-8fe2-b7eccf1b4636"},"status":"ok","message":"Stress cycle","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":"Stresses and strengths in any one consistent unit (MPa typical). Mean-stress criteria treat compressive mean stress as non-damaging (σm clamped at 0). Marin factors default to 1.","service":"fatigue-api","formulae":{"gerber":"(n·σa)/Se + (n·σm/Sut)² = 1","goodman":"1/n = σa/Se + σm/Sut","soderberg":"1/n = σa/Se + σm/Sy"},"endpoints":{"GET /v1/meta":"This document.","GET /v1/criteria":"Goodman, Soderberg and Gerber safety factors for infinite life.","GET /v1/stress-cycle":"Alternating and mean stress, range and stress ratio from max/min stress.","GET /v1/endurance-limit":"Corrected endurance limit from Sut and the Marin modifying factors."},"description":"Mechanical fatigue calculator: stress cycle (alternating/mean/ratio), mean-stress safety factors (Goodman, Soderberg, Gerber) and the Marin-corrected endurance limit."},"meta":{"timestamp":"2026-06-05T11:30:33.960Z","request_id":"7222a7db-90f8-4ee5-8911-6e5e78dd8f4f"},"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":2100,"rps_limit":2,"hard_limit":true},{"slug":"starter","name":"Starter","price_cents_month":900,"monthly_call_quota":37000,"rps_limit":6,"hard_limit":true},{"slug":"pro","name":"Pro","price_cents_month":2600,"monthly_call_quota":245000,"rps_limit":15,"hard_limit":true},{"slug":"mega","name":"Mega","price_cents_month":7800,"monthly_call_quota":1680000,"rps_limit":40,"hard_limit":true}],"x-oanor-marketplace-url":"https://www.oanor.com/api/fatigue-api"}