{"openapi":"3.1.0","info":{"title":"Bicycle Gearing & Fit Calc","version":"1.0.0","description":"Gear ratios and speed, cadence, gear tables, chain length, wheel circumference, climb grades, saddle height and frame size. One call, one computed answer, no accounts or API keys. Machine-payable over x402.","x-guidance":"Bicycle Gearing & Fit Calc: Gear ratios and speed, cadence, gear tables, chain length, wheel circumference, climb grades, saddle height and frame size. Use /gear-ratio for gear inches, development and speed, /cadence-for-speed to find the cadence for a target speed, /gear-table to compare cassette cogs and chainrings, /chain-length to size a chain, /wheel-size to estimate circumference, /climb-gradient for grade and climbing rate, /saddle-height for starting saddle height and /frame-size for a frame size estimate. Each paid GET returns a computed verdict with the reasons, the source and what was NOT checked. A verdict of UNVERIFIED means a lookup failed: treat it as unknown. No account or key: pay per call in USDC over x402."},"servers":[{"url":"https://bike-calc.x402tookit.com"}],"paths":{"/cadence-for-speed":{"get":{"operationId":"cadence_for_speed","summary":"Cadence needed to hold a target speed in a given gear, and the chainring-to-cog ratio needed for a speed at a cadence.","description":"Cadence needed to hold a target speed in a given gear, and the chainring-to-cog ratio needed for a speed at a cadence.","tags":["cycling","cadence","speed","gearing"],"parameters":[{"name":"speedKmh","in":"query","required":false,"description":"Target speed in km/h (use speedKmh or speedMph)","schema":{"type":"number"}},{"name":"speedMph","in":"query","required":false,"description":"Target speed in mph","schema":{"type":"number"}},{"name":"chainring","in":"query","required":false,"description":"Chainring teeth, to get the cadence for that gear","schema":{"type":"integer"}},{"name":"cog","in":"query","required":false,"description":"Rear cog teeth","schema":{"type":"integer"}},{"name":"cadence","in":"query","required":false,"description":"Cadence in rpm, to get the ratio needed (default 90)","schema":{"type":"number"}},{"name":"wheel","in":"query","required":false,"description":"Tyre preset: 700x23c, 700x25c, 700x28c, 700x32c, 700x35c, 700x38c, 26x2.0 (default 700x25c)","schema":{"type":"string"}},{"name":"circumferenceMm","in":"query","required":false,"description":"Rolling circumference in mm instead of a preset","schema":{"type":"number"}}],"responses":{"200":{"description":"The answer.","content":{"application/json":{"schema":{"type":"object","properties":{"verdict":{"type":["null","string"]},"summary":{"type":["null","string"]},"reasons":{"type":["array","null"],"items":{"type":"string"}},"speedKmh":{"type":["null","number"]},"speedMph":{"type":["null","number"]},"circumferenceMm":{"type":["null","number"]},"requiredDevelopmentAtCadenceMeters":{"type":["null","number"]},"requiredRatioAtCadence":{"type":["null","number"]},"atCadenceRpm":{"type":["null","number"]},"chainring":{"type":["null","number"]},"cog":{"type":["null","number"]},"cadenceNeededRpm":{"type":["null","number"]},"degraded":{"type":["boolean","null"]},"notChecked":{"type":["array","null"],"items":{"type":"string"}},"source":{"type":["null","string"]},"asOf":{"type":["null","string"]},"disclaimer":{"type":["null","string"]}}},"example":{"verdict":"COMPUTED","summary":"35 km/h at 90 rpm needs a ratio of 3.0791 (6.48 m per turn). In 50/17 you need 94.2 rpm.","reasons":["Cadence = speed / (ratio x wheel circumference)."],"speedKmh":35,"speedMph":21.748,"circumferenceMm":2105,"requiredDevelopmentAtCadenceMeters":6.481,"requiredRatioAtCadence":3.0791,"atCadenceRpm":90,"chainring":50,"cog":17,"cadenceNeededRpm":94.2,"degraded":false,"notChecked":["wind, gradient and the power needed to hold the speed","tyre deflection","…1 more"],"source":"computed locally (speed = ratio x circumference x cadence)","asOf":"2026-10-12T01:50:56.140Z","disclaimer":"Screening signal computed from the named public source. Not financial, legal or investment advice; provided as is. Verify at the source before acting."}}}},"400":{"description":"A parameter was missing or out of range."},"402":{"description":"Payment Required"},"502":{"description":"The upstream source failed or timed out."}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.0200"},"protocols":[{"x402":{"network":"eip155:8453","scheme":"exact","currency":"USDC","endpoint":"https://bike-calc.x402tookit.com/cadence-for-speed"}},{"x402":{"network":"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp","scheme":"exact","currency":"USDC","endpoint":"https://bike-calc.x402tookit.com/cadence-for-speed"}},{"x402":{"network":"eip155:137","scheme":"exact","currency":"USDC","endpoint":"https://bike-calc.x402tookit.com/cadence-for-speed"}},{"x402":{"network":"eip155:42161","scheme":"exact","currency":"USDC","endpoint":"https://bike-calc.x402tookit.com/cadence-for-speed"}}]}}},"/chain-length":{"get":{"operationId":"chain_length","summary":"Chain length in links, rounded up to even, from chainstay length and chainring and cog teeth, with the exact figure.","description":"Chain length in links, rounded up to even, from chainstay length and chainring and cog teeth, with the exact figure.","tags":["cycling","chain","links","drivetrain"],"parameters":[{"name":"chainstayMm","in":"query","required":true,"description":"Centre-to-centre distance between bottom bracket and rear axle in mm (typically 405 to 440)","schema":{"type":"number"}},{"name":"chainring","in":"query","required":true,"description":"Chainring teeth in use (the biggest, for a derailleur bike)","schema":{"type":"integer"}},{"name":"cog","in":"query","required":true,"description":"Rear cog teeth in use (the biggest cog, for a derailleur bike)","schema":{"type":"integer"}},{"name":"pitchInches","in":"query","required":false,"description":"Chain pitch in inches (default 0.5, standard bicycle chain)","schema":{"type":"number"}}],"responses":{"200":{"description":"The answer.","content":{"application/json":{"schema":{"type":"object","properties":{"verdict":{"type":["null","string"]},"summary":{"type":["null","string"]},"reasons":{"type":["array","null"],"items":{"type":"string"}},"chainstayInches":{"type":["null","number"]},"pitchInches":{"type":["null","number"]},"exactLinks":{"type":["null","number"]},"linksRoundedUpEven":{"type":["null","number"]},"pairs":{"type":["null","number"]},"chainLengthInches":{"type":["null","number"]},"chainLengthMm":{"type":["null","number"]},"toothDifference":{"type":["null","number"]},"degraded":{"type":["boolean","null"]},"notChecked":{"type":["array","null"],"items":{"type":"string"}},"source":{"type":["null","string"]},"asOf":{"type":["null","string"]},"disclaimer":{"type":["null","string"]}}},"example":{"verdict":"COMPUTED","summary":"105.51 links needed: use 106 links (53 inner-plus-outer pairs).","reasons":["Links = (T1 + T2)/2 + 2C/p + ((T2 - T1)/2pi)^2 x p/C, with C the centre distance and p the pitch; round up to an even count.","Add the chain length for the biggest-big combination only if your derailleur can take it up."],"chainstayInches":16.535,"pitchInches":0.5,"exactLinks":105.512,"linksRoundedUpEven":106,"pairs":53,"chainLengthInches":53,"chainLengthMm":1346.2,"toothDifference":22,"degraded":false,"notChecked":["derailleur capacity (the chain must also wrap the biggest-big combination without stretching the derailleur)","full-suspension chain growth","…1 more"],"source":"computed locally (open-chain length formula)","asOf":"2026-10-12T01:50:56.395Z","disclaimer":"Screening signal computed from the named public source. Not financial, legal or investment advice; provided as is. Verify at the source before acting."}}}},"400":{"description":"A parameter was missing or out of range."},"402":{"description":"Payment Required"},"502":{"description":"The upstream source failed or timed out."}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.0200"},"protocols":[{"x402":{"network":"eip155:8453","scheme":"exact","currency":"USDC","endpoint":"https://bike-calc.x402tookit.com/chain-length"}},{"x402":{"network":"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp","scheme":"exact","currency":"USDC","endpoint":"https://bike-calc.x402tookit.com/chain-length"}},{"x402":{"network":"eip155:137","scheme":"exact","currency":"USDC","endpoint":"https://bike-calc.x402tookit.com/chain-length"}},{"x402":{"network":"eip155:42161","scheme":"exact","currency":"USDC","endpoint":"https://bike-calc.x402tookit.com/chain-length"}}]}}},"/climb-gradient":{"get":{"operationId":"climb_gradient","summary":"Gradient percent and angle from rise and distance, plus climbing rate (VAM) and the time to climb at a given rate.","description":"Gradient percent and angle from rise and distance, plus climbing rate (VAM) and the time to climb at a given rate.","tags":["cycling","climb","gradient","vam"],"parameters":[{"name":"riseMeters","in":"query","required":true,"description":"Vertical gain in metres","schema":{"type":"number"}},{"name":"distanceMeters","in":"query","required":true,"description":"Distance along the road in metres (horizontal run is derived)","schema":{"type":"number"}},{"name":"vam","in":"query","required":false,"description":"Climbing rate in metres per hour, to get the time (default 1000)","schema":{"type":"number"}},{"name":"timeMinutes","in":"query","required":false,"description":"Time taken in minutes, to get the VAM instead","schema":{"type":"number"}}],"responses":{"200":{"description":"The answer.","content":{"application/json":{"schema":{"type":"object","properties":{"verdict":{"type":["null","string"]},"summary":{"type":["null","string"]},"reasons":{"type":["array","null"],"items":{"type":"string"}},"gradePercent":{"type":["null","number"]},"angleDegrees":{"type":["null","number"]},"horizontalRunMeters":{"type":["null","number"]},"roadDistanceMeters":{"type":["null","number"]},"riseMeters":{"type":["null","number"]},"category":{"type":["null","string"]},"vamMetersPerHour":{"type":["null","number"]},"minutesToClimb":{"type":["null","number"]},"averageSpeedKmh":{"type":["null","number"]},"feetClimbed":{"type":["null","number"]},"degraded":{"type":["boolean","null"]},"notChecked":{"type":["array","null"],"items":{"type":"string"}},"source":{"type":["null","string"]},"asOf":{"type":["null","string"]},"disclaimer":{"type":["null","string"]}}},"example":{"verdict":"COMPUTED","summary":"7.5% (4.3 degrees) over 8 km: steady climb; at 1200 m/h it takes 30 minutes.","reasons":["Gradient = rise / horizontal run, where run = sqrt(road distance^2 - rise^2); VAM = metres climbed per hour."],"gradePercent":7.521,"angleDegrees":4.301,"horizontalRunMeters":7977.5,"roadDistanceMeters":8000,"riseMeters":600,"category":"steady climb","vamMetersPerHour":1200,"minutesToClimb":30,"averageSpeedKmh":16,"feetClimbed":1969,"degraded":false,"notChecked":["the steepest section, which can be far above the average gradient","altitude effects on power","…1 more"],"source":"computed locally (trigonometry)","asOf":"2026-10-12T01:50:56.659Z","disclaimer":"Screening signal computed from the named public source. Not financial, legal or investment advice; provided as is. Verify at the source before acting."}}}},"400":{"description":"A parameter was missing or out of range."},"402":{"description":"Payment Required"},"502":{"description":"The upstream source failed or timed out."}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.0200"},"protocols":[{"x402":{"network":"eip155:8453","scheme":"exact","currency":"USDC","endpoint":"https://bike-calc.x402tookit.com/climb-gradient"}},{"x402":{"network":"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp","scheme":"exact","currency":"USDC","endpoint":"https://bike-calc.x402tookit.com/climb-gradient"}},{"x402":{"network":"eip155:137","scheme":"exact","currency":"USDC","endpoint":"https://bike-calc.x402tookit.com/climb-gradient"}},{"x402":{"network":"eip155:42161","scheme":"exact","currency":"USDC","endpoint":"https://bike-calc.x402tookit.com/climb-gradient"}}]}}},"/frame-size":{"get":{"operationId":"frame_size","summary":"Rough bike frame size (seat tube cm and S/M/L) from inseam by bike type, with a height-based letter size cross-check.","description":"Rough bike frame size (seat tube cm and S/M/L) from inseam by bike type, with a height-based letter size cross-check.","tags":["cycling","bike-fit","frame-size","sizing"],"parameters":[{"name":"inseam","in":"query","required":true,"description":"Inseam in cm (or inches with unit=in)","schema":{"type":"number"}},{"name":"bikeType","in":"query","required":false,"description":"road, road-compact, gravel, mountain, hybrid, city (default road)","schema":{"type":"string"}},{"name":"unit","in":"query","required":false,"description":"cm (default) or in","schema":{"type":"string"}},{"name":"heightCm","in":"query","required":false,"description":"Body height in cm, for the S/M/L cross-check","schema":{"type":"number"}}],"responses":{"200":{"description":"The answer.","content":{"application/json":{"schema":{"type":"object","properties":{"verdict":{"type":["null","string"]},"summary":{"type":["null","string"]},"reasons":{"type":["array","null"],"items":{"type":"string"}},"bikeType":{"type":["null","string"]},"factor":{"type":["null","number"]},"inseamCm":{"type":["null","number"]},"seatTubeCm":{"type":["null","number"]},"seatTubeInches":{"type":["null","number"]},"nearestEvenCm":{"type":["null","number"]},"mountainBikeInchesIfApplicable":{},"adjacentSizesCm":{"type":["array","null"],"items":{"type":"number"}},"heightCm":{"type":["null","number"]},"letterSizeFromHeight":{"type":["null","string"]},"degraded":{"type":["boolean","null"]},"notChecked":{"type":["array","null"],"items":{"type":"string"}},"source":{"type":["null","string"]},"asOf":{"type":["null","string"]},"disclaimer":{"type":["null","string"]}}},"example":{"verdict":"COMPUTED","summary":"A road bike: seat tube about 52 cm (52 cm in even sizes); height 175 cm suggests M.","reasons":["Frame size is a starting point: compare reach and stack with a bike you already ride comfortably.","Compact road frames list a virtual seat tube, so brands differ."],"bikeType":"road","factor":0.65,"inseamCm":80,"seatTubeCm":52,"seatTubeInches":20.5,"nearestEvenCm":52,"mountainBikeInchesIfApplicable":null,"adjacentSizesCm":[50,54],"heightCm":175,"letterSizeFromHeight":"M","degraded":false,"notChecked":["frame geometry differences between brands (reach and stack matter more than seat-tube length)","torso and arm length, flexibility and riding position","…1 more"],"source":"computed locally (inseam x type factor; common manufacturer height charts)","asOf":"2026-10-12T01:50:56.921Z","disclaimer":"Screening signal computed from the named public source. Not financial, legal or investment advice; provided as is. Verify at the source before acting."}}}},"400":{"description":"A parameter was missing or out of range."},"402":{"description":"Payment Required"},"502":{"description":"The upstream source failed or timed out."}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.0200"},"protocols":[{"x402":{"network":"eip155:8453","scheme":"exact","currency":"USDC","endpoint":"https://bike-calc.x402tookit.com/frame-size"}},{"x402":{"network":"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp","scheme":"exact","currency":"USDC","endpoint":"https://bike-calc.x402tookit.com/frame-size"}},{"x402":{"network":"eip155:137","scheme":"exact","currency":"USDC","endpoint":"https://bike-calc.x402tookit.com/frame-size"}},{"x402":{"network":"eip155:42161","scheme":"exact","currency":"USDC","endpoint":"https://bike-calc.x402tookit.com/frame-size"}}]}}},"/gear-ratio":{"get":{"operationId":"gear_ratio","summary":"Gear ratio, gear inches, development per pedal turn and speed at a cadence for a chainring and cog on a given wheel.","description":"Gear ratio, gear inches, development per pedal turn and speed at a cadence for a chainring and cog on a given wheel.","tags":["cycling","gearing","gear-inches","development"],"parameters":[{"name":"chainring","in":"query","required":true,"description":"Chainring teeth (for example 50)","schema":{"type":"integer"}},{"name":"cog","in":"query","required":true,"description":"Rear cog teeth (for example 17)","schema":{"type":"integer"}},{"name":"wheel","in":"query","required":false,"description":"Tyre preset: 700x23c, 700x25c, 700x28c, 700x32c, 700x35c, 700x38c, 26x2.0 (default 700x25c)","schema":{"type":"string"}},{"name":"circumferenceMm","in":"query","required":false,"description":"Rolling circumference in mm instead of a preset (measure it on the bike)","schema":{"type":"number"}},{"name":"diameterInches","in":"query","required":false,"description":"Wheel diameter in inches instead (for example 26 for a 26 inch wheel)","schema":{"type":"number"}},{"name":"cadence","in":"query","required":false,"description":"Pedalling cadence in rpm (default 90)","schema":{"type":"number"}}],"responses":{"200":{"description":"The answer.","content":{"application/json":{"schema":{"type":"object","properties":{"verdict":{"type":["null","string"]},"summary":{"type":["null","string"]},"reasons":{"type":["array","null"],"items":{"type":"string"}},"chainring":{"type":["null","number"]},"cog":{"type":["null","number"]},"ratio":{"type":["null","number"]},"circumferenceMm":{"type":["null","number"]},"wheelDiameterInches":{"type":["null","number"]},"gearInches":{"type":["null","number"]},"developmentMeters":{"type":["null","number"]},"cadenceRpm":{"type":["null","number"]},"speedKmh":{"type":["null","number"]},"speedMph":{"type":["null","number"]},"metersPerMinute":{"type":["null","number"]},"degraded":{"type":["boolean","null"]},"notChecked":{"type":["array","null"],"items":{"type":"string"}},"source":{"type":["null","string"]},"asOf":{"type":["null","string"]},"disclaimer":{"type":["null","string"]}}},"example":{"verdict":"COMPUTED","summary":"50/17 is ratio 2.941, 77.6 gear inches, 6.19 m per pedal turn: 33.4 km/h (20.8 mph) at 90 rpm.","reasons":["Gear inches = ratio x wheel diameter in inches; development = ratio x wheel circumference."],"chainring":50,"cog":17,"ratio":2.9412,"circumferenceMm":2105,"wheelDiameterInches":26.38,"gearInches":77.59,"developmentMeters":6.191,"cadenceRpm":90,"speedKmh":33.43,"speedMph":20.77,"metersPerMinute":557.2,"degraded":false,"notChecked":["tyre deflection and wear, which change the real circumference by 1 to 2%","crank length (it changes leverage, not speed)","…1 more"],"source":"computed locally (ratio x wheel circumference)","asOf":"2026-10-12T01:50:57.185Z","disclaimer":"Screening signal computed from the named public source. Not financial, legal or investment advice; provided as is. Verify at the source before acting."}}}},"400":{"description":"A parameter was missing or out of range."},"402":{"description":"Payment Required"},"502":{"description":"The upstream source failed or timed out."}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.0200"},"protocols":[{"x402":{"network":"eip155:8453","scheme":"exact","currency":"USDC","endpoint":"https://bike-calc.x402tookit.com/gear-ratio"}},{"x402":{"network":"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp","scheme":"exact","currency":"USDC","endpoint":"https://bike-calc.x402tookit.com/gear-ratio"}},{"x402":{"network":"eip155:137","scheme":"exact","currency":"USDC","endpoint":"https://bike-calc.x402tookit.com/gear-ratio"}},{"x402":{"network":"eip155:42161","scheme":"exact","currency":"USDC","endpoint":"https://bike-calc.x402tookit.com/gear-ratio"}}]}}},"/gear-table":{"get":{"operationId":"gear_table","summary":"Gear inches and speed at a cadence for every chainring and cog in a drivetrain, with the range, steps and duplicate gears.","description":"Gear inches and speed at a cadence for every chainring and cog in a drivetrain, with the range, steps and duplicate gears.","tags":["cycling","cassette","gearing","drivetrain"],"parameters":[{"name":"chainrings","in":"query","required":true,"description":"Comma-separated chainring teeth, for example 50,34","schema":{"type":"string"}},{"name":"cogs","in":"query","required":true,"description":"Comma-separated cog teeth, for example 11,12,13,14,15,17,19,21,24,28","schema":{"type":"string"}},{"name":"wheel","in":"query","required":false,"description":"Tyre preset: 700x23c, 700x25c, 700x28c, 700x32c, 700x35c, 700x38c, 26x2.0 (default 700x25c)","schema":{"type":"string"}},{"name":"circumferenceMm","in":"query","required":false,"description":"Rolling circumference in mm instead of a preset","schema":{"type":"number"}},{"name":"cadence","in":"query","required":false,"description":"Cadence in rpm for the speed column (default 90)","schema":{"type":"number"}}],"responses":{"200":{"description":"The answer.","content":{"application/json":{"schema":{"type":"object","properties":{"verdict":{"type":["null","string"]},"summary":{"type":["null","string"]},"reasons":{"type":["array","null"],"items":{"type":"string"}},"combinations":{"type":["null","number"]},"lowestGear":{"type":["null","object"],"properties":{"chainring":{"type":["null","number"]},"cog":{"type":["null","number"]},"ratio":{"type":["null","number"]},"gearInches":{"type":["null","number"]},"speedKmh":{"type":["null","number"]}}},"highestGear":{"type":["null","object"],"properties":{"chainring":{"type":["null","number"]},"cog":{"type":["null","number"]},"ratio":{"type":["null","number"]},"gearInches":{"type":["null","number"]},"speedKmh":{"type":["null","number"]}}},"rangePercent":{"type":["null","number"]},"averageStepPercent":{"type":["null","number"]},"largestStepPercent":{"type":["null","number"]},"nearDuplicateGears":{"type":["null","number"]},"sortedByRatio":{"type":["array","null"],"items":{"type":"object","properties":{"chainring":{"type":["null","number"]},"cog":{"type":["null","number"]},"ratio":{"type":["null","number"]},"gearInches":{"type":["null","number"]},"speedKmh":{"type":["null","number"]}}}},"circumferenceMm":{"type":["null","number"]},"cadenceRpm":{"type":["null","number"]},"degraded":{"type":["boolean","null"]},"notChecked":{"type":["array","null"],"items":{"type":"string"}},"source":{"type":["null","string"]},"asOf":{"type":["null","string"]},"disclaimer":{"type":["null","string"]}}},"example":{"verdict":"COMPUTED","summary":"20 combinations from 32 (34/28) to 119.9 gear inches (50/11); range 374%.","reasons":["Gears are sorted by ratio; steps are the percentage jump from one gear to the next higher one."],"combinations":20,"lowestGear":{"chainring":34,"cog":28,"ratio":1.214,"gearInches":32,"speedKmh":13.8},"highestGear":{"chainring":50,"cog":11,"ratio":4.545,"gearInches":119.9,"speedKmh":51.7},"rangePercent":374.4,"averageStepPercent":7.27,"largestStepPercent":16.7,"nearDuplicateGears":0,"sortedByRatio":[{"chainring":34,"cog":28,"ratio":1.214,"gearInches":32,"speedKmh":13.8},{"chainring":34,"cog":24,"ratio":1.417,"gearInches":37.4,"speedKmh":16.1}],"circumferenceMm":2105,"cadenceRpm":90,"degraded":false,"notChecked":["cross-chaining (big-big and small-small combinations that wear the chain)","front and rear derailleur capacity","…1 more"],"source":"computed locally (ratio x circumference)","asOf":"2026-10-12T01:50:57.447Z","disclaimer":"Screening signal computed from the named public source. Not financial, legal or investment advice; provided as is. Verify at the source before acting."}}}},"400":{"description":"A parameter was missing or out of range."},"402":{"description":"Payment Required"},"502":{"description":"The upstream source failed or timed out."}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.0200"},"protocols":[{"x402":{"network":"eip155:8453","scheme":"exact","currency":"USDC","endpoint":"https://bike-calc.x402tookit.com/gear-table"}},{"x402":{"network":"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp","scheme":"exact","currency":"USDC","endpoint":"https://bike-calc.x402tookit.com/gear-table"}},{"x402":{"network":"eip155:137","scheme":"exact","currency":"USDC","endpoint":"https://bike-calc.x402tookit.com/gear-table"}},{"x402":{"network":"eip155:42161","scheme":"exact","currency":"USDC","endpoint":"https://bike-calc.x402tookit.com/gear-table"}}]}}},"/saddle-height":{"get":{"operationId":"saddle_height","summary":"Starting saddle height from inseam by the LeMond (0.883) and Hamley (1.09) rules, plus the Holmes knee-angle check.","description":"Starting saddle height from inseam by the LeMond (0.883) and Hamley (1.09) rules, plus the Holmes knee-angle check.","tags":["cycling","bike-fit","saddle","inseam"],"parameters":[{"name":"inseam","in":"query","required":true,"description":"Inseam length (crotch to floor, barefoot)","schema":{"type":"number"}},{"name":"unit","in":"query","required":false,"description":"cm (default) or in","schema":{"type":"string"}}],"responses":{"200":{"description":"The answer.","content":{"application/json":{"schema":{"type":"object","properties":{"verdict":{"type":["null","string"]},"summary":{"type":["null","string"]},"reasons":{"type":["array","null"],"items":{"type":"string"}},"inseamCm":{"type":["null","number"]},"inseamInches":{"type":["null","number"]},"lemondCm":{"type":["null","number"]},"lemondInches":{"type":["null","number"]},"hamleyCm":{"type":["null","number"]},"hamleyInches":{"type":["null","number"]},"hamleyMinusLemondCm":{"type":["null","number"]},"holmesTargetKneeAngleDegrees":{"type":["array","null"],"items":{"type":"number"}},"stepAdjustMm":{"type":["array","null"],"items":{"type":"number"}},"degraded":{"type":["boolean","null"]},"notChecked":{"type":["array","null"],"items":{"type":"string"}},"source":{"type":["null","string"]},"asOf":{"type":["null","string"]},"disclaimer":{"type":["null","string"]}}},"example":{"verdict":"COMPUTED","summary":"For a 80 cm inseam, LeMond puts the saddle 70.6 cm from the bottom bracket centre along the seat tube to the saddle top; Hamley gives 87.2 cm from the pedal axle (pedal at its lowest).","reasons":["Start at the LeMond figure, then adjust in 2 to 3 mm steps: the knee should keep about a 25 to 35 degree bend at the bottom of the pedal stroke (Holmes check).","These formulas assume a road bike; use them only as a starting point."],"inseamCm":80,"inseamInches":31.5,"lemondCm":70.6,"lemondInches":27.81,"hamleyCm":87.2,"hamleyInches":34.33,"hamleyMinusLemondCm":16.6,"holmesTargetKneeAngleDegrees":[25,35],"stepAdjustMm":[2,3],"degraded":false,"notChecked":["flexibility, injuries and leg-length differences","crank length and shoe/pedal stack, which move the right height by several mm","…1 more"],"source":"computed locally (LeMond: 0.883 x inseam; Hamley: 1.09 x inseam)","asOf":"2026-10-12T01:50:57.710Z","disclaimer":"Screening signal computed from the named public source. Not financial, legal or investment advice; provided as is. Verify at the source before acting."}}}},"400":{"description":"A parameter was missing or out of range."},"402":{"description":"Payment Required"},"502":{"description":"The upstream source failed or timed out."}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.0200"},"protocols":[{"x402":{"network":"eip155:8453","scheme":"exact","currency":"USDC","endpoint":"https://bike-calc.x402tookit.com/saddle-height"}},{"x402":{"network":"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp","scheme":"exact","currency":"USDC","endpoint":"https://bike-calc.x402tookit.com/saddle-height"}},{"x402":{"network":"eip155:137","scheme":"exact","currency":"USDC","endpoint":"https://bike-calc.x402tookit.com/saddle-height"}},{"x402":{"network":"eip155:42161","scheme":"exact","currency":"USDC","endpoint":"https://bike-calc.x402tookit.com/saddle-height"}}]}}},"/wheel-size":{"get":{"operationId":"wheel_size","summary":"Rolling circumference and diameter for common tyre sizes, or an estimate from rim bead diameter and tyre width in mm.","description":"Rolling circumference and diameter for common tyre sizes, or an estimate from rim bead diameter and tyre width in mm.","tags":["cycling","wheel","tyre","circumference"],"parameters":[{"name":"tyre","in":"query","required":false,"description":"A preset: 700x23c, 700x25c, 700x28c, 700x32c, 700x35c, 700x38c, 26x2.0","schema":{"type":"string"}},{"name":"bsdMm","in":"query","required":false,"description":"Rim bead seat diameter in mm (622 for 700c/29er, 584 for 650b/27.5, 559 for 26 inch MTB, 406 for 20 inch BMX)","schema":{"type":"number"}},{"name":"tyreWidthMm","in":"query","required":false,"description":"Tyre width in mm, with bsdMm, for an estimate","schema":{"type":"number"}}],"responses":{"200":{"description":"The answer.","content":{"application/json":{"schema":{"type":"object","properties":{"verdict":{"type":["null","string"]},"summary":{"type":["null","string"]},"reasons":{"type":["array","null"],"items":{"type":"string"}},"circumferenceMm":{"type":["null","number"]},"diameterMm":{"type":["null","number"]},"diameterInches":{"type":["null","number"]},"metersPerRevolution":{"type":["null","number"]},"revolutionsPerKm":{"type":["null","number"]},"basis":{"type":["null","string"]},"degraded":{"type":["boolean","null"]},"notChecked":{"type":["array","null"],"items":{"type":"string"}},"source":{"type":["null","string"]},"asOf":{"type":["null","string"]},"disclaimer":{"type":["null","string"]}}},"example":{"verdict":"PRESET","summary":"700x25c: circumference about 2105 mm (diameter 670 mm, 26.38 in).","reasons":["Preset values are the common cyclocomputer table figures."],"circumferenceMm":2105,"diameterMm":670.04,"diameterInches":26.38,"metersPerRevolution":2.105,"revolutionsPerKm":475.1,"basis":"preset table","degraded":false,"notChecked":["real circumference, which varies with tyre brand, pressure, load and wear (roll the wheel one turn to measure)","tubeless sealant or wide-rim effects on tyre profile","…1 more"],"source":"computed locally (common cyclocomputer table values; estimate = pi x (BSD + 1.92 x width))","asOf":"2026-10-12T01:50:57.973Z","disclaimer":"Screening signal computed from the named public source. Not financial, legal or investment advice; provided as is. Verify at the source before acting."}}}},"400":{"description":"A parameter was missing or out of range."},"402":{"description":"Payment Required"},"502":{"description":"The upstream source failed or timed out."}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.0200"},"protocols":[{"x402":{"network":"eip155:8453","scheme":"exact","currency":"USDC","endpoint":"https://bike-calc.x402tookit.com/wheel-size"}},{"x402":{"network":"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp","scheme":"exact","currency":"USDC","endpoint":"https://bike-calc.x402tookit.com/wheel-size"}},{"x402":{"network":"eip155:137","scheme":"exact","currency":"USDC","endpoint":"https://bike-calc.x402tookit.com/wheel-size"}},{"x402":{"network":"eip155:42161","scheme":"exact","currency":"USDC","endpoint":"https://bike-calc.x402tookit.com/wheel-size"}}]}}}}}