{"openapi":"3.1.0","info":{"title":"1rm.dev API","version":"0.1.0","summary":"Fitness tools and knowledge for humans, bots, and agents.","description":"These tools estimate or convert numbers. They are not a training plan. Site 0.1.0. HTTP path is /api/v0 and may change. No API keys. Default formula is Epley. Default unit is kg. 1RM cards are /formulas; VO2 cards are /vo2-tests; scores and protocols are /methods. RPE 8 on 5 reps is leftover reps (a 7-rep set at RPE 10), then the chosen formula runs. That is not the Helms % chart."},"servers":[{"url":"https://1rm.dev/api/v0","description":"v0"}],"tags":[{"name":"formulas","description":"Cited 1RM method cards."},{"name":"vo2","description":"Cited VO2max field tests and estimates."},{"name":"knowledge","description":"Handoffs to tools we do not own."},{"name":"estimates","description":"Computed one-rep maxes and loads."},{"name":"methods","description":"Scoring, scale, and protocol cards."},{"name":"scores","description":"Relative strength scores and inverses."},{"name":"session","description":"Work sets, plates, warm-ups, and attempts."}],"paths":{"/methods":{"get":{"tags":["methods"],"summary":"List scoring and protocol cards","operationId":"listMethods","responses":{"200":{"description":"Method cards.","content":{"application/json":{"schema":{"type":"object","required":["methods"],"properties":{"methods":{"type":"array","items":{"$ref":"#/components/schemas/Method"}}}}}}}}}},"/methods/{id}":{"get":{"tags":["methods"],"summary":"Get a method card","operationId":"getMethod","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","enum":["ipf-gl","dots","wilks","sinclair","allometric","rpe-percent","ymca-bench"]}}],"responses":{"200":{"description":"Method card.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Method"}}}},"404":{"description":"Unknown method.","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}}}}}}}}},"/rep-maxes":{"get":{"tags":["estimates"],"summary":"Rep-max table from a 1RM","operationId":"repMaxTable","parameters":[{"name":"one_rep_max","in":"query","required":true,"schema":{"type":"number","exclusiveMinimum":0}},{"name":"formula","in":"query","required":false,"schema":{"type":"string","enum":["epley","brzycki","lombardi","mayhew","wathan"],"default":"epley"}},{"name":"unit","in":"query","required":false,"schema":{"type":"string","enum":["kg","lb"],"default":"kg"}},{"name":"through","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":20,"default":12}}],"responses":{"200":{"description":"Estimated loads for 1 through N reps.","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Invalid input.","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}}}}}}}}},"/formula-comparisons":{"get":{"tags":["estimates"],"summary":"Compare all 1RM formulas on one set","operationId":"compareFormulas","parameters":[{"name":"weight","in":"query","required":true,"schema":{"type":"number","exclusiveMinimum":0}},{"name":"reps","in":"query","required":true,"schema":{"type":"number","exclusiveMinimum":0}},{"name":"unit","in":"query","required":false,"schema":{"type":"string","enum":["kg","lb"],"default":"kg"}},{"name":"rpe","in":"query","required":false,"schema":{"type":"number","minimum":1,"maximum":10}},{"name":"rir","in":"query","required":false,"schema":{"type":"number","minimum":0}}],"responses":{"200":{"description":"One result per formula.","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Invalid input.","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}}}}}}}}},"/totals":{"get":{"tags":["scores"],"summary":"Powerlifting total","operationId":"powerliftingTotal","parameters":[{"name":"squat","in":"query","required":true,"schema":{"type":"number","exclusiveMinimum":0}},{"name":"bench","in":"query","required":true,"schema":{"type":"number","exclusiveMinimum":0}},{"name":"deadlift","in":"query","required":true,"schema":{"type":"number","exclusiveMinimum":0}},{"name":"unit","in":"query","required":false,"schema":{"type":"string","enum":["kg","lb"],"default":"kg"}}],"responses":{"200":{"description":"Sum of the three lifts.","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Invalid input.","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}}}}}}}}},"/points":{"get":{"tags":["scores"],"summary":"IPF GL, DOTS, Wilks, Sinclair, and ratios","operationId":"scoreLifts","parameters":[{"name":"bodyweight","in":"query","required":true,"schema":{"type":"number","exclusiveMinimum":0}},{"name":"sex","in":"query","required":true,"schema":{"type":"string","enum":["male","female"]}},{"name":"total","in":"query","required":false,"schema":{"type":"number","exclusiveMinimum":0}},{"name":"squat","in":"query","required":false,"schema":{"type":"number","exclusiveMinimum":0}},{"name":"bench","in":"query","required":false,"schema":{"type":"number","exclusiveMinimum":0}},{"name":"deadlift","in":"query","required":false,"schema":{"type":"number","exclusiveMinimum":0}},{"name":"event","in":"query","required":false,"schema":{"type":"string","enum":["classic","equipped","classic-bench","equipped-bench"],"default":"classic"}},{"name":"unit","in":"query","required":false,"schema":{"type":"string","enum":["kg","lb"],"default":"kg"}}],"responses":{"200":{"description":"Relative scores.","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Invalid input.","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}}}}}}}}},"/totals-for-points":{"get":{"tags":["scores"],"summary":"Required total for a target score","operationId":"totalForPoints","parameters":[{"name":"points","in":"query","required":true,"schema":{"type":"number","exclusiveMinimum":0}},{"name":"system","in":"query","required":true,"schema":{"type":"string","enum":["ipf-gl","dots","wilks","sinclair"]}},{"name":"bodyweight","in":"query","required":true,"schema":{"type":"number","exclusiveMinimum":0}},{"name":"sex","in":"query","required":true,"schema":{"type":"string","enum":["male","female"]}},{"name":"event","in":"query","required":false,"schema":{"type":"string","enum":["classic","equipped","classic-bench","equipped-bench"],"default":"classic"}},{"name":"unit","in":"query","required":false,"schema":{"type":"string","enum":["kg","lb"],"default":"kg"}}],"responses":{"200":{"description":"Total that produces the target points.","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Invalid input.","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}}}}}}}}},"/work-sets":{"get":{"tags":["session"],"summary":"Working load from a 1RM and percent","operationId":"workSet","parameters":[{"name":"one_rep_max","in":"query","required":true,"schema":{"type":"number","exclusiveMinimum":0}},{"name":"percent","in":"query","required":true,"schema":{"type":"number","exclusiveMinimum":0}},{"name":"sets","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":3}},{"name":"reps","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":5}},{"name":"unit","in":"query","required":false,"schema":{"type":"string","enum":["kg","lb"],"default":"kg"}}],"responses":{"200":{"description":"Work load and volume.","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Invalid input.","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}}}}}}}}},"/warm-ups":{"get":{"tags":["session"],"summary":"Warm-up to a work set","operationId":"warmUpSets","parameters":[{"name":"work_weight","in":"query","required":true,"schema":{"type":"number","exclusiveMinimum":0}},{"name":"bar","in":"query","required":false,"schema":{"type":"number","exclusiveMinimum":0}},{"name":"unit","in":"query","required":false,"schema":{"type":"string","enum":["kg","lb"],"default":"kg"}}],"responses":{"200":{"description":"Common gym warm-up sets.","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Invalid input.","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}}}}}}}}},"/plates":{"get":{"tags":["session"],"summary":"Plate loading","operationId":"loadPlates","parameters":[{"name":"weight","in":"query","required":true,"schema":{"type":"number","exclusiveMinimum":0}},{"name":"bar","in":"query","required":false,"schema":{"type":"number","exclusiveMinimum":0}},{"name":"unit","in":"query","required":false,"schema":{"type":"string","enum":["kg","lb"],"default":"kg"}}],"responses":{"200":{"description":"Plates per side.","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Invalid input.","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}}}}}}}}},"/attempts":{"get":{"tags":["session"],"summary":"Meet attempts from a planned 1RM","operationId":"meetAttempts","parameters":[{"name":"one_rep_max","in":"query","required":true,"schema":{"type":"number","exclusiveMinimum":0}},{"name":"opener","in":"query","required":false,"schema":{"type":"number","default":91}},{"name":"second","in":"query","required":false,"schema":{"type":"number","default":97}},{"name":"third","in":"query","required":false,"schema":{"type":"number","default":102}},{"name":"unit","in":"query","required":false,"schema":{"type":"string","enum":["kg","lb"],"default":"kg"}}],"responses":{"200":{"description":"Opener, second, and third.","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Invalid input.","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}}}}}}}}},"/velocity-one-rep-maxes":{"get":{"tags":["estimates"],"summary":"1RM from load–velocity pairs","operationId":"velocityOneRepMax","parameters":[{"name":"loads","in":"query","required":true,"description":"Comma-separated loads.","schema":{"type":"string"}},{"name":"velocities","in":"query","required":true,"description":"Comma-separated velocities in m/s.","schema":{"type":"string"}},{"name":"mvt","in":"query","required":false,"schema":{"type":"number","exclusiveMinimum":0,"default":0.15}},{"name":"unit","in":"query","required":false,"schema":{"type":"string","enum":["kg","lb"],"default":"kg"}}],"responses":{"200":{"description":"Linear intercept 1RM.","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Invalid input.","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}}}}}}}}},"/rpe-percents":{"get":{"tags":["session"],"summary":"Helms RPE to % 1RM chart","operationId":"lookupRpePercent","parameters":[{"name":"reps","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":12}},{"name":"rpe","in":"query","required":false,"schema":{"type":"integer","minimum":6,"maximum":10}}],"responses":{"200":{"description":"Full chart if no query, otherwise one cell.","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Invalid input.","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}}}}}}}}},"/ymca-bench-scores":{"get":{"tags":["session"],"summary":"YMCA bench press protocol score","operationId":"ymcaBenchScore","parameters":[{"name":"reps","in":"query","required":true,"schema":{"type":"integer","minimum":1}},{"name":"sex","in":"query","required":true,"schema":{"type":"string","enum":["male","female"]}}],"responses":{"200":{"description":"Completed-rep score and duration.","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Invalid input.","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}}}}}}}}},"/formulas":{"get":{"tags":["formulas"],"summary":"List formulas","operationId":"listFormulas","responses":{"200":{"description":"Formula cards.","content":{"application/json":{"schema":{"type":"object","required":["formulas"],"properties":{"formulas":{"type":"array","items":{"$ref":"#/components/schemas/Formula"}}}},"example":{"formulas":[{"id":"epley","name":"Epley","equation":"1RM = w × (1 + r / 30)","year":1985,"authors":["Epley, B."],"journal":"Boyd Epley Workout, Body Enterprises","doi":null,"notes":"Originally published as a poundage chart in Boyd Epley’s workout materials (Lincoln, NE).","variables":[{"symbol":"w","meaning":"Load lifted, same unit as the 1RM."},{"symbol":"r","meaning":"Repetitions completed."},{"symbol":"1RM","meaning":"Estimated one-repetition maximum."}]},{"id":"brzycki","name":"Brzycki","equation":"1RM = w × 36 / (37 − r)","year":1993,"authors":["Brzycki, M."],"journal":"Journal of Physical Education, Recreation & Dance, 64(1), 88–90","doi":"10.1080/07303084.1993.10606684","variables":[{"symbol":"w","meaning":"Load lifted, same unit as the 1RM."},{"symbol":"r","meaning":"Repetitions completed."},{"symbol":"1RM","meaning":"Estimated one-repetition maximum."}]},{"id":"lombardi","name":"Lombardi","equation":"1RM = w × r^0.10","year":1989,"authors":["Lombardi, V. P."],"journal":"Beginning Weight Training: The Safe and Effective Way, Wm. C. Brown","doi":null,"variables":[{"symbol":"w","meaning":"Load lifted, same unit as the 1RM."},{"symbol":"r","meaning":"Repetitions completed."},{"symbol":"1RM","meaning":"Estimated one-repetition maximum."}]},{"id":"mayhew","name":"Mayhew","equation":"1RM = 100 × w / (52.2 + 41.9 × e^(−0.055 × r))","year":1992,"authors":["Mayhew, J. L.","Ball, T. E.","Arnold, M. D.","Bowen, J. C."],"journal":"Journal of Applied Sport Science Research, 6(4), 200–206","doi":"10.1519/1533-4287(1992)006<0200:RMEPAA>2.3.CO;2","variables":[{"symbol":"w","meaning":"Load lifted, same unit as the 1RM."},{"symbol":"r","meaning":"Repetitions completed."},{"symbol":"e","meaning":"Euler’s number."},{"symbol":"1RM","meaning":"Estimated one-repetition maximum."}]},{"id":"wathan","name":"Wathan","equation":"1RM = 100 × w / (48.8 + 53.8 × e^(−0.075 × r))","year":1994,"authors":["Wathen, D."],"journal":"Essentials of Strength Training and Conditioning, Human Kinetics, pp. 435–439","doi":null,"notes":"Commonly called Wathan; the original author is Wathen.","variables":[{"symbol":"w","meaning":"Load lifted, same unit as the 1RM."},{"symbol":"r","meaning":"Repetitions completed."},{"symbol":"e","meaning":"Euler’s number."},{"symbol":"1RM","meaning":"Estimated one-repetition maximum."}]}]}}}}}}},"/formulas/{id}":{"get":{"tags":["formulas"],"summary":"Get a formula card","operationId":"getFormula","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","enum":["epley","brzycki","lombardi","mayhew","wathan"]}}],"responses":{"200":{"description":"Formula card.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Formula"}}}},"404":{"description":"Unknown formula.","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}}}}}}}}},"/elsewhere":{"get":{"tags":["knowledge"],"summary":"List related internet tools","operationId":"listElsewhere","responses":{"200":{"description":"Handoff list. We do not run these sites.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Elsewhere"},"example":{"reviewed":"2026-09-10","note":"Handoff list. We do not run these sites. Crowd standards are not scientific norms. Not a 1RM calculator list.","tools":[{"id":"ipf","name":"IPF","url":"https://www.powerlifting.sport/","category":"sport-official","kind":"official","use_when":"Federation calendar, records, and nominations.","not_for":"1RM estimates"},{"id":"ipf-technical-rules","name":"IPF Technical Rules","url":"https://www.powerlifting.sport/rules/codes/info/technical-rules","category":"sport-official","kind":"official","use_when":"Commands, depth, pause, hitch, and belt. Dated rulebook, currently 2026 v3.","not_for":"scoring formulas"},{"id":"goodlift","name":"Goodlift","url":"https://www.goodlift.info/","category":"sport-official","kind":"official","use_when":"Official IPF results, rankings, live scoring, and GL points.","not_for":"non-IPF federations"},{"id":"iwf","name":"IWF","url":"https://iwf.sport/","category":"sport-official","kind":"official","use_when":"Olympic weightlifting rules, Sinclair, and results.","not_for":"powerlifting totals"},{"id":"epf","name":"EPF","url":"https://www.europowerlifting.org/","category":"sport-official","kind":"official","use_when":"European IPF calendar and regional championships.","not_for":"world rankings"},{"id":"openpowerlifting","name":"OpenPowerlifting","url":"https://www.openpowerlifting.org/","category":"meet-data","kind":"open-data","use_when":"Look up a lifter, meet, or all-federation ranking.","not_for":"1RM formulas"},{"id":"openpowerlifting-data","name":"OpenPowerlifting Data","url":"https://openpowerlifting.gitlab.io/opl-csv/","category":"meet-data","kind":"open-data","use_when":"Bulk CSV, public domain. Download this instead of scraping the site.","not_for":"live meet scoring"},{"id":"exrx-exercise-directory","name":"ExRx Exercise Directory","url":"https://exrx.net/Lists/Directory","category":"exercise","kind":"editorial","use_when":"Named movement, muscles, and kinesiology.","not_for":"load estimates"},{"id":"exrx-strength-standards","name":"ExRx Strength Standards","url":"https://exrx.net/Testing/WeightLifting/StrengthStandards","category":"standards","kind":"editorial","use_when":"Kilgore tables from competitive classifications. They say: not norms.","not_for":"population percentiles"},{"id":"strength-level","name":"Strength Level","url":"https://strengthlevel.com/strength-standards","category":"standards","kind":"crowd","use_when":"Percentiles of self-logged lifts. Useful, not a paper.","not_for":"cited strength norms"},{"id":"symmetric-strength","name":"Symmetric Strength","url":"https://symmetricstrength.com/","category":"standards","kind":"crowd","use_when":"One score across lifts, age-adjusted. Same caveat as Strength Level.","not_for":"cited strength norms"},{"id":"wada-prohibited-list","name":"WADA Prohibited List","url":"https://www.wada-ama.org/en/prohibited-list","category":"anti-doping","kind":"official","use_when":"What is banned, in vs out of competition. Updates every 1 January.","not_for":"a specific medication lookup"},{"id":"global-dro","name":"Global DRO","url":"https://www.globaldro.com/home/","category":"anti-doping","kind":"official","use_when":"Look up a specific medication by country.","not_for":"dietary supplements"},{"id":"nada","name":"NADA","url":"https://www.nada.de/","category":"anti-doping","kind":"official","use_when":"German NADO, NADAmed, and TUE.","not_for":"supplement batch testing"},{"id":"cologne-list","name":"Cologne List","url":"https://www.koelnerliste.com/en/product-database/","category":"anti-doping","kind":"official","use_when":"Batch-tested supplements. Listing lowers risk; it is not a clean certificate.","not_for":"a doping-free guarantee"},{"id":"pubmed","name":"PubMed","url":"https://pubmed.ncbi.nlm.nih.gov/","category":"evidence","kind":"official","use_when":"Find the paper behind a formula, RPE chart, or protein claim.","not_for":"a training plan"},{"id":"europe-pmc","name":"Europe PMC","url":"https://europepmc.org/","category":"evidence","kind":"open-data","use_when":"Same literature as PubMed, with more open full text.","not_for":"supplement shopping"},{"id":"cochrane-library","name":"Cochrane Library","url":"https://www.cochranelibrary.com/","category":"evidence","kind":"official","use_when":"Systematic reviews. Prefer this over a single gym citation.","not_for":"acute loading math"},{"id":"examine","name":"Examine","url":"https://examine.com/","category":"evidence","kind":"editorial","use_when":"Supplement and nutrition evidence summaries.","not_for":"a shopping list"},{"id":"stronger-by-science","name":"Stronger by Science master list","url":"https://www.strongerbyscience.com/master-list/","category":"evidence","kind":"editorial","use_when":"Index of strength and physique systematic reviews. Start here, then read the review.","not_for":"the primary paper"},{"id":"jissn","name":"JISSN","url":"https://jissn.biomedcentral.com/","category":"evidence","kind":"society","use_when":"ISSN position stands: protein, creatine, caffeine, HMB.","not_for":"a blog recap"},{"id":"doi","name":"doi.org","url":"https://doi.org/","category":"evidence","kind":"official","use_when":"Resolve the DOIs on formula cards. Land on the paper.","not_for":"a search engine"},{"id":"usda-fooddata-central","name":"USDA FoodData Central","url":"https://fdc.nal.usda.gov/","category":"nutrition","kind":"official","use_when":"Food composition, with an API and bulk download.","not_for":"diet coaching"},{"id":"nih-body-weight-planner","name":"NIH Body Weight Planner","url":"https://www.niddk.nih.gov/health-information/weight-management/body-weight-planner","category":"nutrition","kind":"official","use_when":"Hall model for intake versus activity versus time-to-goal. Adults only.","not_for":"minors or pregnancy"},{"id":"dietary-guidelines","name":"Dietary Guidelines for Americans","url":"https://www.dietaryguidelines.gov/","category":"nutrition","kind":"official","use_when":"Population diet advice. Pair with the activity guidelines.","not_for":"contest-prep macros"},{"id":"who-activity-guidelines","name":"WHO activity guidelines","url":"https://www.who.int/publications/i/item/9789240015128/","category":"guidelines","kind":"official","use_when":"How much activity, including muscle-strengthening. 2020 guideline.","not_for":"a periodized program"},{"id":"hhs-activity-guidelines","name":"HHS activity guidelines","url":"https://odphp.health.gov/paguidelines/second-edition/","category":"guidelines","kind":"official","use_when":"US counterpart to WHO (2018, 2nd edition).","not_for":"a periodized program"},{"id":"acsm","name":"ACSM","url":"https://www.acsm.org/","category":"guidelines","kind":"society","use_when":"Position stands and resistance-training prescription for healthy adults.","not_for":"meet commands"},{"id":"nsca","name":"NSCA","url":"https://www.nsca.com/","category":"guidelines","kind":"society","use_when":"Strength-coach standards and exercise technique.","not_for":"1RM formulas"},{"id":"issn","name":"ISSN","url":"https://www.sportsnutritionsociety.org/","category":"guidelines","kind":"society","use_when":"Society that publishes JISSN. Use the journal for the stands.","not_for":"the position stands themselves"}]}}}}}}},"/one-rep-maxes":{"get":{"tags":["estimates"],"summary":"Estimate a one-rep max from a set","operationId":"estimateOneRepMax","parameters":[{"name":"weight","in":"query","required":true,"description":"Load lifted.","schema":{"type":"number","exclusiveMinimum":0}},{"name":"reps","in":"query","required":true,"description":"Completed or target repetitions. Minimum 1.","schema":{"type":"number","exclusiveMinimum":0}},{"name":"formula","in":"query","required":false,"description":"Estimation formula. Defaults to epley.","schema":{"type":"string","enum":["epley","brzycki","lombardi","mayhew","wathan"],"default":"epley"}},{"name":"unit","in":"query","required":false,"description":"Weight unit. Defaults to kg.","schema":{"type":"string","enum":["kg","lb"],"default":"kg"}},{"name":"rpe","in":"query","required":false,"description":"Rate of perceived exertion, 1–10. Do not send with rir.","schema":{"type":"number","minimum":1,"maximum":10}},{"name":"rir","in":"query","required":false,"description":"Reps in reserve, 0 or greater. Do not send with rpe.","schema":{"type":"number","minimum":0}}],"responses":{"200":{"description":"Estimated one-rep max. May include warnings.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OneRepMax"}}}},"400":{"description":"Invalid input.","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}}}}}}}}},"/vo2-tests":{"get":{"tags":["vo2"],"summary":"List VO2max field tests","operationId":"listVo2Tests","responses":{"200":{"description":"VO2 field-test method cards.","content":{"application/json":{"schema":{"type":"object","required":["tests"],"properties":{"tests":{"type":"array","items":{"$ref":"#/components/schemas/Vo2Test"}}}},"example":{"tests":[{"id":"cooper","name":"Cooper","equation":"VO2max = (d - 504.9) / 44.73","year":1968,"authors":["Cooper, K. H."],"journal":"JAMA","doi":"10.1001/jama.1968.03140030033008","notes":"Original sample: 115 male US Air Force members.","variables":[{"symbol":"d","meaning":"Distance run in 12 minutes, in metres."},{"symbol":"VO2max","meaning":"Estimated maximal oxygen uptake, ml/kg/min."}]},{"id":"rockport","name":"Rockport","equation":"VO2max = 132.853 - 0.0769W - 0.3877A + 6.315S - 3.2649T - 0.1565HR","year":1987,"authors":["Kline, G. M.","Porcari, J. P.","Hintermeister, R.","Freedson, P. S.","Ward, A.","McCarron, R. F.","Ross, J.","Rippe, J. M."],"journal":"Medicine & Science in Sports & Exercise","doi":"10.1249/00005768-198706000-00012","notes":"Generalized relative equation from Kline et al. Sample ages 30–69. Walk; do not run.","variables":[{"symbol":"W","meaning":"Bodyweight in pounds."},{"symbol":"A","meaning":"Age in years."},{"symbol":"S","meaning":"1 if male, 0 if female."},{"symbol":"T","meaning":"One-mile walk time in minutes."},{"symbol":"HR","meaning":"Heart rate at the end of the mile."},{"symbol":"VO2max","meaning":"Estimated maximal oxygen uptake, ml/kg/min."}]},{"id":"leger","name":"Léger shuttle","equation":"VO2max = 31.025 + 3.238X - 3.248A + 0.1536AX","year":1988,"authors":["Léger, L. A.","Mercier, D.","Gadoury, C.","Lambert, J."],"journal":"Journal of Sports Sciences","doi":"10.1080/02640418808729800","notes":"20 m shuttle, 1-minute stages starting at 8.5 km/h, plus 0.5 km/h each minute. The 1982 Léger–Lambert paper used 2-minute stages and a different regression; this card is the 1988 protocol.","variables":[{"symbol":"X","meaning":"Speed of the last completed stage, km/h. X = 8 + 0.5 × level."},{"symbol":"A","meaning":"Age in years for ages 8–17. Held at 18 for adults."},{"symbol":"VO2max","meaning":"Estimated maximal oxygen uptake, ml/kg/min."}]}]}}}}}}},"/vo2-tests/{id}":{"get":{"tags":["vo2"],"summary":"Get a VO2max field-test card","operationId":"getVo2Test","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","enum":["cooper","rockport","leger"]}}],"responses":{"200":{"description":"VO2 field-test card.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Vo2Test"}}}},"404":{"description":"Unknown test.","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}}}}}}}}},"/vo2-maxes":{"get":{"tags":["vo2"],"summary":"Estimate VO2max from a field test","operationId":"estimateVo2Max","description":"Required fields depend on test. cooper: distance. rockport: weight, age, sex, time, heart_rate. leger: level. Defaults: test=cooper, distance_unit=m, unit=kg. Léger age defaults to 18.","parameters":[{"name":"test","in":"query","required":false,"description":"Field test. Defaults to cooper.","schema":{"type":"string","enum":["cooper","rockport","leger"],"default":"cooper"}},{"name":"distance","in":"query","required":false,"description":"Cooper: distance covered in 12 minutes.","schema":{"type":"number","exclusiveMinimum":0}},{"name":"distance_unit","in":"query","required":false,"description":"Cooper distance unit. Defaults to m.","schema":{"type":"string","enum":["m","km","mi"],"default":"m"}},{"name":"weight","in":"query","required":false,"description":"Rockport: bodyweight.","schema":{"type":"number","exclusiveMinimum":0}},{"name":"unit","in":"query","required":false,"description":"Weight unit. Defaults to kg.","schema":{"type":"string","enum":["kg","lb"],"default":"kg"}},{"name":"age","in":"query","required":false,"description":"Rockport: required. Léger: defaults to 18.","schema":{"type":"number","exclusiveMinimum":0}},{"name":"sex","in":"query","required":false,"description":"Rockport: male or female.","schema":{"type":"string","enum":["male","female"]}},{"name":"time","in":"query","required":false,"description":"Rockport: one-mile walk time in minutes.","schema":{"type":"number","exclusiveMinimum":0}},{"name":"heart_rate","in":"query","required":false,"description":"Rockport: heart rate at the end of the mile.","schema":{"type":"number","exclusiveMinimum":0}},{"name":"level","in":"query","required":false,"description":"Léger: last completed 1-minute stage (1–21).","schema":{"type":"integer","minimum":1,"maximum":21}}],"responses":{"200":{"description":"Estimated VO2max. May include warnings.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Vo2Max"}}}},"400":{"description":"Invalid input.","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}}}}}}}}},"/loads":{"get":{"tags":["estimates"],"summary":"Estimate a load from a one-rep max","operationId":"estimateLoad","parameters":[{"name":"one_rep_max","in":"query","required":true,"description":"Known or estimated one-rep max.","schema":{"type":"number","exclusiveMinimum":0}},{"name":"reps","in":"query","required":true,"description":"Completed or target repetitions. Minimum 1.","schema":{"type":"number","exclusiveMinimum":0}},{"name":"formula","in":"query","required":false,"description":"Estimation formula. Defaults to epley.","schema":{"type":"string","enum":["epley","brzycki","lombardi","mayhew","wathan"],"default":"epley"}},{"name":"unit","in":"query","required":false,"description":"Weight unit. Defaults to kg.","schema":{"type":"string","enum":["kg","lb"],"default":"kg"}},{"name":"rpe","in":"query","required":false,"description":"Rate of perceived exertion, 1–10. Do not send with rir.","schema":{"type":"number","minimum":1,"maximum":10}},{"name":"rir","in":"query","required":false,"description":"Reps in reserve, 0 or greater. Do not send with rpe.","schema":{"type":"number","minimum":0}}],"responses":{"200":{"description":"Estimated load. May include warnings.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Load"}}}},"400":{"description":"Invalid input.","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}}}}}}}}}},"components":{"schemas":{"Formula":{"type":"object","required":["id","name","equation","year","authors","journal","doi"],"properties":{"id":{"type":"string","enum":["epley","brzycki","lombardi","mayhew","wathan"]},"name":{"type":"string"},"equation":{"type":"string"},"year":{"type":"integer"},"authors":{"type":"array","items":{"type":"string"}},"journal":{"type":"string"},"doi":{"type":["string","null"]},"notes":{"type":"string"},"variables":{"type":"array","items":{"$ref":"#/components/schemas/CitationVariable"}}}},"OneRepMax":{"type":"object","required":["one_rep_max","unit","formula","input","equivalent","warnings"],"properties":{"one_rep_max":{"type":"number"},"unit":{"type":"string","enum":["kg","lb"]},"formula":{"type":"string","enum":["epley","brzycki","lombardi","mayhew","wathan"]},"input":{"$ref":"#/components/schemas/EstimateInput"},"equivalent":{"type":"object","required":["weight","reps","rpe"],"properties":{"weight":{"type":"number"},"reps":{"type":"number"},"rpe":{"type":"number","enum":[10]}}},"warnings":{"type":"array","items":{"type":"string"}}}},"Load":{"type":"object","required":["load","unit","formula","input","equivalent","warnings"],"properties":{"load":{"type":"number"},"unit":{"type":"string","enum":["kg","lb"]},"formula":{"type":"string","enum":["epley","brzycki","lombardi","mayhew","wathan"]},"input":{"$ref":"#/components/schemas/EstimateInput"},"equivalent":{"type":"object","required":["weight","reps","rpe"],"properties":{"weight":{"type":"number"},"reps":{"type":"number"},"rpe":{"type":"number","enum":[10]}}},"warnings":{"type":"array","items":{"type":"string"}}}},"EstimateInput":{"type":"object","required":["reps","formula","unit"],"properties":{"weight":{"type":"number"},"one_rep_max":{"type":"number"},"reps":{"type":"number"},"formula":{"type":"string","enum":["epley","brzycki","lombardi","mayhew","wathan"]},"unit":{"type":"string","enum":["kg","lb"]},"rpe":{"type":"number"},"rir":{"type":"number"}}},"Vo2Test":{"type":"object","required":["id","name","equation","year","authors","journal","doi"],"properties":{"id":{"type":"string","enum":["cooper","rockport","leger"]},"name":{"type":"string"},"equation":{"type":"string"},"year":{"type":"integer"},"authors":{"type":"array","items":{"type":"string"}},"journal":{"type":"string"},"doi":{"type":["string","null"]},"notes":{"type":"string"},"variables":{"type":"array","items":{"$ref":"#/components/schemas/CitationVariable"}}}},"CitationVariable":{"type":"object","required":["symbol","meaning"],"properties":{"symbol":{"type":"string"},"meaning":{"type":"string"}}},"ElsewhereTool":{"type":"object","required":["id","name","url","category","kind","use_when","not_for"],"properties":{"id":{"type":"string"},"name":{"type":"string"},"url":{"type":"string"},"category":{"type":"string","enum":["sport-official","meet-data","exercise","standards","anti-doping","evidence","nutrition","guidelines"]},"kind":{"type":"string","enum":["official","open-data","crowd","editorial","society"]},"use_when":{"type":"string"},"not_for":{"type":"string"}}},"Elsewhere":{"type":"object","required":["reviewed","note","tools"],"properties":{"reviewed":{"type":"string"},"note":{"type":"string"},"tools":{"type":"array","items":{"$ref":"#/components/schemas/ElsewhereTool"}}}},"Method":{"type":"object","required":["id","group","name","equation","year","authors","journal","doi"],"properties":{"id":{"type":"string","enum":["ipf-gl","dots","wilks","sinclair","allometric","rpe-percent","ymca-bench"]},"group":{"type":"string","enum":["score","scale","protocol"]},"name":{"type":"string"},"equation":{"type":"string"},"year":{"type":"integer"},"authors":{"type":"array","items":{"type":"string"}},"journal":{"type":"string"},"doi":{"type":["string","null"]},"source_url":{"type":"string"},"notes":{"type":"string"},"variables":{"type":"array","items":{"type":"object","required":["symbol","meaning"],"properties":{"symbol":{"type":"string"},"meaning":{"type":"string"}}}}}},"Vo2Max":{"type":"object","required":["vo2_max","unit","test","input","equivalent","warnings"],"properties":{"vo2_max":{"type":"number"},"unit":{"type":"string","enum":["ml/kg/min"]},"test":{"type":"string","enum":["cooper","rockport","leger"]},"input":{"type":"object"},"equivalent":{"type":"object"},"warnings":{"type":"array","items":{"type":"string"}}}}}}}