{"openapi":"3.1.0","info":{"title":"Wheatstone Bridge API","version":"1.0.0","description":"Wheatstone-bridge and strain-gauge maths as an API, computed locally and deterministically. The bridge endpoint takes the four arm resistances R1–R4 and an excitation voltage and returns the bridge output voltage between the two midpoints, Vout = Vin·(R2/(R1+R2) − R4/(R3+R4)), in volts and millivolts, the voltage at each midpoint, and whether the bridge is balanced (Vout = 0 when R1·R4 = R2·R3). The balance endpoint inverts it: give any three arms and it solves the fourth resistance that balances the bridge, the classic way a Wheatstone bridge measures an unknown resistance. The strain endpoint models a strain-gauge bridge — quarter, half or full — and converts in both directions between mechanical strain and electrical output: from a gauge factor and a strain (given directly, as microstrain or as a relative resistance change ΔR/R = GF·ε) it returns the output ratio and voltage Vout/Vin = (k/4)·GF·ε where k is the number of active arms, and from an output voltage and excitation it returns the strain and microstrain. Everything is computed locally and deterministically, so it is instant and private. Ideal for instrumentation and sensor tools, load-cell, pressure-sensor and RTD measurement design, strain-gauge and data-acquisition apps, and electronics education. Pure local computation — no key, no third-party service, instant. Live, nothing stored. 3 endpoints. This is bridge and strain-gauge measurement; for Ohm's law, voltage dividers and series/parallel resistor combinations use an Ohm's-law API.","contact":{"name":"PremiumApi","url":"https://www.oanor.com/by/premiumapi"}},"servers":[{"url":"https://api.oanor.com/wheatstone-api","description":"oanor gateway"}],"tags":[{"name":"Wheatstone"},{"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/balance":{"get":{"operationId":"get_v1_balance","tags":["Wheatstone"],"summary":"Solve the balancing arm","description":"","parameters":[{"name":"r1","in":"query","required":false,"description":"Arm R1 (Ω)","schema":{"type":"string"},"example":"1000"},{"name":"r2","in":"query","required":false,"description":"Arm R2 (Ω)","schema":{"type":"string"},"example":"2000"},{"name":"r3","in":"query","required":false,"description":"Arm R3 (Ω)","schema":{"type":"string"},"example":"1500"},{"name":"r4","in":"query","required":false,"description":"Arm R4 (Ω) — omit exactly one","schema":{"type":"string"}}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"known":{"r1":1000,"r2":2000,"r3":1500},"formula":"At balance R1·R4 = R2·R3, so the unknown arm follows from the other three.","unknown_arm":"r4","balanced_resistance_ohm":3000},"meta":{"timestamp":"2026-06-04T10:18:53.778Z","request_id":"24089ee0-faf9-46c4-acab-d6d6cc27ff16"},"status":"ok","message":"Solve the balancing arm","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/bridge":{"get":{"operationId":"get_v1_bridge","tags":["Wheatstone"],"summary":"Bridge output voltage","description":"","parameters":[{"name":"r1","in":"query","required":true,"description":"Arm R1 (Ω)","schema":{"type":"string"},"example":"1000"},{"name":"r2","in":"query","required":true,"description":"Arm R2 (Ω)","schema":{"type":"string"},"example":"1000"},{"name":"r3","in":"query","required":true,"description":"Arm R3 (Ω)","schema":{"type":"string"},"example":"1000"},{"name":"r4","in":"query","required":true,"description":"Arm R4 (Ω)","schema":{"type":"string"},"example":"1010"},{"name":"excitation","in":"query","required":true,"description":"Excitation voltage (V)","schema":{"type":"string"},"example":"10"}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"r1":1000,"r2":1000,"r3":1000,"r4":1010,"formula":"Vout = Vin·(R2/(R1+R2) − R4/(R3+R4)); balanced when R1·R4 = R2·R3.","balanced":false,"v_left_v":5,"v_right_v":5.02487562,"excitation_v":10,"output_voltage_v":-0.0248756219,"output_voltage_mv":-24.87562189,"balance_product_left":1010000,"balance_product_right":1000000},"meta":{"timestamp":"2026-06-04T10:18:53.864Z","request_id":"0457c01d-6c91-4536-a7da-7c4091b37417"},"status":"ok","message":"Bridge output voltage","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/strain":{"get":{"operationId":"get_v1_strain","tags":["Wheatstone"],"summary":"Strain-gauge bridge output","description":"","parameters":[{"name":"bridge_type","in":"query","required":false,"description":"quarter|half|full (default quarter)","schema":{"type":"string"},"example":"quarter"},{"name":"gauge_factor","in":"query","required":true,"description":"Gauge factor (e.g. 2.0)","schema":{"type":"string"},"example":"2.0"},{"name":"strain","in":"query","required":false,"description":"Strain ε","schema":{"type":"string"},"example":"0.001"},{"name":"microstrain","in":"query","required":false,"description":"Or strain in µε","schema":{"type":"string"}},{"name":"delta_r_over_r","in":"query","required":false,"description":"Or ΔR/R","schema":{"type":"string"}},{"name":"excitation","in":"query","required":false,"description":"Excitation voltage (V)","schema":{"type":"string"},"example":"10"},{"name":"output_voltage","in":"query","required":false,"description":"Or output voltage to back out strain","schema":{"type":"string"}}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"mode":"output_from_strain","strain":0.001,"formula":"Vout/Vin = (k/4)·GF·ε; ΔR/R = GF·ε.","active_arms":1,"bridge_type":"quarter","microstrain":1000,"excitation_v":10,"gauge_factor":2,"output_ratio":0.0005,"delta_r_over_r":0.002,"output_voltage_v":0.005,"output_voltage_mv":5,"output_per_volt_mv":0.5},"meta":{"timestamp":"2026-06-04T10:18:53.969Z","request_id":"9316fe51-b65a-4eed-9521-4386c9974fc1"},"status":"ok","message":"Strain-gauge bridge output","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":"wheatstone","note":"Wheatstone-bridge maths — computed locally and deterministically, no key, no third-party service.","endpoints":["/v1/bridge","/v1/balance","/v1/strain","/v1/meta"],"bridge_types":["quarter","half","full"]},"meta":{"timestamp":"2026-06-04T10:18:54.085Z","request_id":"4652f028-ee62-43a4-83aa-26fbb91c1f9c"},"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":8,"hard_limit":true},{"slug":"pro","name":"Pro","price_cents_month":2400,"monthly_call_quota":150000,"rps_limit":25,"hard_limit":true},{"slug":"mega","name":"Mega","price_cents_month":7400,"monthly_call_quota":769000,"rps_limit":80,"hard_limit":true}],"x-oanor-marketplace-url":"https://www.oanor.com/api/wheatstone-api"}