{"openapi":"3.1.0","info":{"title":"QuoteCore+ Roof Takeoff API","version":"1.0.0","description":"Calculates a complete roof takeoff from actual final measurements or plan-view measurements adjusted for roof pitch. Accessible to humans via the builder UI, to AI agents via GET calculation URL, REST API, and MCP tools - all using the same shared calculation engine."},"servers":[{"url":"https://quote-core.com"}],"paths":{"/api/public/roof-takeoff/schema":{"get":{"operationId":"getRoofTakeoffSchema","summary":"Get the complete roof takeoff schema","responses":{"200":{"description":"Calculator schema"}}}},"/api/public/roof-takeoff/calculate":{"post":{"operationId":"calculateRoofTakeoff","summary":"Calculate a roof takeoff and return a human-viewable result URL","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"mode":{"type":"string","queryParameter":"mode","aliases":[],"enum":["actual","plan"],"default":"actual","required":false,"description":"Measurement mode. \"actual\" = final roof-surface measurements. \"plan\" = plan-view measurements requiring pitch adjustment.","example":"plan"},"units":{"type":"string","queryParameter":"units","aliases":[],"enum":["metric","imperial","squares"],"default":"metric","required":false,"description":"Unit system for all measurements.","example":"metric"},"pitch":{"type":"number","queryParameter":"pitch","aliases":["pitchDegrees"],"default":0,"minimum":0,"maximum":89,"required":false,"description":"Roof pitch in degrees. Required for plan mode to calculate sloped lengths and areas. Ignored for components with pitchType \"none\" (ridges, spouting).","unit":"degrees","example":25},"area":{"type":"number","queryParameter":"area","aliases":["roofArea"],"exclusiveMinimum":0,"required":false,"description":"Total roof area. In plan mode, this is the plan-view (horizontal) area that will be adjusted by the rafter pitch factor. In actual mode, this is the final sloped roof area.","unit":"m2 when units=metric, sq ft when units=imperial, squares when units=squares","pitchAdjustment":"Applies in plan mode (rafter pitch factor)","example":126},"hips":{"type":"array<number>","queryParameter":"hips","aliases":["hip"],"description":"Individual hip lengths. A hip is the angled line where two roof slopes meet on an external corner, running from the ridge down to the eaves.","unit":"m when units=metric, ft when units=imperial or squares","multipleValues":true,"queryFormat":"comma-separated, e.g. hips=5,5,5,5","pitchAdjustment":"Applies in plan mode (hip/valley pitch factor)","maximumItems":200,"example":[5,5,5,5]},"ridges":{"type":"array<number>","queryParameter":"ridge","aliases":["ridges"],"description":"Individual ridge lengths. A ridge is the horizontal line at the top of a roof where two slopes meet - the peak.","unit":"m when units=metric, ft when units=imperial or squares","multipleValues":true,"queryFormat":"comma-separated, e.g. ridge=8","pitchAdjustment":"None (ridges are horizontal, not pitch-adjusted)","maximumItems":200,"example":[8]},"valleys":{"type":"array<number>","queryParameter":"valleys","aliases":["valley"],"description":"Individual valley lengths. A valley is the angled line where two roof slopes meet on an internal corner, where water flows into and runs down to the eaves.","unit":"m when units=metric, ft when units=imperial or squares","multipleValues":true,"queryFormat":"comma-separated, e.g. valleys=4,4","pitchAdjustment":"Applies in plan mode (hip/valley pitch factor)","maximumItems":200,"example":[4,4]},"barges":{"type":"array<number>","queryParameter":"barges","aliases":["barge"],"description":"Individual barge board lengths. A barge is the sloped edge of the roof at a gable end (also called rafter edge, rake, or verge), running from the ridge down to the eaves at the side.","unit":"m when units=metric, ft when units=imperial or squares","multipleValues":true,"queryFormat":"comma-separated, e.g. barges=2.5,2.5","pitchAdjustment":"Applies in plan mode (rafter pitch factor)","maximumItems":200,"example":[2.5,2.5]},"spouting":{"type":"array<number>","queryParameter":"gutter","aliases":["spouting","gutters","eaves"],"description":"Individual gutter/spouting lengths. The gutter system along the bottom edge of the roof where water runs off. Also accepts \"eaves\" as an alias.","unit":"m when units=metric, ft when units=imperial or squares","multipleValues":true,"queryFormat":"comma-separated, e.g. gutter=18","pitchAdjustment":"None (spouting runs horizontally along eaves, not pitch-adjusted)","maximumItems":200,"example":[18]},"underlay":{"type":"number","queryParameter":"underlay","aliases":[],"exclusiveMinimum":0,"required":false,"description":"Underlay area. A secondary layer under the main roofing material. Uses the same pitch calculation as roof area.","unit":"m2 when units=metric, sq ft when units=imperial, squares when units=squares","pitchAdjustment":"Applies in plan mode (rafter pitch factor)","example":126},"fixings":{"type":"number","queryParameter":"fixings","aliases":[],"exclusiveMinimum":0,"required":false,"description":"Fixings area. Nails, screws, and clips used to secure the roof covering. Measured by roof area using the same pitch calculation.","unit":"m2 when units=metric, sq ft when units=imperial, squares when units=squares","pitchAdjustment":"Applies in plan mode (rafter pitch factor)","example":126}}}}}},"responses":{"200":{"description":"Structured result and resultUrl"},"422":{"description":"Validation errors"}}}}}}