Fieldprint API – /v5/Calculator
Access to the Fieldprint Platform and API requires Field to Market membership and an active Data Management Licensing Agreement. Learn more about membership and our data partner program to get started. Access to the Fieldprint API requires an authorized API key issued by Field to Market.
The Calculator endpoint is the primary endpoint of the Fieldprint Platform API. It accepts a field boundary, soil characteristics, and one or more years of crop management data (crop intervals with activities), runs the full suite of Fieldprint sustainability models, and returns results for up to eight environmental metrics: Land Use, Soil Conservation, Soil Carbon, Energy Use, Greenhouse Gas Emissions, Irrigation Water Use, Water Quality, and Biodiversity. Because farming operations vary widely — by crop, region, management practices, and year — the request body is highly flexible. A typical integration submits a multi-year crop rotation history (commonly going back to 2008) with detailed management activities for each year, and receives metric results for the most recent crop year.
Access to the Fieldprint Platform and API requires Field to Market membership and an active Data Management Licensing Agreement. Learn more about membership and our data partner program to get started. Access to the Fieldprint API requires an authorized API key issued by Field to Market.
Contents
Endpoint Details
| Endpoint | POST https://api.fieldtomarket.org/v5/Calculator |
|---|---|
| Authentication | API Key (provided by Field to Market) |
| Content-Type | application/json |
| Response Format | JSON |
| Typical Response Time | 10–30 seconds (depends on number of crop intervals and model complexity) |
Request Body
The request body is a JSON object with three top-level objects: options, field, and crop_intervals.
{
"options": { ... },
"field": { ... },
"crop_intervals": [ ... ]
}
Options Object
The options object controls calculation behavior, report generation, and benchmark configuration. All fields are optional.
| Field | Type | Required | Description |
|---|---|---|---|
validate_only |
boolean | No | Top-level flag. When true, the API runs input validation only — no metrics are computed, no models are run, and no report is generated. Returns {"result": "OK"} if the payload passes, or specific error details identifying the first validation failure encountered (e.g., field path, error type, and message). Useful for quickly checking payload structure and values before submitting a full calculation. Note: This is a root-level parameter, not nested under options. |
options.report.generate |
boolean | No | Set to true to generate a detailed PDF/HTML report alongside the JSON response. |
options.report.generated_for |
string | No | Email or identifier of the person the report is generated for. Appears in report metadata. |
options.report.grower |
string | No | Grower or farm name for report labeling. |
options.skip_models |
boolean | No | If true, skips running the environmental models (WEPP, WEPS, and SWAT+) but still computes all other metrics. Indicators that depend on these models — Soil Conservation and Soil Carbon — will return zero values, while Energy Use, GHG Emissions, Land Use, Irrigation Water Use, Water Quality, and Biodiversity will return real results. The response metadata will show "Skipped" for the bypassed model versions. Useful for testing payloads and debugging without the overhead of full model runs. |
options.qdmp_request_id |
string | No | Your internal tracking ID for this calculation request. Returned in response metadata. |
options.project_name |
string | No | Fieldprint Project name to associate with the calculation. |
options.benchmark_crop_id |
integer | No | Crop ID to use for benchmark comparisons. Defaults to the crop in the most recent crop interval. See /v5/ReferenceData/Crops for valid IDs. |
options.benchmark_is_irrigated |
boolean | No | Whether to use irrigated benchmarks. Defaults to the irrigation status of the most recent crop interval. |
options.assessment_report |
integer | No | IPCC Assessment Report version for GHG calculations. Choices: 1 (AR4), 2 (AR5 with climate-carbon feedback), 3 (AR5 without feedback), 4 (AR6). Default: AR6. |
Field Object
The field object defines the physical characteristics of the field being analyzed.
| Field | Type | Required | Description |
|---|---|---|---|
field.geometry |
GeoJSON Polygon | Yes | Field boundary as a GeoJSON Polygon with coordinates in decimal degrees (longitude, latitude). Must be within the US soils database coverage area. |
field.state |
string | No | US state abbreviation (e.g., "IL"). Derived from geometry if not provided. |
field.location |
string | No | Human-readable location (e.g., "Marion County, IL"). |
field.field_name |
string | No | Name of the field. Appears in report metadata. |
field.plantable_acres |
object | No | Plantable area: { "value": 35.48, "unit": "acre" }. Derived from geometry if not provided. |
field.soil_inputs
Soil characteristics for the field. If not provided, the API derives these from the field geometry using the USDA SSURGO soils database.
| Field | Type | Description |
|---|---|---|
soil_inputs.slope |
object | Field slope: { "value": 1, "unit": "%" } |
soil_inputs.slope_length |
object | Slope length: { "value": 200, "unit": "foot" } |
soil_inputs.texture_id |
string | Soil texture ID. 21 options: 1 Clay, 2 Clay loam, 3 Loam, 4 Loamy sand, 5 Sand, 6 Sandy clay, 7 Sandy clay loam, 8 Sandy loam, 9 Silt, 10 Silt loam, 11 Silty clay, 12 Silty clay loam, 13–21 (additional fine/coarse variants). |
soil_inputs.clay |
object | Clay content: { "value": 14.9, "unit": "%" } |
field.field_detail_inputs
Additional field-level details that influence specific metric calculations.
| Field | Type | Description |
|---|---|---|
landuse_change.has_landuse_change |
boolean | Whether the field has undergone land use change (e.g., converted from grassland). Affects the Soil Carbon metric. |
soils.has_wind_barriers |
boolean | Whether wind barriers (shelterbelts, etc.) are present. Affects the Soil Conservation metric. |
tile_drainage.tile_density_id |
string | Tile drainage density. Affects Water Quality metric calculations. |
additional_data.rice_water_regime |
object | Rice-specific water management. water_management_id: 1 Continuously Flooded, 2 Single Aeration, 3 Multiple Aeration. water_regime_id: 1 Nonflooded preseason, 2 Flooded preseason > 30 days. |
additional_data.nutrient_management |
object | Contains n_carry_over (lb/acre), p_multi_crop_application_id (0–4 years), and nutrient_rate_practice_ids. |
Crop Intervals Array
The crop_intervals array contains one object per crop year. Each object describes the crop grown, the harvest year, and the management activities performed. The Calculator typically requires a multi-year crop history — commonly from 2008 to the present — to produce accurate Soil Carbon and Soil Conservation results.
| Field | Type | Required | Description |
|---|---|---|---|
harvest_year |
string | Yes | The harvest year for this crop interval (e.g., "2025"). |
crop_id |
string | Yes | Crop identifier from /v5/ReferenceData/Crops. Common values: 10401 (Corn, grain), 11101 (Soybeans). |
activities |
array | Yes | Array of management activity objects, each with a type, date, and inputs. See Activity Types Reference below. |
additional_data |
object | No | Interval-level additional data including habitat, soil test, nutrient management, and pest management details. See Additional Data. |
Activity Types Reference
Each activity in the activities array has a type string, a date (YYYY-MM-DD), and an inputs object with type-specific fields. The API supports 10 activity types:
| Activity Type | Description | Key Input Fields |
|---|---|---|
planting_cash |
Cash crop planting | planting_operation_id, seeding_rate (lb/acre), seed_treatment (bool), inoculant_applied (bool), diesel_use (gal_diesel/acre) |
planting_cover |
Cover crop planting | cover_crop_id, planting_operation_id, termination_date, termination_operation_id, growth_id, is_legume (bool), days_established_id, is_single_species_mix (bool) |
harvest |
Harvest operations | harvest_operation_id, yield (bushel/acre or lb/acre), crop_dried (bool), drying_system_id, moisture_removed (%), transport_distance (miles), transport_fuel_id, drying_location_id |
tillage |
Soil tillage/disturbance | tillage_operation_id, diesel_use (gal_diesel/acre) |
nutrient_commercial |
Commercial fertilizer application | fertilizer_operation_id, fertilizers[] array with: nitrogen, phosphorus, potassium, sulfur (each in lb/acre), product_type_id, inhibitor (bool), slow_release (bool) |
nutrient_manure |
Manure application | Manure type, application rate, application method, and nutrient content fields. |
nutrient_other |
Other nutrient applications | Nutrient product type and application rate fields. |
irrigation |
Irrigation operations | water_sources[] array with: water_source_id, irrigation_volume (acre_inch/acre), application_method_id, has_irrigation_energy (bool) |
crop_protectant_spraying |
Pesticide/herbicide application | Product type, application rate, and timing fields. |
residue_management |
Crop residue management | Residue type, management method, and timing fields. |
tillage_operation_id, cover_crop_id, product_type_id) are sourced from the Reference Data endpoints. See API Reference Index for the full list of reference data endpoints.
Crop Interval Additional Data
Each crop interval can include an additional_data object with interval-level details that affect specific metric calculations:
| Section | Key Fields | Description |
|---|---|---|
habitat |
wildlife_habitat_ids |
Array of wildlife habitat practice IDs. Affects the Biodiversity metric. |
soil_test |
p_soil_test_level_id, p_drawdown_strategy_ids |
Phosphorus soil test results and drawdown strategies. Affects the Water Quality metric. |
nutrient_management |
management_plan, nutrient_setbacks, precision_application, p_multi_crop_application_id |
Nutrient management practices. Affects Water Quality and GHG metrics. |
pest_management |
integrated_pest_management_id |
IPM practice level. Affects the Biodiversity metric. |
rice_water_regime |
water_regime_id |
Water regime for rice crops. Affects the GHG metric. |
Response Body
The response is a JSON object containing metadata and a cropyears array. Results are returned for the most recent crop year (or all years if multiple are configured for output).
Metadata
| Field | Type | Description |
|---|---|---|
metadata.runTimeSec |
integer | Total calculation time in seconds. |
metadata.boundaryAcres |
object | Computed field size from the geometry. |
metadata.state |
string | US state abbreviation derived from geometry. |
metadata.version.api |
string | API version (e.g., "5.0.2"). |
metadata.version.csip |
object | Versions of underlying CSIP model components: soils, wepp, weps, swatPlus, and climate station data. |
metadata.soilInfo |
object | Resolved soil information: mapUnit, name, coKey, slope, slopeLength, texture, textureId, clay, hsGroup, kFactor, omContent. |
metadata.noTillYears |
float | Number of consecutive no-till years detected in the crop history. |
metadata.unknownInputs |
array | Input fields that were provided but not recognized by the API. Useful for debugging. |
metadata.ignoredInputs |
array | Input fields that were recognized but ignored for this calculation (e.g., diesel_use values that are overridden by operation-based defaults). |
metadata.qdmp_request_id |
string | Echo of your tracking ID from the request. |
Metric Results (cropyears)
Each object in the cropyears array represents one crop year’s results. The top-level fields identify the crop and management context:
| Field | Type | Description |
|---|---|---|
crop |
string | Crop name (e.g., "Corn (grain)"). |
year |
integer | Harvest year. |
isIrrigated |
boolean | Whether irrigation was applied this crop year. |
stir |
float | Soil Tillage Intensity Rating (STIR) value computed from tillage operations. |
tillageClass |
string | Tillage classification (e.g., "Conventional Till <15% Residue"). |
Following these identification fields are up to 8 metric result objects:
Metric Details
Each metric follows a common structure: a fieldprintResult (the raw metric value with units), a scaledFieldprintResult (normalized 0–100 scale), and benchmarks comparing the field to state and national averages. Some metrics include additional breakdowns.
1. Land Use
| Field | Unit | Description |
|---|---|---|
fieldprintResult | acre / bushel | Land use efficiency — acres required per unit of production. Lower is better. |
yieldAdjusted | bushel / acre | Adjusted yield used in the calculation. |
totalProduction | bushel | Total production for the field. |
scaledFieldprintResult | 0–100 | Scaled score relative to benchmarks. |
benchmarks | — | State and national benchmark comparisons. |
2. Soil Conservation
| Field | Unit | Description |
|---|---|---|
fieldprintResult | ton / acre / year | Total soil erosion (water + wind). Lower is better. |
fieldprintWater | ton / acre / year | Water erosion component (WEPP model). |
fieldprintWind | ton / acre / year | Wind erosion component (WEPS model). |
soilCarbonIndex | float | Soil Carbon Index value from the conservation model. |
scaledFieldprintResult | 0–100 | Scaled score relative to benchmarks. |
3. Soil Carbon
| Field | Unit | Description |
|---|---|---|
fieldprintResult | lbs_co2e / acre / year | Soil carbon flux. Negative values indicate net sequestration (carbon gain). |
fieldprintResultMetric | kg_co2e / hectare / year | Metric units equivalent. |
fluxHistory | array | Year-by-year soil carbon flux history (lbs CO2e / acre / year) for the full crop history. |
intervalFluxDays | array | Number of flux days and total days in year for each interval contributing to the result. |
benchmarks | — | National benchmark (carbon neutrality = 0 as the 50th percentile). |
4. Energy Use
| Field | Unit | Description |
|---|---|---|
fieldprintResult | btu / bushel | Total energy consumption per unit of production. Lower is better. |
fieldprintResultMetric | MJ / kg | Metric units equivalent. |
upstream | object | Upstream energy: electricityProd (irrigation, crop drying), fuelProd (field ops, transport), inputsTransport, fertilizers, protectants, seed. |
onFarmMechanical | object | On-farm mechanical energy from field operations and irrigation pumping. |
scaledFieldprintResult | 0–100 | Scaled score relative to benchmarks. |
5. Greenhouse Gas Emissions
| Field | Unit | Description |
|---|---|---|
fieldprintResult | lbs_co2e / bushel | Total GHG emissions per unit of production. Lower is better. |
totalGreenhouse | lbs_co2e | Total GHG emissions for the field. |
context | object | Calculation context: assessmentReport (e.g., AR6), timeHorizon (e.g., 100 years), egridRegion, dryingTransportLocation. |
upstream | object | Upstream emissions from fertilizer production, seed, protectants, fuel production, and electricity generation. |
onFarmMechanical | object | Emissions from on-farm mechanical operations. |
onFarmSourcesSinks | object | Soil-based emissions and sinks: N₂O from soil, CO₂ from lime/urea, rice CH₄, residue burning, soil carbon change. |
postHarvest | object | Post-harvest emissions from drying and transport. |
scaledFieldprintResult | 0–100 | Scaled score relative to benchmarks. |
6. Irrigation Water Use
| Field | Unit | Description |
|---|---|---|
fieldprintResult | ac_in / bushel | Irrigation water per unit of production. Lower is better. Returns null if the crop year is not irrigated. |
totalWater | acre_inch / acre | Total irrigation water applied. |
yieldDifference | bushel / acre | Estimated yield difference attributable to irrigation. |
scaledFieldprintResult | 0–100 | Scaled score relative to benchmarks. |
null for non-irrigated crop years.
7. Water Quality
| Field | Unit | Description |
|---|---|---|
fieldprintResult.value | integer | Water Quality index value (STEP model). |
fieldprintResult.index | string | Index identifier (e.g., "STEP"). |
lossPathway | object | Detailed nutrient loss pathway analysis with four components: surfaceN, subsurfaceN, surfaceP, subsurfaceP. Each includes wqsrCategory, fieldSensitivityScore, riskMitigationScore, and individual credit breakdowns. |
scaledFieldprintResult | 0–100 | Scaled score relative to benchmarks. |
8. Biodiversity
| Field | Unit | Description |
|---|---|---|
fieldprintResult.value | float | Habitat Potential Index (HPI) score. |
fieldprintResult.index | string | Index identifier ("HPI"). |
hpiCategory | string | Category classification (e.g., "Moderate"). |
cultivatedLandScore | float | Landscape-level cultivated land score. |
fieldScore | float | Field-level biodiversity score. |
scaledFieldprintResult | 0–100 | Scaled score relative to benchmarks. |
Example Request
The following example submits a corn/soybean rotation in Marion County, Illinois (35.48 acres). Two representative crop intervals are shown — the most recent corn year (2025) and the preceding soybean year (2024). A typical production request would include the full rotation history back to 2008.
POST https://api.fieldtomarket.org/v5/Calculator Content-Type: application/json Authorization: Bearer {your_api_key} { "options": { "report": { "generated_for": "demo06@fieldtomarket.org", "grower": "Demo 06 Farm" } }, "field": { "location": "Marion County, IL", "state": "IL", "field_name": "Demo 06 Field A5", "geometry": { "type": "Polygon", "coordinates": [[ [-89.01864, 38.80656], [-89.01862, 38.80468], /* ... additional vertices ... */ [-89.01864, 38.80656] ]] }, "plantable_acres": { "value": 35.48, "unit": "acre" }, "soil_inputs": { "slope": { "value": 1, "unit": "%" }, "slope_length": { "value": 200, "unit": "foot" }, "texture_id": "10", "clay": { "value": 14.9, "unit": "%" } }, "field_detail_inputs": { "landuse_change": { "has_landuse_change": false }, "tile_drainage": { "tile_density_id": "1" } } }, "crop_intervals": [ // --- 2025 Corn (grain) --- { "harvest_year": "2025", "crop_id": "10401", "activities": [ { "type": "planting_cover", "date": "2024-11-15", "inputs": { "cover_crop_id": "30770", "termination_date": "2025-05-01", "growth_id": "2", "is_legume": false, "planting_operation_id": "22952", "termination_operation_id": "23045", "days_established_id": "3" } }, { "type": "tillage", "date": "2025-04-21", "inputs": { "tillage_operation_id": "22975" } }, { "type": "tillage", "date": "2025-04-29", "inputs": { "tillage_operation_id": "22988" } }, { "type": "planting_cash", "date": "2025-05-06", "inputs": { "seeding_rate": { "value": 30, "unit": "lb / acre" }, "seed_treatment": true, "inoculant_applied": false, "planting_operation_id": "22917" } }, { "type": "nutrient_commercial", "date": "2025-05-09", "inputs": { "fertilizer_operation_id": "22693", "fertilizers": [{ "nitrogen": { "value": 140, "unit": "lb / acre" }, "phosphorus": { "value": 133, "unit": "lb / acre" }, "potassium": { "value": 84, "unit": "lb / acre" }, "sulfur": { "value": 16, "unit": "lb / acre" }, "product_type_id": 21, "inhibitor": false, "slow_release": false }] } }, { "type": "harvest", "date": "2025-10-09", "inputs": { "harvest_operation_id": "22819", "yield": { "value": 146, "unit": "bushel / acre" }, "crop_dried": true, "drying_system_id": "2", "moisture_removed": { "value": 2, "unit": "%" }, "drying_location_id": "1", "transport_distance": { "value": 10, "unit": "miles" }, "transport_fuel_id": "1" } } ], "additional_data": { "habitat": { "wildlife_habitat_ids": [] }, "soil_test": { "p_soil_test_level_id": "1", "p_drawdown_strategy_ids": ["216"] }, "nutrient_management": { "management_plan": false, "nutrient_setbacks": false, "precision_application": false, "p_multi_crop_application_id": "1" }, "pest_management": { "integrated_pest_management_id": "6" } } }, // --- 2024 Soybeans --- { "harvest_year": "2024", "crop_id": "11101", "activities": [ { "type": "planting_cover", "date": "2023-11-15", "inputs": { "cover_crop_id": "30770", "termination_date": "2024-05-20", "planting_operation_id": "22952", "termination_operation_id": "23045" } }, { "type": "nutrient_commercial", "date": "2024-05-09", "inputs": { "fertilizer_operation_id": "22693", "fertilizers": [{ "nitrogen": { "value": 21, "unit": "lb / acre" }, "phosphorus": { "value": 119, "unit": "lb / acre" }, "potassium": { "value": 94, "unit": "lb / acre" }, "sulfur": { "value": 15, "unit": "lb / acre" }, "product_type_id": 21 }] } }, { "type": "tillage", "date": "2024-05-10", "inputs": { "tillage_operation_id": "22975" } }, { "type": "tillage", "date": "2024-05-18", "inputs": { "tillage_operation_id": "22988" } }, { "type": "planting_cash", "date": "2024-05-25", "inputs": { "seeding_rate": { "value": 167, "unit": "lb / acre" }, "planting_operation_id": "22917" } }, { "type": "irrigation", "date": "2024-10-13", "inputs": { "water_sources": [{ "irrigation_volume": { "value": 8.8, "unit": "acre_inch / acre" }, "application_method_id": "2" }] } }, { "type": "harvest", "date": "2024-10-18", "inputs": { "harvest_operation_id": "22819", "yield": { "value": 44, "unit": "bushel / acre" } } } ], "additional_data": { "soil_test": { "p_soil_test_level_id": "5" } } } // ... additional crop intervals back to 2008 (corn/soybean rotation continues) ] }
/v5/FieldData/PrefillFieldHistory endpoint to generate a complete history from USDA Cropland Data Layer data, then overlay known management details.
Example Response
The response below shows results for the 2025 corn year. The metric values, benchmarks, and sub-component breakdowns are condensed for readability — the actual response includes deeply nested energy and GHG component breakdowns.
{
"metadata": {
"runTimeSec": 15,
"boundaryAcres": { "value": 35.48, "unit": "acre" },
"state": "IL",
"version": {
"api": "5.0.2",
"csip": {
"soils": "2.0",
"wepp": "2.0",
"weps": "5.0",
"swatPlus": "61.0.2.60-odav@0.18.10(default)-2.8.60(default)"
}
},
"soilInfo": {
"mapUnit": "Hoyleton silt loam, 0 to 2 percent slopes",
"texture": "Silt loam",
"textureId": "10",
"slope": { "value": 1.0, "unit": "%" },
"clay": { "value": 14.9, "unit": "%" }
},
"noTillYears": 0,
"generated_for": "demo06@fieldtomarket.org",
"grower": "Demo 06 Farm",
"field": "Demo 06 Field A5",
"location": "Marion County, IL",
"unknownInputs": [ /* fields provided but not recognized */ ],
"ignoredInputs": [ /* fields recognized but not used in this calculation */ ]
},
"cropyears": [
{
"crop": "Corn (grain)",
"year": 2025,
"isIrrigated": false,
"stir": 101.04,
"tillageClass": "Conventional Till <15% Residue",
"landUse": {
"fieldprintResult": { "value": 0.00684932, "unit": "acre / bushel" },
"yieldAdjusted": { "value": 146.0, "unit": "bushel / acre" },
"totalProduction": { "value": 5180.08, "unit": "bushel" },
"scaledFieldprintResult": 81.22,
"benchmarks": {
"scaleBasis": "State",
"state": { "scaledFieldprintResult": 70.33 },
"national": { "scaledFieldprintResult": 87.58 }
}
},
"soilConservation": {
"fieldprintResult": { "value": 2.57362833, "unit": "ton / acre / year" },
"fieldprintWater": { "value": 2.50270009, "unit": "ton / acre / year" },
"fieldprintWind": { "value": 0.07092824, "unit": "ton / acre / year" },
"soilCarbonIndex": 0.074,
"scaledFieldprintResult": 69.80,
"benchmarks": {
"state": { "scaledFieldprintResult": 62.0 },
"national": { "scaledFieldprintResult": 86.12 }
}
},
"soilCarbon": {
"fieldprintResult": { "value": -2372.38, "unit": "lbs_co2e / acre / year" },
"fieldprintResultMetric": { "value": -2659.09, "unit": "kg_co2e / hectare / year" },
"scaledFieldprintResult": 0,
"fluxHistory": [
{ "year": 2008, "flux": { "value": 3442.64, "unit": "lbs_co2e / acre / year" } },
/* ... one entry per year from 2008 through 2025 ... */
{ "year": 2025, "flux": { "value": -3196.74, "unit": "lbs_co2e / acre / year" } }
],
"benchmarks": {
"scaleBasis": "Neutral",
"national": { "fieldprintResult": { "value": 0.0 }, "scaledFieldprintResult": 50.0 }
}
},
"energyUse": {
"fieldprintResult": { "value": 69330.44, "unit": "btu / bushel" },
"fieldprintResultMetric": { "value": 2.88, "unit": "MJ / kg" },
"scaledFieldprintResult": 89.74,
"upstream": { /* electricityProd, fuelProd, inputsTransport, fertilizers, protectants, seed */ },
"onFarmMechanical": { /* mobile operations: fieldOps, irrigationOps */ },
"benchmarks": { /* state and national comparisons */ }
},
"greenhouseGas": {
"fieldprintResult": { "value": 1.20068466, "unit": "lbs_co2e / bushel" },
"totalGreenhouse": { "value": 6219.64, "unit": "lbs_co2e" },
"context": {
"assessmentReport": "AR6",
"timeHorizon": "100 years",
"egridRegion": "SRMW",
"dryingTransportLocation": "On-Farm"
},
"scaledFieldprintResult": 0.66,
"upstream": { /* fertilizer, seed, protectant, fuel, electricity emissions */ },
"onFarmMechanical": { /* field operations, irrigation emissions */ },
"onFarmSourcesSinks": { /* N2O soil, CO2 lime/urea, CH4 rice, residue burning, soil carbon */ },
"postHarvest": { /* drying and transport emissions */ },
"benchmarks": {
"state": { "fieldprintResult": { "value": 12.16 }, "scaledFieldprintResult": 72.0 },
"national": { "fieldprintResult": { "value": 11.41 }, "scaledFieldprintResult": 66.09 }
}
},
"irrigationWaterUse": null,
// null because the 2025 corn year is not irrigated
"waterQuality": {
"fieldprintResult": { "value": 0, "index": "STEP" },
"scaledFieldprintResult": 100.0,
"lossPathway": {
"surfaceN": { "wqsrCategory": "MODERATELY HIGH", "fieldSensitivityScore": 65, "riskMitigationScore": 8.25 },
"subsurfaceN": { "wqsrCategory": "MODERATELY HIGH", "fieldSensitivityScore": 50, "riskMitigationScore": 15.0 },
"surfaceP": { "wqsrCategory": "MODERATELY HIGH", "fieldSensitivityScore": 60 },
"subsurfaceP": { "wqsrCategory": "MODERATELY LOW", "fieldSensitivityScore": 25 }
},
"benchmarks": { /* state and national comparisons */ }
},
"biodiversity": {
"fieldprintResult": { "value": 0.66878307, "index": "HPI" },
"scaledFieldprintResult": 33.12,
"hpiCategory": "Moderate",
"cultivatedLandScore": 354.8,
"fieldScore": 237.28
}
}
]
}
Validation & Error Handling
HTTP Status Codes
| Status | Meaning |
|---|---|
200 | Calculation completed successfully. Check response for metric results. |
400 | Validation error. The response body contains an array of field-level error details. |
403 | Authentication failed. Verify your API key. |
500 | Server error. The API may return model-specific error details (see below). |
Validation Error Codes
A 400 response returns an array of error objects. Each error identifies the field path and the type of validation failure:
| Error Code | Description | Example |
|---|---|---|
REQUIRED |
A required field is missing. | crop_intervals.0.crop_id — Crop ID is required for every interval. |
CHOICE |
Value is not one of the allowed options. | options.assessment_report — Must be 1, 2, 3, or 4. |
TYPE |
Value has the wrong data type. | field.plantable_acres.value — Expected a number. |
UNITS |
Unit value is not recognized. | crop_intervals.0.activities.0.inputs.yield.unit — Must be a valid yield unit. |
GEOMETRY |
Field geometry is invalid. | Geometry must be a valid GeoJSON Polygon or MultiPolygon within the US soils database. |
STRUCTURE |
Request structure is malformed. | Expected an array for crop_intervals but received an object. |
RANGE |
Numeric value is outside the acceptable range. | crop_intervals.0.activities.0.inputs.yield.value — Yield value exceeds the plausible maximum for this crop. |
CONFIG |
Conflicting or invalid configuration of related inputs. | Irrigation activity provided but is_irrigated is set to false on the crop interval. |
DEPRECATED |
Input or value has been deprecated in the current API version. | A field or choice ID that was valid in a prior version but is no longer accepted. |
AREA |
Field geometry area does not meet requirements. | Geometry area exceeds the maximum allowed field size or is too small to calculate. |
500 Server Errors
If an environmental model fails during calculation, the API may return a 500 error with details about which model component failed. Common causes include:
- Field geometry in a region not covered by the WEPP or WEPS climate station network
- CSIP model timeout (complex soil or crop history configurations)
- Invalid soil parameter combinations that pass input validation but fail during model execution
500 error, check your field geometry and soil inputs first. Use "validate_only": true to confirm inputs pass validation, then retry with "options": {"skip_models": true} to isolate whether the error originates from the environmental models.
Usage Notes
/v5/FieldData/PrefillFieldHistory endpoint to generate a baseline history, then overlay known management details.
irrigationWaterUse metric returns null for non-irrigated crop years. Include an irrigation activity with water_sources data to receive this metric. The 2024 soybean year in the example above includes irrigation data.
scaledFieldprintResult value (0–100) positions the field’s performance relative to the benchmark distribution. A score of 50 represents the benchmark median. Higher scores generally indicate better environmental performance, except for metrics like Soil Carbon where negative values (carbon sequestration) are favorable.
metadata includes unknownInputs and ignoredInputs arrays. Use these to identify fields in your request that the API did not recognize or did not use for this particular calculation. This is helpful for debugging data pipeline issues and ensuring your submitted data is being consumed as expected.
options.assessment_report field if your reporting requirements specify a particular IPCC version.
"validate_only": true (root level) to quickly confirm all inputs pass validation — the API returns {"result": "OK"} on success, or details about the first validation failure encountered. Iterate until validation passes. Then use "options": {"skip_models": true} to get a full response with most metrics computed but without the overhead of WEPP, WEPS, and SWAT+ model runs. This lets you verify your response-parsing logic before running a complete calculation.
Related Endpoints
| Endpoint | Description |
|---|---|
POST /v5/FieldData/PrefillFieldHistory |
Generate a complete multi-year crop history (2008–present) from USDA CDL data. Use this to build the baseline crop_intervals array for the Calculator. |
POST /v5/FieldData/PrefillCropIntervals |
Generate complete management activities for specific crop years. Use when you have partial data for individual years. |
POST /v5/ScaledBenchmarks |
Retrieve benchmark distributions without running a full calculation. Useful for building comparison UI. |
POST /v5/SaiCalculator |
Calculate SAI Platform FSA Equivalency from a 22-question survey. |
GET /v5/ReferenceData/Crops |
List all valid crop IDs and names for the crop_id field. |
GET /v5/EndPoints |
Full list of all 52 API endpoints including all Reference Data endpoints for operation IDs. |
Reach out to support@fieldtomarket.org with additional questions on implementation.