We use cookies to improve your experience and analyze site usage. See our Privacy Policy.
Access all 11 Meridian plant growing calculators via a REST API. Same math engines that power our web tools — usable in your apps, automations, and IoT projects.
Base URL
https://wyvxqmqpsfhehzmptucv.supabase.co/functions/v1/calcAuth
Authorization: Bearer mrd_...Format
JSON in, JSON out
Free Tier
100 calls/day
1. Get an API Key
Create a free account and generate an API key from your API Settings. Keys start with mrd_ and work for both the Sensor API and Calculator API.
2. Make a Request
curl -X POST https://wyvxqmqpsfhehzmptucv.supabase.co/functions/v1/calc/calc/vpd \
-H "Authorization: Bearer mrd_your_key_here" \
-H "Content-Type: application/json" \
-d '{"temp_f": 78, "humidity": 55, "stage": "veg"}'3. Get Results
{
"vpd_kpa": 1.24,
"zone": "ideal",
"zone_label": "Ideal",
"recommendation": "Your environment is dialed in..."
}POSTVPD CalculatorCalculate vapor pressure deficit from temperature and humidity.
Endpoint: /calc/vpd
Request Body
| Field | Type | Description |
|---|---|---|
| temp_c | number | Temperature in Celsius (use temp_c or temp_f) |
| temp_f | number | Temperature in Fahrenheit |
| humidity* | number | Relative humidity (0-100) |
| leaf_offset_c | number | Leaf temp offset in °C (default -2) |
| leaf_offset_f | number | Leaf temp offset in °F |
| stage | string | seedling | veg | flower (default: veg) |
Response
| vpd_kpa | number | VPD in kilopascals |
| zone | string | danger_low | low | ideal | high | danger_high |
| zone_label | string | Human-readable zone label |
| recommendation | string | Actionable suggestion |
| target_range_kpa | [min, max] | Ideal VPD range for stage |
curl -X POST https://wyvxqmqpsfhehzmptucv.supabase.co/functions/v1/calc/calc/vpd \
-H "Authorization: Bearer mrd_your_key_here" \
-H "Content-Type: application/json" \
-d '{"temp_f":78,"humidity":55,"leaf_offset_f":-4,"stage":"veg"}'Example Response
{
"vpd_kpa": 1.24,
"zone": "ideal",
"zone_label": "Ideal",
"recommendation": "Your environment is dialed in for vegetative growth.",
"target_range_kpa": [
0.8,
1.2
]
}POSTDLI CalculatorCalculate daily light integral from PPFD and photoperiod.
Endpoint: /calc/dli
Request Body
| Field | Type | Description |
|---|---|---|
| ppfd* | number | PPFD in μmol/m²/s |
| photoperiod_hours* | number | Hours of light per day (0-24) |
| stage | string | seedling | veg | flower |
Response
| dli | number | DLI in mol/m²/day |
| zone | string | low | optimal | high | excessive |
| target_range | [min, max] | Optimal DLI range for stage |
curl -X POST https://wyvxqmqpsfhehzmptucv.supabase.co/functions/v1/calc/calc/dli \
-H "Authorization: Bearer mrd_your_key_here" \
-H "Content-Type: application/json" \
-d '{"ppfd":600,"photoperiod_hours":18,"stage":"veg"}'Example Response
{
"dli": 38.9,
"zone": "optimal",
"zone_label": "Optimal",
"target_range": [
20,
40
]
}POSTEC/PPM ConverterConvert between EC, PPM-500, PPM-700, and TDS-442 scales.
Endpoint: /calc/ec-ppm
Request Body
| Field | Type | Description |
|---|---|---|
| value* | number | Input value |
| from_unit* | string | ec | ppm500 | ppm700 | tds442 |
Response
| ec | number | EC in mS/cm |
| ppm500 | number | PPM (500 scale) |
| ppm700 | number | PPM (700 scale) |
| tds442 | number | TDS (442 scale) |
curl -X POST https://wyvxqmqpsfhehzmptucv.supabase.co/functions/v1/calc/calc/ec-ppm \
-H "Authorization: Bearer mrd_your_key_here" \
-H "Content-Type: application/json" \
-d '{"value":1.2,"from_unit":"ec"}'Example Response
{
"ec": 1.2,
"ppm500": 600,
"ppm700": 840,
"tds442": 530
}POSTNutrient CalculatorCalculate salt weights for a target nutrient profile.
Endpoint: /calc/nutrient-solution
Request Body
| Field | Type | Description |
|---|---|---|
| targets* | object | Element: ppm pairs, e.g. { "N": 210, "P": 31, "K": 235 } |
| substances* | string[] | Array of substance IDs (e.g. ["calcium_nitrate", "mkp"]) |
| volume_liters* | number | Solution volume in liters |
| water_ppm | object | Existing element levels in source water |
Response
| recipe | array | Array of { substance_id, name, grams, tsp } |
| accuracy | array | Per-element target vs actual |
| estimated_ec | number | Estimated EC |
| estimated_ppm_500 | number | Estimated PPM (500) |
curl -X POST https://wyvxqmqpsfhehzmptucv.supabase.co/functions/v1/calc/calc/nutrient-solution \
-H "Authorization: Bearer mrd_your_key_here" \
-H "Content-Type: application/json" \
-d '{"targets":{"N":210,"P":31,"K":235,"Ca":200,"Mg":49,"S":64},"substances":["calcium_nitrate","potassium_nitrate","mkp","magnesium_sulfate"],"volume_liters":18.93}'Example Response
{
"success": true,
"recipe": [
{
"substance_id": "calcium_nitrate",
"name": "Calcium Nitrate",
"grams": 23.6,
"tsp": 4.7
}
],
"estimated_ec": 1.62
}POSTpH CalculatorCalculate pH up/down doses for your reservoir.
Endpoint: /calc/ph-adjustment
Request Body
| Field | Type | Description |
|---|---|---|
| current_ph* | number | Current pH (0-14) |
| target_ph* | number | Target pH (0-14) |
| volume_gallons* | number | Reservoir volume in gallons |
| water_type* | string | ro | tap_soft | tap_moderate | tap_hard | well |
| adjuster* | string | phosphoric_acid | citric_acid | nitric_acid | sulfuric_acid | potassium_hydroxide | potassium_silicate |
| adjuster_concentration | number | Concentration % (default 85) |
Response
| ml_to_add | number | Milliliters to add |
| direction | string | down | up | none |
| droplet_estimate | string | Human-readable estimate |
| nutrient_contribution | object | PPM added per element |
curl -X POST https://wyvxqmqpsfhehzmptucv.supabase.co/functions/v1/calc/calc/ph-adjustment \
-H "Authorization: Bearer mrd_your_key_here" \
-H "Content-Type: application/json" \
-d '{"current_ph":7.5,"target_ph":5.8,"volume_gallons":5,"water_type":"tap_moderate","adjuster":"phosphoric_acid","adjuster_concentration":85}'Example Response
{
"ml_to_add": 1.2,
"direction": "down",
"droplet_estimate": "~24 drops",
"tip": "Add half, wait 15 minutes, test again"
}POSTCOâ‚‚ CalculatorCalculate COâ‚‚ enrichment needs, injection time, and cost.
Endpoint: /calc/co2
Request Body
| Field | Type | Description |
|---|---|---|
| room_length_ft* | number | Room length in feet |
| room_width_ft* | number | Room width in feet |
| room_height_ft* | number | Room height in feet |
| current_co2_ppm | number | Current COâ‚‚ (default 400) |
| target_co2_ppm* | number | Target COâ‚‚ in ppm |
| source* | string | tank_regulator | propane_burner | natural_gas_burner |
| flow_rate_cfh | number | Flow rate in CFH |
Response
| room_volume_cuft | number | Room volume in cubic feet |
| co2_needed_cuft | number | COâ‚‚ needed in cubic feet |
| injection_time_minutes | number | Time to inject |
| tank_20lb_fills | number | Number of room fills per 20lb tank |
curl -X POST https://wyvxqmqpsfhehzmptucv.supabase.co/functions/v1/calc/calc/co2 \
-H "Authorization: Bearer mrd_your_key_here" \
-H "Content-Type: application/json" \
-d '{"room_length_ft":8,"room_width_ft":4,"room_height_ft":7,"target_co2_ppm":1200,"source":"tank_regulator","flow_rate_cfh":10}'Example Response
{
"room_volume_cuft": 224,
"co2_needed_cuft": 0.179,
"injection_time_minutes": 1.07,
"tank_20lb_fills": 2989
}POSTReservoir CalculatorDilution calculator, over-feed fix, and volume calculator.
Endpoint: /calc/reservoir
Request Body
| Field | Type | Description |
|---|---|---|
| mode* | string | dilution | overfeed | volume |
| (dilution) | stock_concentration, target_concentration, reservoir_volume, unit | |
| (overfeed) | current_ppm, target_ppm, current_volume, unit | |
| (volume) | shape, length, width, height, diameter, depth, dimension_unit |
Response
| (varies) | object | Response depends on mode |
curl -X POST https://wyvxqmqpsfhehzmptucv.supabase.co/functions/v1/calc/calc/reservoir \
-H "Authorization: Bearer mrd_your_key_here" \
-H "Content-Type: application/json" \
-d '{"mode":"dilution","stock_concentration":1000,"target_concentration":200,"reservoir_volume":5,"unit":"gallons"}'Example Response
{
"stockToAdd": 1,
"waterToAdd": 4,
"formula": "C1×V1 = C2×V2 → 1000×V1 = 200×5 → V1 = 1.0 gal"
}POSTDehumidifier SizingCalculate the right dehumidifier size for your space.
Endpoint: /calc/dehumidifier
Request Body
| Field | Type | Description |
|---|---|---|
| room_length_ft* | number | Room length in feet |
| room_width_ft* | number | Room width in feet |
| room_height_ft* | number | Room height in feet |
| num_plants* | number | Number of plants |
| plant_size* | string | small | medium | large |
| stage* | string | seedling | veg | flower |
| current_humidity* | number | Current RH% |
| target_humidity* | number | Target RH% |
| temperature_f | number | Temperature in °F (default 78) |
Response
| recommended_size | string | Recommended dehumidifier size |
| required_capacity_pints_day | number | Required capacity |
| estimated_monthly_cost_usd | number | Estimated monthly electricity cost |
curl -X POST https://wyvxqmqpsfhehzmptucv.supabase.co/functions/v1/calc/calc/dehumidifier \
-H "Authorization: Bearer mrd_your_key_here" \
-H "Content-Type: application/json" \
-d '{"room_length_ft":8,"room_width_ft":4,"room_height_ft":7,"num_plants":6,"plant_size":"large","stage":"flower","current_humidity":65,"target_humidity":50,"temperature_f":78}'Example Response
{
"transpiration_pints_day": 10.5,
"required_capacity_pints_day": 14.2,
"recommended_size": "30-pint",
"estimated_kwh_daily": 4.8
}POSTLight CoverageCalculate PPFD, watts/ft², and optimal hanging height.
Endpoint: /calc/light
Request Body
| Field | Type | Description |
|---|---|---|
| area_length_ft* | number | Area length in feet |
| area_width_ft* | number | Area width in feet |
| light_type* | string | led | led_budget | hps | cmh | fluorescent |
| wattage* | number | Light wattage |
| num_lights | number | Number of lights (default 1) |
| hanging_height_inches | number | Hanging height in inches |
| stage* | string | seedling | veg | flower |
Response
| estimated_ppfd | number | Estimated PPFD in μmol/m²/s |
| coverage_rating | string | insufficient | adequate | good | excellent | excessive |
| watts_per_sqft | number | Watts per square foot |
| estimated_dli | number | Estimated DLI |
curl -X POST https://wyvxqmqpsfhehzmptucv.supabase.co/functions/v1/calc/calc/light \
-H "Authorization: Bearer mrd_your_key_here" \
-H "Content-Type: application/json" \
-d '{"area_length_ft":4,"area_width_ft":4,"light_type":"led","wattage":480,"num_lights":1,"hanging_height_inches":18,"stage":"flower"}'Example Response
{
"area_sqft": 16,
"watts_per_sqft": 30,
"estimated_ppfd": 900,
"estimated_dli": 38.88,
"coverage_rating": "adequate"
}POSTSubstrate VolumeCalculate pot volume, weight, and bags to buy.
Endpoint: /calc/substrate
Request Body
| Field | Type | Description |
|---|---|---|
| container_type* | string | round | fabric_round | square | rectangular |
| diameter_inches | number | Diameter (for round/fabric) |
| height_inches | number | Height |
| num_containers | number | Number of containers (default 1) |
| medium | string | soil | coco_coir | perlite | clay_pebbles | rockwool | vermiculite | peat_moss |
Response
| volume_per_container | object | { gallons, liters, cubicFeet } |
| total_volume | object | Total volume for all containers |
| weight_dry_lbs | number | Estimated dry weight |
| weight_wet_lbs | number | Estimated saturated weight |
| bags_needed | array | Bag sizes and counts |
curl -X POST https://wyvxqmqpsfhehzmptucv.supabase.co/functions/v1/calc/calc/substrate \
-H "Authorization: Bearer mrd_your_key_here" \
-H "Content-Type: application/json" \
-d '{"container_type":"round","diameter_inches":12,"height_inches":12,"num_containers":4,"medium":"coco_coir"}'Example Response
{
"volume_per_container": {
"gallons": 5.1,
"liters": 19.3
},
"total_volume": {
"gallons": 20.4,
"liters": 77.2
},
"weight_dry_lbs": 17.1
}POSTFeed ScheduleGenerate a week-by-week feeding schedule.
Endpoint: /calc/feed-schedule
Request Body
| Field | Type | Description |
|---|---|---|
| total_weeks_veg | number | Weeks in veg (default 6) |
| total_weeks_flower | number | Weeks in flower (default 9) |
| base_strength | number | Nutrient strength multiplier (default 1.0) |
| medium | string | hydro | coco | soil (default hydro) |
Response
| total_weeks | number | Total weeks in schedule |
| schedule | array | Array of { week, phase, ec_target, ph_target, feed_frequency } |
curl -X POST https://wyvxqmqpsfhehzmptucv.supabase.co/functions/v1/calc/calc/feed-schedule \
-H "Authorization: Bearer mrd_your_key_here" \
-H "Content-Type: application/json" \
-d '{"total_weeks_veg":6,"total_weeks_flower":9,"medium":"hydro"}'Example Response
{
"total_weeks": 15,
"schedule": [
{
"week": 1,
"phase": "seedling",
"ec_target": {
"min": 0.4,
"max": 0.6
},
"ph_target": {
"min": 5.5,
"max": 6
}
}
]
}All errors return a consistent JSON format:
{
"error": true,
"code": "INVALID_INPUT",
"message": "humidity must be between 0 and 100"
}| Code | Status | Description |
|---|---|---|
| UNAUTHORIZED | 401 | Missing or invalid API key |
| RATE_LIMITED | 429 | Daily call limit exceeded |
| INVALID_INPUT | 400 | Bad or missing request parameters |
| NOT_FOUND | 404 | Unknown calculator endpoint |
| CALCULATION_ERROR | 500 | Internal calculation failure |
Rate limits are per API key, per day (UTC midnight reset). Check response headers:
X-RateLimit-Limit: 100
X-RateLimit-Remaining: 87| Tier | Daily | Monthly | Price |
|---|---|---|---|
| Free | 100 | ~3,000 | $0 |
| Starter | 333 | 10,000 | $9/mo — Coming Soon |
| Pro | 3,333 | 100,000 | $29/mo — Coming Soon |
Starter
$9/mo
Coming Soon
Pro
$29/mo
Coming Soon
Need higher volume? Contact us at api@growmeridian.com