GrowVPD Pro API

Free, open API for indoor growing science. No API key required.

v2.0 18 endpoints REST / JSON No auth required
Base URL https://api.growvpd.pro

Quick Start

The GrowVPD Pro API is completely free and requires no authentication. All endpoints return JSON. Just send a GET request and you are ready to go.

The API is currently served at https://api.growvpd.pro. This will transition to https://api.growvpd.pro in the near future. All endpoint paths will remain identical.
Terminal
# Calculate VPD for 25C and 60% humidity
curl "https://api.growvpd.pro/v1/vpd?temp=25&humidity=60"

# Get environment targets for mid-flower stage
curl "https://api.growvpd.pro/v1/stage?stage=mid_flower&medium=coco"
JavaScript
const BASE = "https://api.growvpd.pro";

async function getVPD(temp, humidity) {
  const res = await fetch(
    `${BASE}/v1/vpd?temp=${temp}&humidity=${humidity}`
  );
  return res.json();
}

// Usage
const data = await getVPD(25, 60);
console.log(data.vpd);     // 1.27
console.log(data.status);  // "slightly_high"
Python
import requests

BASE = "https://api.growvpd.pro"

def get_vpd(temp, humidity):
    r = requests.get(f"{BASE}/v1/vpd", params={
        "temp": temp,
        "humidity": humidity
    })
    return r.json()

data = get_vpd(25, 60)
print(data["vpd"])     # 1.27
print(data["status"])  # "slightly_high"
Rate limits: Currently none. Be reasonable with requests. If you plan to make high-volume calls, please reach out at support@growvpd.pro.

🌱 Core VPD

GET /v1/vpd

Calculate VPD (Vapor Pressure Deficit) from temperature and humidity. Returns VPD value, leaf VPD, status classification, and optimal ranges for all growth stages.

ParameterTypeDefaultDescription
temprequirednumber-Air temperature
humidityrequirednumber-Relative humidity (%)
leaf_offsetnumber2.0Leaf temperature offset below air temp
unitstringcTemperature unit: c (Celsius) or f (Fahrenheit)
Try it
GET /v1/vpd?temp=25&humidity=60
{
  "vpd": 1.27,
  "vpd_leaf": 1.09,
  "status": "slightly_high",
  "temperature": 25,
  "humidity": 60,
  "leaf_temperature": 23,
  "dewpoint": 16.7,
  "unit": "celsius",
  "stages": {
    "clone_seedling": { "min": 0.4, "max": 0.8, "status": "too_high" },
    "early_veg": { "min": 0.6, "max": 1.0, "status": "too_high" },
    "late_veg": { "min": 0.8, "max": 1.2, "status": "slightly_high" },
    "early_flower": { "min": 1.0, "max": 1.4, "status": "optimal" },
    "mid_flower": { "min": 1.2, "max": 1.5, "status": "optimal" },
    "late_flower": { "min": 1.2, "max": 1.6, "status": "optimal" }
  }
}
GET /v1/target

Reverse VPD calculator. Given a target VPD (or growth stage) and either temperature or humidity, calculates the missing variable. Useful for finding what humidity to aim for at a given temperature.

ParameterTypeDefaultDescription
vpdnumber-Target VPD value (kPa). Provide this or stage.
stagestring-Growth stage (uses midpoint VPD). One of: clone_seedling, early_veg, late_veg, early_flower, mid_flower, late_flower
tempnumber-Known temperature (solves for humidity)
humiditynumber-Known humidity (solves for temperature)
leaf_offsetnumber2.0Leaf temperature offset
unitstringcTemperature unit: c or f
Try it
GET /v1/target?vpd=1.2&temp=25
{
  "target_vpd": 1.2,
  "known_variable": "temperature",
  "known_value": 25,
  "solved_variable": "humidity",
  "solved_value": 62.1,
  "leaf_offset": 2.0,
  "unit": "celsius",
  "verification": {
    "actual_vpd": 1.2,
    "vpd_leaf": 1.03
  }
}
GET /v1/chart

Generate a VPD heatmap data matrix. Returns a 2D grid of VPD values across a temperature and humidity range, with zone classifications. Perfect for building visual VPD charts.

ParameterTypeDefaultDescription
temp_minnumber15Minimum temperature
temp_maxnumber35Maximum temperature
temp_stepnumber1Temperature step size
rh_minnumber30Minimum relative humidity (%)
rh_maxnumber90Maximum relative humidity (%)
rh_stepnumber5Humidity step size
leaf_offsetnumber2Leaf temperature offset
stagestring-Growth stage for zone classification
Try it
GET /v1/chart?temp_min=18&temp_max=30&stage=mid_flower
{
  "temp_range": [18, 19, 20, ..., 30],
  "rh_range": [30, 35, 40, ..., 90],
  "stage": "mid_flower",
  "stage_range": { "min": 1.2, "max": 1.5 },
  "leaf_offset": 2,
  "matrix": [
    {
      "temp": 18,
      "values": [
        { "rh": 30, "vpd": 1.44, "zone": "optimal" },
        { "rh": 35, "vpd": 1.34, "zone": "optimal" },
        // ... more humidity values
      ]
    },
    // ... more temperature rows
  ]
}
GET /v1/batch

Batch VPD calculations with aggregated statistics. Submit multiple temperature/humidity readings and receive individual VPD values plus min, max, average, and standard deviation across the set.

ParameterTypeDefaultDescription
readingsrequiredJSON array-Array of {"temp":N, "humidity":N} objects (URL-encoded)
leaf_offsetnumber2.0Leaf temperature offset
Try it
GET /v1/batch?readings=[{"temp":25,"humidity":60},{"temp":26,"humidity":55}]
{
  "readings": [
    {
      "temperature": 25,
      "humidity": 60,
      "vpd": 1.27,
      "vpd_leaf": 1.09,
      "status": "slightly_high"
    },
    {
      "temperature": 26,
      "humidity": 55,
      "vpd": 1.51,
      "vpd_leaf": 1.31,
      "status": "high"
    }
  ],
  "statistics": {
    "count": 2,
    "vpd_min": 1.27,
    "vpd_max": 1.51,
    "vpd_avg": 1.39,
    "vpd_std_dev": 0.12
  }
}

Light & DLI

GET /v1/dli

Daily Light Integral calculator. Compute DLI from PPFD and photoperiod (forward), or find the required PPFD to hit a target DLI (reverse). Includes optimal DLI ranges per growth stage.

ParameterTypeDefaultDescription
ppfdnumber-Photosynthetic Photon Flux Density (umol/m2/s)
hoursnumber-Photoperiod in hours
dlinumber-Target DLI (mol/m2/day) for reverse calculation
Try it
GET /v1/dli?ppfd=600&hours=12
{
  "ppfd": 600,
  "hours": 12,
  "dli": 25.92,
  "mode": "forward",
  "stage_targets": {
    "clone_seedling": { "dli_min": 6, "dli_max": 12 },
    "early_veg": { "dli_min": 15, "dli_max": 25 },
    "late_veg": { "dli_min": 25, "dli_max": 35 },
    "early_flower": { "dli_min": 30, "dli_max": 40 },
    "mid_flower": { "dli_min": 35, "dli_max": 50 },
    "late_flower": { "dli_min": 30, "dli_max": 45 }
  }
}
GET /v1/light

Comprehensive light calculator. Estimates PPFD from wattage and area, calculates DLI, evaluates light intensity for a given growth stage, and provides efficiency metrics.

ParameterTypeDefaultDescription
ppfdnumber-Known PPFD (if available)
hoursnumber-Photoperiod in hours
wattsnumber-Light wattage (for PPFD estimation)
efficiencynumber2.5LED efficiency (umol/J)
areanumber-Grow area in m2
heightnumber-Light height in meters
stagestring-Growth stage for evaluation
Try it
GET /v1/light?watts=600&area=1.44&hours=12&stage=mid_flower
{
  "ppfd_estimated": 1041.7,
  "dli": 45.0,
  "watts": 600,
  "area_m2": 1.44,
  "watts_per_m2": 416.7,
  "efficiency_umol_j": 2.5,
  "hours": 12,
  "stage": "mid_flower",
  "stage_evaluation": {
    "ppfd_status": "optimal",
    "ppfd_target": { "min": 600, "max": 1200 },
    "dli_status": "optimal",
    "dli_target": { "min": 35, "max": 50 }
  },
  "daily_energy_kwh": 7.2
}

🌿 Growing Stages

GET /v1/stage

Get comprehensive environment targets for a growth stage. Returns optimal ranges for VPD, temperature, humidity, PPFD, DLI, CO2, EC, pH, and watering frequency. Optionally tailored to a growing medium.

ParameterTypeDefaultDescription
stagestring-Stage name or "all" for every stage. Options: clone_seedling, early_veg, late_veg, early_flower, mid_flower, late_flower
mediumstring-Growing medium: soil, coco, hydro, dwc
Try it
GET /v1/stage?stage=mid_flower&medium=coco
{
  "stage": "mid_flower",
  "medium": "coco",
  "targets": {
    "vpd": { "min": 1.2, "max": 1.5, "ideal": 1.35 },
    "temperature": { "day_min": 24, "day_max": 28, "night_min": 18, "night_max": 22 },
    "humidity": { "min": 40, "max": 50 },
    "ppfd": { "min": 600, "max": 1200 },
    "dli": { "min": 35, "max": 50 },
    "co2": { "min": 800, "max": 1200 },
    "ec": { "min": 1.6, "max": 2.2 },
    "ph": { "min": 5.8, "max": 6.2 }
  },
  "watering": {
    "frequency": "2-4 times daily",
    "runoff_target": "10-20%"
  },
  "notes": [
    "Peak nutrient uptake period",
    "Coco requires more frequent fertigation than soil",
    "Monitor trichome development closely"
  ]
}
GET /v1/schedule

Generate a full grow timeline with week-by-week stage progression. Returns duration and environment targets for each stage, customized by plant type and growing medium.

ParameterTypeDefaultDescription
typestring-Plant type: photo (photoperiod) or auto (autoflower)
mediumstring-Growing medium: soil, coco, hydro, dwc
Try it
GET /v1/schedule?type=auto&medium=coco
{
  "type": "auto",
  "medium": "coco",
  "total_weeks": 10,
  "light_schedule": "20/4 or 18/6 throughout",
  "stages": [
    {
      "stage": "clone_seedling",
      "weeks": "1-1",
      "duration_weeks": 1,
      "vpd": { "min": 0.4, "max": 0.8 },
      "temp": { "min": 22, "max": 26 },
      "humidity": { "min": 65, "max": 80 }
    },
    {
      "stage": "early_veg",
      "weeks": "2-3",
      "duration_weeks": 2,
      "vpd": { "min": 0.6, "max": 1.0 },
      "temp": { "min": 22, "max": 28 },
      "humidity": { "min": 55, "max": 70 }
    },
    // ... remaining stages
  ]
}

🔍 Diagnostics

GET /v1/diagnose

Full environment diagnosis with a 0-100 health score. Analyzes temperature, humidity, VPD, pH, EC, PPFD, CO2, and night temperature. Returns issues found, severity levels, and actionable recommendations.

ParameterTypeDefaultDescription
temprequirednumber-Air temperature
humidityrequirednumber-Relative humidity (%)
stagestring-Growth stage for context-aware diagnosis
mediumstring-Growing medium
ppfdnumber-Current PPFD
phnumber-Nutrient solution pH
ecnumber-Nutrient solution EC (mS/cm)
co2number-CO2 level (ppm)
night_tempnumber-Night temperature
unitstringcTemperature unit: c or f
Try it
GET /v1/diagnose?temp=32&humidity=75&stage=late_flower&ph=7.5
{
  "health_score": 35,
  "overall_status": "critical",
  "vpd": 1.19,
  "temperature": 32,
  "humidity": 75,
  "stage": "late_flower",
  "issues": [
    {
      "parameter": "temperature",
      "severity": "high",
      "message": "Temperature too high for late flower (32C, target 20-26C)",
      "recommendation": "Increase ventilation, consider AC. High temps degrade terpenes and potency."
    },
    {
      "parameter": "humidity",
      "severity": "critical",
      "message": "Humidity critically high for late flower (75%, target 35-45%)",
      "recommendation": "Immediate action: run dehumidifier, increase airflow. Botrytis (bud rot) risk is extreme."
    },
    {
      "parameter": "ph",
      "severity": "medium",
      "message": "pH too high (7.5, target 6.0-6.5)",
      "recommendation": "Lower pH with pH Down. Nutrient lockout likely at this pH."
    }
  ],
  "mold_risk": "extreme",
  "dewpoint": 27.3
}
GET /v1/deficit

Symptom-based nutrient deficiency diagnosis. Describe visible plant symptoms and get ranked possible deficiencies with confidence scores, affected nutrients, and treatment recommendations.

ParameterTypeDefaultDescription
symptomsrequiredstring-Comma-separated symptom keywords. Examples: yellow_lower_leaves, brown_spots, curling_up, purple_stems, slow_growth, burnt_tips
phnumber-Current pH (helps narrow diagnosis)
mediumstring-Growing medium
Try it
GET /v1/deficit?symptoms=yellow_lower_leaves,brown_spots&ph=7.2
{
  "symptoms": ["yellow_lower_leaves", "brown_spots"],
  "ph": 7.2,
  "ph_warning": "pH is above optimal range. Nutrient lockout likely contributing to symptoms.",
  "possible_deficiencies": [
    {
      "nutrient": "Calcium",
      "symbol": "Ca",
      "confidence": 0.85,
      "mobility": "immobile",
      "symptoms_matched": ["brown_spots"],
      "treatment": "Add Cal-Mag supplement. Lower pH to 6.0-6.5 for better uptake."
    },
    {
      "nutrient": "Nitrogen",
      "symbol": "N",
      "confidence": 0.78,
      "mobility": "mobile",
      "symptoms_matched": ["yellow_lower_leaves"],
      "treatment": "Increase nitrogen in feed. Mobile nutrient: lower leaves affected first."
    },
    {
      "nutrient": "Potassium",
      "symbol": "K",
      "confidence": 0.52,
      "mobility": "mobile",
      "symptoms_matched": ["brown_spots", "yellow_lower_leaves"],
      "treatment": "Increase K in bloom nutrients. Check for salt buildup in medium."
    }
  ],
  "general_advice": "Priority: lower pH to 6.0-6.5 first, then reassess after 3-5 days."
}
GET /v1/dewpoint

Calculate dewpoint temperature, mold/condensation risk assessment, and safe night temperature minimum. Essential for preventing bud rot and mildew.

ParameterTypeDefaultDescription
temprequirednumber-Air temperature
humidityrequirednumber-Relative humidity (%)
unitstringcTemperature unit: c or f
Try it
GET /v1/dewpoint?temp=25&humidity=70
{
  "temperature": 25,
  "humidity": 70,
  "dewpoint": 19.2,
  "unit": "celsius",
  "mold_risk": "moderate",
  "condensation_risk": "low",
  "safe_night_temp_min": 21.2,
  "margin_to_dewpoint": 5.8,
  "recommendations": [
    "Night temperature must stay above 21.2C to prevent condensation",
    "Consider dehumidification if humidity rises above 75%"
  ]
}

🥳 Nutrients & Feeding

GET /v1/nutrient

Get EC, pH, and PPM targets for a given growth stage and medium. Includes medium-specific tips, flush schedules, and adjustments based on your water source EC.

ParameterTypeDefaultDescription
stagerequiredstring-Growth stage
mediumstring-Growing medium: soil, coco, hydro, dwc
water_ecnumber-Base water EC (mS/cm) for adjusted targets
Try it
GET /v1/nutrient?stage=mid_flower&medium=coco&water_ec=0.3
{
  "stage": "mid_flower",
  "medium": "coco",
  "water_ec": 0.3,
  "targets": {
    "ec": { "min": 1.6, "max": 2.2, "adjusted_min": 1.3, "adjusted_max": 1.9 },
    "ph": { "min": 5.8, "max": 6.2 },
    "ppm_500": { "min": 800, "max": 1100 },
    "ppm_700": { "min": 1120, "max": 1540 }
  },
  "npk_ratio": "1-3-2 (bloom focus)",
  "tips": [
    "Coco is inert - all nutrients must come from solution",
    "Always include Cal-Mag with coco (0.3-0.5 EC)",
    "Feed every watering, no plain water days",
    "Target 10-20% runoff to prevent salt buildup"
  ],
  "flush_schedule": "Flush with pH'd water at EC 0.3 every 2 weeks"
}
GET /v1/co2

CO2 enrichment calculator. Determine how much CO2 gas is needed to reach a target concentration in your grow room, and get stage-appropriate CO2 recommendations.

ParameterTypeDefaultDescription
room_m3number-Room volume in cubic meters
target_ppmnumber1200Target CO2 concentration (ppm)
current_ppmnumber400Current ambient CO2 (ppm)
stagestring-Growth stage for recommendations
Try it
GET /v1/co2?room_m3=2.5&target_ppm=1200&stage=mid_flower
{
  "room_m3": 2.5,
  "current_ppm": 400,
  "target_ppm": 1200,
  "co2_needed_liters": 2.0,
  "co2_needed_grams": 3.93,
  "stage": "mid_flower",
  "stage_recommendation": {
    "optimal_ppm": { "min": 800, "max": 1200 },
    "benefit": "10-30% yield increase with adequate light (>600 PPFD)"
  },
  "safety": {
    "human_safe": true,
    "osha_limit": 5000,
    "note": "Target level is safe for humans. Ensure ventilation during lights-off."
  },
  "tips": [
    "CO2 only benefits plants during lights-on period",
    "Seal room and disable exhaust during CO2 injection",
    "Higher CO2 allows higher temperatures (up to 30C)"
  ]
}
GET /v1/irrigation

Watering volume and frequency calculator. Computes optimal water volume per pot based on pot size, medium, growth stage, and current environment conditions. Supports multiple plants.

ParameterTypeDefaultDescription
pot_sizerequirednumber-Pot volume in liters
mediumstring-Growing medium: soil, coco, hydro, dwc
stagestring-Growth stage
vpdnumber-Current VPD (affects transpiration rate)
tempnumber-Current temperature
plantsnumber-Number of plants (multiplies total)
Try it
GET /v1/irrigation?pot_size=11&medium=coco&stage=mid_flower&vpd=1.3&plants=4
{
  "pot_size_liters": 11,
  "medium": "coco",
  "stage": "mid_flower",
  "plants": 4,
  "per_plant": {
    "water_ml": 2750,
    "frequency": "2-4 times daily",
    "runoff_target_pct": 15
  },
  "total": {
    "water_ml": 11000,
    "water_liters": 11.0,
    "daily_total_liters": 33.0
  },
  "adjustments": {
    "vpd_factor": "VPD 1.3 is optimal, no adjustment needed",
    "temp_factor": null
  },
  "tips": [
    "Water until 10-20% runoff each time",
    "Never let coco dry out completely",
    "Check runoff EC to monitor salt buildup"
  ]
}

🔨 Equipment & Environment

GET /v1/room

Room equipment sizing calculator. Given your tent/room dimensions and light wattage, get recommended ventilation (CFM), humidifier/dehumidifier capacity, and fan sizing. Accounts for heat load from lights.

ParameterTypeDefaultDescription
lengthrequirednumber-Room length in meters
widthrequirednumber-Room width in meters
heightnumber2Room height in meters
lights_wattsnumber-Total light wattage
target_tempnumber25Target temperature
ambient_tempnumber22Ambient/intake temperature
plantsnumber4Number of plants
target_humiditynumber55Target humidity (%)
Try it
GET /v1/room?length=1.2&width=1.2&lights_watts=600&plants=4
{
  "room": {
    "length_m": 1.2,
    "width_m": 1.2,
    "height_m": 2,
    "area_m2": 1.44,
    "volume_m3": 2.88
  },
  "ventilation": {
    "cfm_min": 102,
    "cfm_recommended": 152,
    "exchanges_per_hour": 3,
    "fan_size_inches": 4
  },
  "climate": {
    "heat_output_btu": 2047,
    "cooling_needed": true,
    "dehumidifier_pints_per_day": 8
  },
  "lighting": {
    "watts_per_m2": 416.7,
    "estimated_ppfd": 1042,
    "assessment": "Excellent - suitable for flower"
  },
  "plants": {
    "count": 4,
    "area_per_plant_m2": 0.36,
    "density_assessment": "Good spacing"
  }
}
GET /v1/dry

Drying and curing calculator. Estimate dry weight yield, optimal drying duration, and get step-by-step curing instructions based on wet harvest weight, environment, and trim method.

ParameterTypeDefaultDescription
wet_weightrequirednumber-Wet harvest weight in grams
tempnumber-Drying room temperature
humiditynumber-Drying room humidity (%)
methodstring-Drying method: hang, rack, or wet_trim
Try it
GET /v1/dry?wet_weight=500&temp=20&humidity=60
{
  "wet_weight_g": 500,
  "estimated_dry_weight_g": { "min": 100, "max": 125 },
  "dry_ratio": "4:1 to 5:1",
  "drying": {
    "duration_days": { "min": 7, "max": 14 },
    "optimal_temp": { "min": 18, "max": 21 },
    "optimal_humidity": { "min": 55, "max": 62 },
    "environment_status": "good",
    "stem_snap_test": "Ready when small stems snap, not bend"
  },
  "curing": {
    "duration_weeks": { "min": 2, "max": 8 },
    "jar_humidity_target": "58-62%",
    "burping_schedule": [
      "Week 1: Open jars 2-3 times daily for 15 min",
      "Week 2: Open jars once daily for 10 min",
      "Week 3-4: Open jars every 2-3 days",
      "Week 5+: Open once weekly"
    ]
  }
}

🔧 Utilities

GET /v1/convert

Multi-purpose unit converter for grow-related measurements. Converts between Celsius/Fahrenheit, EC/PPM (both 500 and 700 scale), PPFD/Lux, and VPD units. Provide any input and get all conversions.

ParameterTypeDefaultDescription
tempnumber-Temperature value to convert
fromstring-Source unit for temp: c or f
ecnumber-EC value (mS/cm) to convert to PPM
ppmnumber-PPM value to convert to EC
ppm_scalestring-PPM scale: 500 or 700
ppfdnumber-PPFD to convert to Lux
luxnumber-Lux to convert to PPFD
vpdnumber-VPD value for unit info
Try it
GET /v1/convert?ec=1.5
{
  "conversions": {
    "ec": {
      "ec_ms_cm": 1.5,
      "ppm_500": 750,
      "ppm_700": 1050,
      "us_cm": 1500,
      "cf": 15
    }
  },
  "notes": {
    "ppm_500": "Hanna, Milwaukee scale (EC x 500)",
    "ppm_700": "Eutech, Truncheon scale (EC x 700)"
  }
}
GET /health

API health check endpoint. Returns current API status, version, uptime, and endpoint count. Use this to verify the API is operational before making other calls.

ParameterTypeDefaultDescription
No parameters required
Try it
GET /health
{
  "status": "healthy",
  "version": "2.0.0",
  "endpoints": 18,
  "uptime": "15d 4h 22m"
}