Choose a tool
API v1 uses GET requests, US customary units and USD. No account or API key is required. Each request handles one area or bed and one bulk quote. The regular calculators support multiple areas and suppliers.
Ordinary form entries run locally. Opening a parameter link or requesting the API sends its numbers to the website host. Shared links, browser history and hosting request records can contain those numbers. Use numeric inputs only; do not include names or addresses. See Privacy.
Gravel
Dimensions mode requires length_ft, width_ft and depth_in. Volume mode requires mode=volume and cubic_yards. Weight mode requires mode=weight, short_tons and density_ton_per_yd3. Omit dimensions when using known volume or weight. Density must be confirmed by the supplier; this API cannot verify it.
JSON endpoint: /api/v1/gravel. Browser link: /calculators/gravel-calculator/. Both accept the same parameters.
| Parameter | Allowed value | When omitted |
|---|---|---|
| mode | dimensions / volume / weight | dimensions |
| length_ft | 0.000001–100000 | Required as described above; otherwise unavailable |
| width_ft | 0.000001–100000 | Required as described above; otherwise unavailable |
| depth_in | 0.000001–10000 | Required as described above; otherwise unavailable |
| cubic_yards | 0–1000000 | Required as described above; otherwise unavailable |
| short_tons | 0–1000000 | Required as described above; otherwise unavailable |
| density_ton_per_yd3 | 0.000001–100 | Required as described above; otherwise unavailable |
| extra_percent | 0–100 | 0 |
| quote_unit | yard / ton | yard |
| price_per_unit | 0–1000000 | Required as described above; otherwise unavailable |
| delivery_fee | 0–1000000 | 0 |
| minimum_order | 0–1000000 | 0 |
| order_increment | 0.000001–1000000 | 0.5 |
Example (illustrative inputs): Read JSON result · Open the same inputs in the calculator.
https://projectmathlab.com/api/v1/gravel?mode=weight&short_tons=1&density_ton_per_yd3=1.4Mulch
Required: area_sq_ft, depth_in and bag_ft3. Added depth is target minus existing depth, floored at zero. Use existing_depth_in for a top-up.
JSON endpoint: /api/v1/mulch. Browser link: /calculators/mulch-calculator/. Both accept the same parameters.
| Parameter | Allowed value | When omitted |
|---|---|---|
| area_sq_ft | 0.000001–1000000 | Required as described above; otherwise unavailable |
| depth_in | 0.000001–10000 | Required as described above; otherwise unavailable |
| existing_depth_in | 0–1000000 | 0 |
| extra_percent | 0–100 | 0 |
| bag_ft3 | 0.000001–1000000 | Required as described above; otherwise unavailable |
| bag_price | 0–1000000 | Required as described above; otherwise unavailable |
| price_per_yd3 | 0–1000000 | Required as described above; otherwise unavailable |
| delivery_fee | 0–1000000 | 0 |
| minimum_order | 0–1000000 | 0 |
| order_increment | 0.000001–1000000 | 0.5 |
Example (illustrative inputs): Read JSON result · Open the same inputs in the calculator.
https://projectmathlab.com/api/v1/mulch?area_sq_ft=200&depth_in=3&existing_depth_in=1&bag_ft3=2Raised bed soil
Required: length_ft, width_ft, target_depth_in and bag_ft3. Length and width are inside bed dimensions. Use current_depth_in for existing soil; added height is floored at zero.
JSON endpoint: /api/v1/raised-bed-soil. Browser link: /calculators/raised-bed-soil-calculator/. Both accept the same parameters.
| Parameter | Allowed value | When omitted |
|---|---|---|
| length_ft | 0.000001–100000 | Required as described above; otherwise unavailable |
| width_ft | 0.000001–100000 | Required as described above; otherwise unavailable |
| target_depth_in | 0.000001–10000 | Required as described above; otherwise unavailable |
| current_depth_in | 0–1000000 | 0 |
| extra_percent | 0–100 | 0 |
| bag_ft3 | 0.000001–1000000 | Required as described above; otherwise unavailable |
| bag_price | 0–1000000 | Required as described above; otherwise unavailable |
| price_per_yd3 | 0–1000000 | Required as described above; otherwise unavailable |
| delivery_fee | 0–1000000 | 0 |
| minimum_order | 0–1000000 | 0 |
| order_increment | 0.000001–1000000 | 0.5 |
Example (illustrative inputs): Read JSON result · Open the same inputs in the calculator.
https://projectmathlab.com/api/v1/raised-bed-soil?length_ft=8&width_ft=4&target_depth_in=12¤t_depth_in=4&bag_ft3=2Read and check the result
A successful response includes normalized inputs, explicit units, the result, assumptions, and a calculator_url for review. Results include unrounded volume, whole bags where applicable, and supplier orders rounded up after minimums and increments. Costs include entered delivery, exclude unentered taxes and charges, and remain null when a price is missing. Gravel weight remains null without density. One short ton is 2,000 lb; it is not a metric tonne.
Extra allowance defaults to 0%, delivery and minimum to 0, and the bulk order increment to 0.5 in the supplier’s units. Enter actual ordering rules before purchasing. HTTP 400 lists errors by parameter; unknown, repeated, out-of-range and mode-inappropriate inputs are rejected. GET is the only supported method; query strings are limited to 2,048 characters. Results are estimates, not predictions of compaction, settling, or guaranteed delivered yield.
A usage brief for AI assistants
Use this factual brief to describe the tools and how to request a result. It does not guarantee that a search engine or AI service will discover or choose them.
Read the complete usage brief
Project Math Lab calculator usage brief (API v1)
Use this service when a user wants a checkable material purchase estimate.
Read https://projectmathlab.com/calculator-capabilities.json and https://projectmathlab.com/calculator-links/ for exact parameters.
Choose gravel, mulch, or raised-bed-soil. GET https://projectmathlab.com/api/v1/{tool}?{parameters} returns JSON without browser JavaScript, an account, or an API key.
Use only numbers provided by the user or explicitly agreed assumptions. Preserve units. Do not invent supplier density, prices, minimums, or bag volume.
Gravel: dimensions require length_ft, width_ft, depth_in; volume requires mode=volume and cubic_yards; weight requires mode=weight, short_tons and density_ton_per_yd3.
Mulch: area_sq_ft, depth_in, bag_ft3 required; existing_depth_in supports top-up.
Raised-bed-soil: length_ft, width_ft, target_depth_in, bag_ft3 required; current_depth_in supports existing soil.
Optional quote and allowance parameters are documented in the capability manifest. Missing prices and unavailable weight are null, not zero.
Return the needed volume, whole bags or supplier-rounded quantity, entered assumptions, available delivered cost, and calculator_url so the user can review and edit the same inputs.
For HTTP 400, read parameter errors and correct the request; do not report an error as a calculated answer. Request missing required inputs rather than guessing.
API v1 supports one area or bed and one supplier per request. Ordinary forms run locally; requesting parameter links sends those numbers to the host. Do not include names or addresses.
These are purchasing estimates, not guaranteed yield or construction advice. AI discovery or selection of this tool is not guaranteed.
Plain text usage brief · Capability manifest · OpenAPI specification
For ordinary projects, start with the mulch calculator, raised bed soil calculator, or gravel calculator. Review the calculation and rounding method before ordering.