{"x402Version":2,"payTo":"0x9E3df8006B1917ECcED9591BeCcb893d0DE9eBd9","resources":[{"id":39987,"slug":"39987","resource":"https://api.doseplot.com/v1/recon/options","description":"Ranked reconstitution suggestions for one published reconstitutable compound: bacteriostatic-water presets that put the published per-administration dose range's clean steps on whole U-100 syringe marks, with doses per vial. Refuses period-denominated ranges rather than guessing a frequency. Deterministic math over published reference data -- not medical advice, not a prescription, and for relay to a human decision-maker rather than autonomous administration.","type":"http","resourceType":"Agent Service","x402Version":2,"accepts":[{"scheme":"exact","network":"eip155:8453","payTo":"0x9E3df8006B1917ECcED9591BeCcb893d0DE9eBd9","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","amount":"10000","amountUsd":0.01,"maxTimeoutSeconds":300}],"outputSchema":{"properties":{"example":{"type":"object"},"type":{"type":"string"}},"required":["type"],"type":"object"},"extensions":{"bazaar":{"info":{"input":{"body":{"compound":"tesamorelin"},"bodyType":"json","method":"POST","type":"http"},"output":{"example":{"compound":{"id":54,"name":"Tesamorelin","slug":"tesamorelin"},"disclaimer":"Mathematical planning aid. Not medical advice. DosePlot is an informational tool, not a healthcare provider, and using it creates no provider-patient relationship. Do not start, stop, or change any protocol without the approval of a licensed healthcare professional.","intended_use":"Outputs are for relay to a human decision-maker; not for autonomous administration.","meta":{"more":"multi-compound protocols: https://doseplot.com/app","network_note":"Paid calls settle in USDC on Base (eip155:8453) via x402."},"rows":[{"bac_water_ml":0.5,"concentration_per_ml":4,"preset_doses":[{"dose":1,"dose_unit":"mg","doses_per_vial":2,"syringe_marks":{"u100":25},"units_per_dose":25},{"dose":2,"dose_unit":"mg","doses_per_vial":1,"syringe_marks":{"u100":50},"units_per_dose":50}]},{"bac_water_ml":1,"concentration_per_ml":2,"preset_doses":[{"dose":1,"dose_unit":"mg","doses_per_vial":2,"syringe_marks":{"u100":50},"units_per_dose":50},{"dose":2,"dose_unit":"mg","doses_per_vial":1,"syringe_marks":{"u100":100},"units_per_dose":100}]},{"bac_water_ml":0.3,"concentration_per_ml":6.666666666666667,"preset_doses":[{"dose":1,"dose_unit":"mg","doses_per_vial":2,"syringe_marks":{"u100":15},"units_per_dose":15},{"dose":2,"dose_unit":"mg","doses_per_vial":1,"syringe_marks":{"u100":30},"units_per_dose":30}]}],"vial":{"amount":2,"source":"canon","unit":"mg"}},"type":"json"}},"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"input":{"additionalProperties":false,"properties":{"body":{"additionalProperties":false,"description":"One compound, optionally one vial. UNKNOWN FIELDS ARE REJECTED. The vial is OPTIONAL: omitted, the compound's first published vial strength is used and the answer says so (vial.source is \"canon\" rather than \"request\"). At most ONE of vial_mg / vial_iu may be present, and it must be the one this compound's published vials are quantified in -- a vial_iu on an mg-quantified compound is 422 unit_unsupported_for_compound, and so is the reverse.","properties":{"compound":{"description":"Canon id, slug, or alias. Slug and alias matching is case-insensitive. Must be a compound on the published reconstitution list, else 422 not_reconstitutable.","type":"string"},"vial_iu":{"description":"Your actual vial's total activity, in IU. Only for compounds whose published vials are IU-quantified. Omitted, the first published strength is used.","exclusiveMinimum":0,"type":"number"},"vial_mg":{"description":"Your actual vial's total mass, in mg. Only for compounds whose published vials are mg-quantified. Omitted, the first published strength is used.","exclusiveMinimum":0,"type":"number"}},"required":["compound"],"type":"object"},"bodyType":{"enum":["json","form-data","text"],"type":"string"},"method":{"enum":["POST"],"type":"string"},"type":{"const":"http","type":"string"}},"required":["type","method","bodyType","body"],"type":"object"},"output":{"properties":{"example":{"type":"object"},"type":{"type":"string"}},"required":["type"],"type":"object"}},"required":["input"],"type":"object"}}},"tags":["bazaar"],"sourceHost":"api.doseplot.com","lastUpdated":"2026-10-08T05:38:02.94Z","quality":{"calls30d":5,"uniquePayers30d":4,"lastCalledAt":"2026-10-08T05:38:02.266Z"},"metadata":{"extensions":{"bazaar":{"info":{"input":{"body":{"compound":"tesamorelin"},"bodyType":"json","method":"POST","type":"http"},"output":{"example":{"compound":{"id":54,"name":"Tesamorelin","slug":"tesamorelin"},"disclaimer":"Mathematical planning aid. Not medical advice. DosePlot is an informational tool, not a healthcare provider, and using it creates no provider-patient relationship. Do not start, stop, or change any protocol without the approval of a licensed healthcare professional.","intended_use":"Outputs are for relay to a human decision-maker; not for autonomous administration.","meta":{"more":"multi-compound protocols: https://doseplot.com/app","network_note":"Paid calls settle in USDC on Base (eip155:8453) via x402."},"rows":[{"bac_water_ml":0.5,"concentration_per_ml":4,"preset_doses":[{"dose":1,"dose_unit":"mg","doses_per_vial":2,"syringe_marks":{"u100":25},"units_per_dose":25},{"dose":2,"dose_unit":"mg","doses_per_vial":1,"syringe_marks":{"u100":50},"units_per_dose":50}]},{"bac_water_ml":1,"concentration_per_ml":2,"preset_doses":[{"dose":1,"dose_unit":"mg","doses_per_vial":2,"syringe_marks":{"u100":50},"units_per_dose":50},{"dose":2,"dose_unit":"mg","doses_per_vial":1,"syringe_marks":{"u100":100},"units_per_dose":100}]},{"bac_water_ml":0.3,"concentration_per_ml":6.666666666666667,"preset_doses":[{"dose":1,"dose_unit":"mg","doses_per_vial":2,"syringe_marks":{"u100":15},"units_per_dose":15},{"dose":2,"dose_unit":"mg","doses_per_vial":1,"syringe_marks":{"u100":30},"units_per_dose":30}]}],"vial":{"amount":2,"source":"canon","unit":"mg"}},"type":"json"}},"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"input":{"additionalProperties":false,"properties":{"body":{"additionalProperties":false,"description":"One compound, optionally one vial. UNKNOWN FIELDS ARE REJECTED. The vial is OPTIONAL: omitted, the compound's first published vial strength is used and the answer says so (vial.source is \"canon\" rather than \"request\"). At most ONE of vial_mg / vial_iu may be present, and it must be the one this compound's published vials are quantified in -- a vial_iu on an mg-quantified compound is 422 unit_unsupported_for_compound, and so is the reverse.","properties":{"compound":{"description":"Canon id, slug, or alias. Slug and alias matching is case-insensitive. Must be a compound on the published reconstitution list, else 422 not_reconstitutable.","type":"string"},"vial_iu":{"description":"Your actual vial's total activity, in IU. Only for compounds whose published vials are IU-quantified. Omitted, the first published strength is used.","exclusiveMinimum":0,"type":"number"},"vial_mg":{"description":"Your actual vial's total mass, in mg. Only for compounds whose published vials are mg-quantified. Omitted, the first published strength is used.","exclusiveMinimum":0,"type":"number"}},"required":["compound"],"type":"object"},"bodyType":{"enum":["json","form-data","text"],"type":"string"},"method":{"enum":["POST"],"type":"string"},"type":{"const":"http","type":"string"}},"required":["type","method","bodyType","body"],"type":"object"},"output":{"properties":{"example":{"type":"object"},"type":{"type":"string"}},"required":["type"],"type":"object"}},"required":["input"],"type":"object"}}}},"liveness":{"reliability":null},"verified":false,"featured":false},{"id":39988,"slug":"39988","resource":"https://api.doseplot.com/v1/recon/plan","description":"Reconstitution math for one vial and one target dose: the strength to reconstitute to, the bacteriostatic water to add, what one dose reads on a U-100 syringe, whole doses per vial, residual mass and cost per dose. Deterministic arithmetic -- not medical advice, not a prescription, and for relay to a human decision-maker rather than autonomous administration.","type":"http","resourceType":"Agent Service","x402Version":2,"accepts":[{"scheme":"exact","network":"eip155:8453","payTo":"0x9E3df8006B1917ECcED9591BeCcb893d0DE9eBd9","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","amount":"10000","amountUsd":0.01,"maxTimeoutSeconds":300}],"outputSchema":{"properties":{"example":{"type":"object"},"type":{"type":"string"}},"required":["type"],"type":"object"},"extensions":{"bazaar":{"info":{"input":{"body":{"draw_ml":0.25,"frequency_days":1,"target_dose_mcg":250,"vial_mg":10},"bodyType":"json","method":"POST","type":"http"},"output":{"example":{"bac_water_ml":10,"concentration_mg_per_ml":1,"cost_per_dose_usd":null,"days_per_vial":40,"disclaimer":"Mathematical planning aid. Not medical advice. DosePlot is an informational tool, not a healthcare provider, and using it creates no provider-patient relationship. Do not start, stop, or change any protocol without the approval of a licensed healthcare professional.","doses_per_vial":40,"intended_use":"Outputs are for relay to a human decision-maker; not for autonomous administration.","meta":{"frequency_days":1,"more":"multi-compound protocols: https://doseplot.com/app","network_note":"Paid calls settle in USDC on Base (eip155:8453) via x402."},"residual_mg":0,"syringe_marks":{"u100":25},"units_per_dose":25},"type":"json"}},"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"input":{"additionalProperties":false,"properties":{"body":{"additionalProperties":false,"description":"Exactly one target-dose field must be present. UNKNOWN FIELDS ARE REJECTED.","oneOf":[{"required":["target_dose_mg"]},{"required":["target_dose_mcg"]}],"properties":{"cost_usd":{"description":"Vial cost. Omitted, cost_per_dose_usd is null.","minimum":0,"type":"number"},"draw_ml":{"description":"The volume you want to DRAW for one dose, in mL -- not the vial fill. The fill needed to make that true comes back as bac_water_ml.","maximum":10,"minimum":0.01,"type":"number"},"frequency_days":{"default":1,"description":"Days between doses. Feeds days_per_vial only.","exclusiveMinimum":0,"type":"number"},"target_dose_mcg":{"description":"Target dose, mcg.","exclusiveMinimum":0,"type":"number"},"target_dose_mg":{"description":"Target dose, mg.","exclusiveMinimum":0,"type":"number"},"vial_mg":{"description":"Total mass in the vial, mg.","exclusiveMinimum":0,"type":"number"}},"required":["vial_mg","draw_ml"],"type":"object"},"bodyType":{"enum":["json","form-data","text"],"type":"string"},"method":{"enum":["POST"],"type":"string"},"type":{"const":"http","type":"string"}},"required":["type","method","bodyType","body"],"type":"object"},"output":{"properties":{"example":{"type":"object"},"type":{"type":"string"}},"required":["type"],"type":"object"}},"required":["input"],"type":"object"}}},"tags":["bazaar"],"sourceHost":"api.doseplot.com","lastUpdated":"2026-10-08T05:38:02.455Z","quality":{"calls30d":4,"uniquePayers30d":3,"lastCalledAt":"2026-10-08T05:38:01.917Z"},"metadata":{"extensions":{"bazaar":{"info":{"input":{"body":{"draw_ml":0.25,"frequency_days":1,"target_dose_mcg":250,"vial_mg":10},"bodyType":"json","method":"POST","type":"http"},"output":{"example":{"bac_water_ml":10,"concentration_mg_per_ml":1,"cost_per_dose_usd":null,"days_per_vial":40,"disclaimer":"Mathematical planning aid. Not medical advice. DosePlot is an informational tool, not a healthcare provider, and using it creates no provider-patient relationship. Do not start, stop, or change any protocol without the approval of a licensed healthcare professional.","doses_per_vial":40,"intended_use":"Outputs are for relay to a human decision-maker; not for autonomous administration.","meta":{"frequency_days":1,"more":"multi-compound protocols: https://doseplot.com/app","network_note":"Paid calls settle in USDC on Base (eip155:8453) via x402."},"residual_mg":0,"syringe_marks":{"u100":25},"units_per_dose":25},"type":"json"}},"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"input":{"additionalProperties":false,"properties":{"body":{"additionalProperties":false,"description":"Exactly one target-dose field must be present. UNKNOWN FIELDS ARE REJECTED.","oneOf":[{"required":["target_dose_mg"]},{"required":["target_dose_mcg"]}],"properties":{"cost_usd":{"description":"Vial cost. Omitted, cost_per_dose_usd is null.","minimum":0,"type":"number"},"draw_ml":{"description":"The volume you want to DRAW for one dose, in mL -- not the vial fill. The fill needed to make that true comes back as bac_water_ml.","maximum":10,"minimum":0.01,"type":"number"},"frequency_days":{"default":1,"description":"Days between doses. Feeds days_per_vial only.","exclusiveMinimum":0,"type":"number"},"target_dose_mcg":{"description":"Target dose, mcg.","exclusiveMinimum":0,"type":"number"},"target_dose_mg":{"description":"Target dose, mg.","exclusiveMinimum":0,"type":"number"},"vial_mg":{"description":"Total mass in the vial, mg.","exclusiveMinimum":0,"type":"number"}},"required":["vial_mg","draw_ml"],"type":"object"},"bodyType":{"enum":["json","form-data","text"],"type":"string"},"method":{"enum":["POST"],"type":"string"},"type":{"const":"http","type":"string"}},"required":["type","method","bodyType","body"],"type":"object"},"output":{"properties":{"example":{"type":"object"},"type":{"type":"string"}},"required":["type"],"type":"object"}},"required":["input"],"type":"object"}}}},"liveness":{"reliability":null},"verified":false,"featured":false},{"id":39989,"slug":"39989","resource":"https://api.doseplot.com/v1/simulate","description":"Pharmacokinetic simulation for one compound: walks the published model at one dose and cadence and returns the modelled serum curve over the requested horizon plus a 60-day washout tail. Deterministic math over published reference data -- not medical advice, not a prescription, and for relay to a human decision-maker rather than autonomous administration.","type":"http","resourceType":"Agent Service","x402Version":2,"accepts":[{"scheme":"exact","network":"eip155:8453","payTo":"0x9E3df8006B1917ECcED9591BeCcb893d0DE9eBd9","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","amount":"10000","amountUsd":0.01,"maxTimeoutSeconds":300}],"outputSchema":{"properties":{"example":{"type":"object"},"type":{"type":"string"}},"required":["type"],"type":"object"},"extensions":{"bazaar":{"info":{"input":{"body":{"compound":"testosterone-cypionate","dose_mg":100,"duration_weeks":12,"injections_per_week":1,"samples_per_day":4},"bodyType":"json","method":"POST","type":"http"},"output":{"example":{"compound":{"id":4,"name":"Testosterone Cypionate","slug":"testosterone-cypionate"},"disclaimer":"Mathematical planning aid. Not medical advice. DosePlot is an informational tool, not a healthcare provider, and using it creates no provider-patient relationship. Do not start, stop, or change any protocol without the approval of a licensed healthcare professional.","intended_use":"Outputs are for relay to a human decision-maker; not for autonomous administration.","meta":{"duration_weeks":12,"injections_per_week":1,"more":"multi-compound protocols: https://doseplot.com/app","network_note":"Paid calls settle in USDC on Base (eip155:8453) via x402.","samples_per_day":4},"series":[{"day":1,"level":0},{"day":1.25,"level":0},{"day":1.5,"level":54.92289291144459}],"units":"ng/dL"},"type":"json"}},"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"input":{"additionalProperties":false,"properties":{"body":{"additionalProperties":false,"description":"Exactly one dose field must be present. UNKNOWN FIELDS ARE REJECTED: a misspelling is a structural failure (400 when a payment is presented; the 402 challenge when none is), not a silently ignored key (a dropped `injections_per_week` would change the answer). The dose is converted to mg ONCE and the converted value is what both the range check and the model use.","oneOf":[{"required":["dose_mg"]},{"required":["dose_mcg"]},{"required":["dose_iu"]}],"properties":{"compound":{"description":"Canon id, slug, or alias. Slug and alias matching is case-insensitive.","type":"string"},"dose_iu":{"description":"Dose per injection in the compound's activity unit. Requires a published conversion for that compound, else 422 unit_unsupported_for_compound.","exclusiveMinimum":0,"type":"number"},"dose_mcg":{"description":"Dose per injection, micrograms.","exclusiveMinimum":0,"type":"number"},"dose_mg":{"description":"Dose per injection, milligrams.","exclusiveMinimum":0,"type":"number"},"duration_weeks":{"description":"Length of the dosing window. The model always adds a 60-day washout tail.","maximum":260,"minimum":1,"type":"integer"},"injections_per_week":{"description":"Injections per WEEK -- not per day. The name is the contract: a per-day reading of the same number changes the accepted dose range by 7x.","maximum":21,"minimum":0.25,"type":"number"},"route":{"description":"One of the compound's published routes (see /v1/compounds/{idOrSlug}); a string this compound does not publish is 422 route_unsupported_for_compound. Omitted, the compound's primary route is used.","type":"string"},"samples_per_day":{"default":24,"description":"Sample resolution of the returned series.","maximum":24,"minimum":1,"type":"integer"}},"required":["compound","injections_per_week","duration_weeks"],"type":"object"},"bodyType":{"enum":["json","form-data","text"],"type":"string"},"method":{"enum":["POST"],"type":"string"},"type":{"const":"http","type":"string"}},"required":["type","method","bodyType","body"],"type":"object"},"output":{"properties":{"example":{"type":"object"},"type":{"type":"string"}},"required":["type"],"type":"object"}},"required":["input"],"type":"object"}}},"tags":["bazaar"],"sourceHost":"api.doseplot.com","lastUpdated":"2026-09-28T02:54:18.246Z","quality":{"calls30d":3,"uniquePayers30d":2,"lastCalledAt":"2026-09-28T02:54:18.071Z"},"metadata":{"extensions":{"bazaar":{"info":{"input":{"body":{"compound":"testosterone-cypionate","dose_mg":100,"duration_weeks":12,"injections_per_week":1,"samples_per_day":4},"bodyType":"json","method":"POST","type":"http"},"output":{"example":{"compound":{"id":4,"name":"Testosterone Cypionate","slug":"testosterone-cypionate"},"disclaimer":"Mathematical planning aid. Not medical advice. DosePlot is an informational tool, not a healthcare provider, and using it creates no provider-patient relationship. Do not start, stop, or change any protocol without the approval of a licensed healthcare professional.","intended_use":"Outputs are for relay to a human decision-maker; not for autonomous administration.","meta":{"duration_weeks":12,"injections_per_week":1,"more":"multi-compound protocols: https://doseplot.com/app","network_note":"Paid calls settle in USDC on Base (eip155:8453) via x402.","samples_per_day":4},"series":[{"day":1,"level":0},{"day":1.25,"level":0},{"day":1.5,"level":54.92289291144459}],"units":"ng/dL"},"type":"json"}},"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"input":{"additionalProperties":false,"properties":{"body":{"additionalProperties":false,"description":"Exactly one dose field must be present. UNKNOWN FIELDS ARE REJECTED: a misspelling is a structural failure (400 when a payment is presented; the 402 challenge when none is), not a silently ignored key (a dropped `injections_per_week` would change the answer). The dose is converted to mg ONCE and the converted value is what both the range check and the model use.","oneOf":[{"required":["dose_mg"]},{"required":["dose_mcg"]},{"required":["dose_iu"]}],"properties":{"compound":{"description":"Canon id, slug, or alias. Slug and alias matching is case-insensitive.","type":"string"},"dose_iu":{"description":"Dose per injection in the compound's activity unit. Requires a published conversion for that compound, else 422 unit_unsupported_for_compound.","exclusiveMinimum":0,"type":"number"},"dose_mcg":{"description":"Dose per injection, micrograms.","exclusiveMinimum":0,"type":"number"},"dose_mg":{"description":"Dose per injection, milligrams.","exclusiveMinimum":0,"type":"number"},"duration_weeks":{"description":"Length of the dosing window. The model always adds a 60-day washout tail.","maximum":260,"minimum":1,"type":"integer"},"injections_per_week":{"description":"Injections per WEEK -- not per day. The name is the contract: a per-day reading of the same number changes the accepted dose range by 7x.","maximum":21,"minimum":0.25,"type":"number"},"route":{"description":"One of the compound's published routes (see /v1/compounds/{idOrSlug}); a string this compound does not publish is 422 route_unsupported_for_compound. Omitted, the compound's primary route is used.","type":"string"},"samples_per_day":{"default":24,"description":"Sample resolution of the returned series.","maximum":24,"minimum":1,"type":"integer"}},"required":["compound","injections_per_week","duration_weeks"],"type":"object"},"bodyType":{"enum":["json","form-data","text"],"type":"string"},"method":{"enum":["POST"],"type":"string"},"type":{"const":"http","type":"string"}},"required":["type","method","bodyType","body"],"type":"object"},"output":{"properties":{"example":{"type":"object"},"type":{"type":"string"}},"required":["type"],"type":"object"}},"required":["input"],"type":"object"}}}},"liveness":{"reliability":null},"verified":false,"featured":false},{"id":39991,"slug":"39991","resource":"https://api.doseplot.com/v1/pk/curve","description":"Pharmacokinetic simulation for one compound: walks the published model at one dose and cadence and returns the modelled serum curve over the requested horizon plus a 60-day washout tail. Deterministic math over published reference data -- not medical advice, not a prescription, and for relay to a human decision-maker rather than autonomous administration.","type":"http","resourceType":"Agent Service","x402Version":2,"accepts":[{"scheme":"exact","network":"eip155:8453","payTo":"0x9E3df8006B1917ECcED9591BeCcb893d0DE9eBd9","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","amount":"10000","amountUsd":0.01,"maxTimeoutSeconds":300}],"outputSchema":{"properties":{"example":{"type":"object"},"type":{"type":"string"}},"required":["type"],"type":"object"},"extensions":{"bazaar":{"info":{"input":{"body":{"compound":"testosterone-cypionate","dose_mg":100,"duration_weeks":12,"injections_per_week":1,"samples_per_day":4},"bodyType":"json","method":"POST","type":"http"},"output":{"example":{"compound":{"id":4,"name":"Testosterone Cypionate","slug":"testosterone-cypionate"},"disclaimer":"Mathematical planning aid. Not medical advice. DosePlot is an informational tool, not a healthcare provider, and using it creates no provider-patient relationship. Do not start, stop, or change any protocol without the approval of a licensed healthcare professional.","intended_use":"Outputs are for relay to a human decision-maker; not for autonomous administration.","meta":{"duration_weeks":12,"injections_per_week":1,"more":"multi-compound protocols: https://doseplot.com/app","network_note":"Paid calls settle in USDC on Base (eip155:8453) via x402.","samples_per_day":4},"series":[{"day":1,"level":0},{"day":1.25,"level":0},{"day":1.5,"level":54.92289291144459}],"units":"ng/dL"},"type":"json"}},"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"input":{"additionalProperties":false,"properties":{"body":{"additionalProperties":false,"description":"Exactly one dose field must be present. UNKNOWN FIELDS ARE REJECTED: a misspelling is a structural failure (400 when a payment is presented; the 402 challenge when none is), not a silently ignored key (a dropped `injections_per_week` would change the answer). The dose is converted to mg ONCE and the converted value is what both the range check and the model use.","oneOf":[{"required":["dose_mg"]},{"required":["dose_mcg"]},{"required":["dose_iu"]}],"properties":{"compound":{"description":"Canon id, slug, or alias. Slug and alias matching is case-insensitive.","type":"string"},"dose_iu":{"description":"Dose per injection in the compound's activity unit. Requires a published conversion for that compound, else 422 unit_unsupported_for_compound.","exclusiveMinimum":0,"type":"number"},"dose_mcg":{"description":"Dose per injection, micrograms.","exclusiveMinimum":0,"type":"number"},"dose_mg":{"description":"Dose per injection, milligrams.","exclusiveMinimum":0,"type":"number"},"duration_weeks":{"description":"Length of the dosing window. The model always adds a 60-day washout tail.","maximum":260,"minimum":1,"type":"integer"},"injections_per_week":{"description":"Injections per WEEK -- not per day. The name is the contract: a per-day reading of the same number changes the accepted dose range by 7x.","maximum":21,"minimum":0.25,"type":"number"},"route":{"description":"One of the compound's published routes (see /v1/compounds/{idOrSlug}); a string this compound does not publish is 422 route_unsupported_for_compound. Omitted, the compound's primary route is used.","type":"string"},"samples_per_day":{"default":24,"description":"Sample resolution of the returned series.","maximum":24,"minimum":1,"type":"integer"}},"required":["compound","injections_per_week","duration_weeks"],"type":"object"},"bodyType":{"enum":["json","form-data","text"],"type":"string"},"method":{"enum":["POST"],"type":"string"},"type":{"const":"http","type":"string"}},"required":["type","method","bodyType","body"],"type":"object"},"output":{"properties":{"example":{"type":"object"},"type":{"type":"string"}},"required":["type"],"type":"object"}},"required":["input"],"type":"object"}}},"tags":["bazaar"],"sourceHost":"api.doseplot.com","lastUpdated":"2026-09-28T02:54:15.495Z","quality":{"calls30d":2,"uniquePayers30d":2,"lastCalledAt":"2026-09-28T02:54:14.677Z"},"metadata":{"extensions":{"bazaar":{"info":{"input":{"body":{"compound":"testosterone-cypionate","dose_mg":100,"duration_weeks":12,"injections_per_week":1,"samples_per_day":4},"bodyType":"json","method":"POST","type":"http"},"output":{"example":{"compound":{"id":4,"name":"Testosterone Cypionate","slug":"testosterone-cypionate"},"disclaimer":"Mathematical planning aid. Not medical advice. DosePlot is an informational tool, not a healthcare provider, and using it creates no provider-patient relationship. Do not start, stop, or change any protocol without the approval of a licensed healthcare professional.","intended_use":"Outputs are for relay to a human decision-maker; not for autonomous administration.","meta":{"duration_weeks":12,"injections_per_week":1,"more":"multi-compound protocols: https://doseplot.com/app","network_note":"Paid calls settle in USDC on Base (eip155:8453) via x402.","samples_per_day":4},"series":[{"day":1,"level":0},{"day":1.25,"level":0},{"day":1.5,"level":54.92289291144459}],"units":"ng/dL"},"type":"json"}},"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"input":{"additionalProperties":false,"properties":{"body":{"additionalProperties":false,"description":"Exactly one dose field must be present. UNKNOWN FIELDS ARE REJECTED: a misspelling is a structural failure (400 when a payment is presented; the 402 challenge when none is), not a silently ignored key (a dropped `injections_per_week` would change the answer). The dose is converted to mg ONCE and the converted value is what both the range check and the model use.","oneOf":[{"required":["dose_mg"]},{"required":["dose_mcg"]},{"required":["dose_iu"]}],"properties":{"compound":{"description":"Canon id, slug, or alias. Slug and alias matching is case-insensitive.","type":"string"},"dose_iu":{"description":"Dose per injection in the compound's activity unit. Requires a published conversion for that compound, else 422 unit_unsupported_for_compound.","exclusiveMinimum":0,"type":"number"},"dose_mcg":{"description":"Dose per injection, micrograms.","exclusiveMinimum":0,"type":"number"},"dose_mg":{"description":"Dose per injection, milligrams.","exclusiveMinimum":0,"type":"number"},"duration_weeks":{"description":"Length of the dosing window. The model always adds a 60-day washout tail.","maximum":260,"minimum":1,"type":"integer"},"injections_per_week":{"description":"Injections per WEEK -- not per day. The name is the contract: a per-day reading of the same number changes the accepted dose range by 7x.","maximum":21,"minimum":0.25,"type":"number"},"route":{"description":"One of the compound's published routes (see /v1/compounds/{idOrSlug}); a string this compound does not publish is 422 route_unsupported_for_compound. Omitted, the compound's primary route is used.","type":"string"},"samples_per_day":{"default":24,"description":"Sample resolution of the returned series.","maximum":24,"minimum":1,"type":"integer"}},"required":["compound","injections_per_week","duration_weeks"],"type":"object"},"bodyType":{"enum":["json","form-data","text"],"type":"string"},"method":{"enum":["POST"],"type":"string"},"type":{"const":"http","type":"string"}},"required":["type","method","bodyType","body"],"type":"object"},"output":{"properties":{"example":{"type":"object"},"type":{"type":"string"}},"required":["type"],"type":"object"}},"required":["input"],"type":"object"}}}},"liveness":{"reliability":null},"verified":false,"featured":false}]}