API Reference
Soil Data
Lab tests, sensor readings, and ISDA soil data for fields and farms.
post
/soil-dataManually create a soil data record (lab test or sensor reading)
Requires an
Authorization: Bearer header.Request body
farm_idstringrequiredfield_idstringrequiredcaptured_atstring<date-time>requireddata_sourceenum<string>requiredaoi_typeenum<string>optionalSoil data area of interest type enum
pointpolygontest_typeenum<string>optionalrapidstandardcomprehensivetest_report_urlstringoptionalsoil_texturestringoptionalsoil_moisture_pctnumberoptionalsoil_temperaturenumberoptionalsoil_ecnumberoptionalsoil_phnumberoptionalsoil_nitrogen_ppmnumberoptionalsoil_phosphorus_ppmnumberoptionalsoil_potassium_ppmnumberoptionalsoil_calcium_ppmnumberoptionalsoil_magnesium_ppmnumberoptionalsoil_sulfur_ppmnumberoptionalsoil_organic_matter_pctnumberoptionalsoil_micronutrientsobjectoptionalsoil_test_recommendationsobjectoptionalvariablesobjectoptionalResponse 201
soil_data_idstringrequiredfarm_idstringrequiredfield_idstringrequiredcaptured_atstring<date-time>requiredaoi_typeenum<string>requireddata_sourceenum<string>requiredtest_typeenum<string>optionalrapidstandardcomprehensivetest_report_urlstringoptionalsoil_texturestringoptionalsoil_moisture_pctnumberoptionalsoil_temperaturenumberoptionalsoil_ecnumberoptionalsoil_phnumberoptionalsoil_nitrogen_ppmnumberoptionalsoil_phosphorus_ppmnumberoptionalsoil_potassium_ppmnumberoptionalsoil_calcium_ppmnumberoptionalsoil_magnesium_ppmnumberoptionalsoil_sulfur_ppmnumberoptionalsoil_organic_matter_pctnumberoptionalsoil_micronutrientsobjectoptionalsoil_test_recommendationsobjectoptionalvariablesobjectoptionalis_activebooleanrequiredcreated_atstring<date-time>requiredupdated_atstring<date-time>requiredPOST /soil-data
curl -X POST "https://api.cropsense.africa/soil-data" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"farm_id": "3fa2c9e1-6b3a-4d2e-9c11-4a8e5f9d2b7a",
"field_id": "8b6e1a2f-2d4c-4e9a-9b0f-1c7d3e5a6f42",
"captured_at": "2026-06-15T09:30:00Z",
"data_source": "LAB",
"aoi_type": "point",
"test_type": "rapid",
"test_report_url": "test_report_url",
"soil_texture": "soil_texture",
"soil_moisture_pct": 1.5,
"soil_temperature": 1.5,
"soil_ec": 1.5,
"soil_ph": 1.5,
"soil_nitrogen_ppm": 1.5,
"soil_phosphorus_ppm": 1.5,
"soil_potassium_ppm": 1.5,
"soil_calcium_ppm": 1.5,
"soil_magnesium_ppm": 1.5,
"soil_sulfur_ppm": 1.5,
"soil_organic_matter_pct": 1.5,
"soil_micronutrients": {},
"soil_test_recommendations": {},
"variables": {}
}'Example response · 201
{
"soil_data_id": "7c1e4f2a-3b6d-4e8c-9a1f-5d2b8e7c4f60",
"farm_id": "3fa2c9e1-6b3a-4d2e-9c11-4a8e5f9d2b7a",
"field_id": "8b6e1a2f-2d4c-4e9a-9b0f-1c7d3e5a6f42",
"captured_at": "2026-06-15T09:30:00Z",
"aoi_type": "point",
"data_source": "LAB",
"test_type": "rapid",
"test_report_url": "test_report_url",
"soil_texture": "soil_texture",
"soil_moisture_pct": 1.5,
"soil_temperature": 1.5,
"soil_ec": 1.5,
"soil_ph": 1.5,
"soil_nitrogen_ppm": 1.5,
"soil_phosphorus_ppm": 1.5,
"soil_potassium_ppm": 1.5,
"soil_calcium_ppm": 1.5,
"soil_magnesium_ppm": 1.5,
"soil_sulfur_ppm": 1.5,
"soil_organic_matter_pct": 1.5,
"soil_micronutrients": {},
"soil_test_recommendations": {},
"variables": {},
"is_active": true,
"created_at": "2026-06-15T09:30:00Z",
"updated_at": "2026-06-15T09:30:00Z"
}get
/soil-data/{soil_data_id}Get a soil data record by id
Requires an
Authorization: Bearer header.Parameters
soil_data_idstringpathrequiredResponse 200
soil_data_idstringrequiredfarm_idstringrequiredfield_idstringrequiredcaptured_atstring<date-time>requiredaoi_typeenum<string>requireddata_sourceenum<string>requiredtest_typeenum<string>optionalrapidstandardcomprehensivetest_report_urlstringoptionalsoil_texturestringoptionalsoil_moisture_pctnumberoptionalsoil_temperaturenumberoptionalsoil_ecnumberoptionalsoil_phnumberoptionalsoil_nitrogen_ppmnumberoptionalsoil_phosphorus_ppmnumberoptionalsoil_potassium_ppmnumberoptionalsoil_calcium_ppmnumberoptionalsoil_magnesium_ppmnumberoptionalsoil_sulfur_ppmnumberoptionalsoil_organic_matter_pctnumberoptionalsoil_micronutrientsobjectoptionalsoil_test_recommendationsobjectoptionalvariablesobjectoptionalis_activebooleanrequiredcreated_atstring<date-time>requiredupdated_atstring<date-time>requiredGET /soil-data/{soil_data_id}
curl -X GET "https://api.cropsense.africa/soil-data/7c1e4f2a-3b6d-4e8c-9a1f-5d2b8e7c4f60" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN"Example response · 200
{
"soil_data_id": "7c1e4f2a-3b6d-4e8c-9a1f-5d2b8e7c4f60",
"farm_id": "3fa2c9e1-6b3a-4d2e-9c11-4a8e5f9d2b7a",
"field_id": "8b6e1a2f-2d4c-4e9a-9b0f-1c7d3e5a6f42",
"captured_at": "2026-06-15T09:30:00Z",
"aoi_type": "point",
"data_source": "LAB",
"test_type": "rapid",
"test_report_url": "test_report_url",
"soil_texture": "soil_texture",
"soil_moisture_pct": 1.5,
"soil_temperature": 1.5,
"soil_ec": 1.5,
"soil_ph": 1.5,
"soil_nitrogen_ppm": 1.5,
"soil_phosphorus_ppm": 1.5,
"soil_potassium_ppm": 1.5,
"soil_calcium_ppm": 1.5,
"soil_magnesium_ppm": 1.5,
"soil_sulfur_ppm": 1.5,
"soil_organic_matter_pct": 1.5,
"soil_micronutrients": {},
"soil_test_recommendations": {},
"variables": {},
"is_active": true,
"created_at": "2026-06-15T09:30:00Z",
"updated_at": "2026-06-15T09:30:00Z"
}put
/soil-data/{soil_data_id}Update a soil data record
Requires an
Authorization: Bearer header.Parameters
soil_data_idstringpathrequiredRequest body
farm_idstringoptionalfield_idstringoptionalcaptured_atstring<date-time>optionalaoi_typeenum<string>optionalSoil data area of interest type enum
pointpolygondata_sourceenum<string>optionalSoil data source enum
LABSENSORISDAtest_typeenum<string>optionalrapidstandardcomprehensivetest_report_urlstringoptionalsoil_texturestringoptionalsoil_moisture_pctnumberoptionalsoil_temperaturenumberoptionalsoil_ecnumberoptionalsoil_phnumberoptionalsoil_nitrogen_ppmnumberoptionalsoil_phosphorus_ppmnumberoptionalsoil_potassium_ppmnumberoptionalsoil_calcium_ppmnumberoptionalsoil_magnesium_ppmnumberoptionalsoil_sulfur_ppmnumberoptionalsoil_organic_matter_pctnumberoptionalsoil_micronutrientsobjectoptionalsoil_test_recommendationsobjectoptionalvariablesobjectoptionalResponse 200
soil_data_idstringrequiredfarm_idstringrequiredfield_idstringrequiredcaptured_atstring<date-time>requiredaoi_typeenum<string>requireddata_sourceenum<string>requiredtest_typeenum<string>optionalrapidstandardcomprehensivetest_report_urlstringoptionalsoil_texturestringoptionalsoil_moisture_pctnumberoptionalsoil_temperaturenumberoptionalsoil_ecnumberoptionalsoil_phnumberoptionalsoil_nitrogen_ppmnumberoptionalsoil_phosphorus_ppmnumberoptionalsoil_potassium_ppmnumberoptionalsoil_calcium_ppmnumberoptionalsoil_magnesium_ppmnumberoptionalsoil_sulfur_ppmnumberoptionalsoil_organic_matter_pctnumberoptionalsoil_micronutrientsobjectoptionalsoil_test_recommendationsobjectoptionalvariablesobjectoptionalis_activebooleanrequiredcreated_atstring<date-time>requiredupdated_atstring<date-time>requiredPUT /soil-data/{soil_data_id}
curl -X PUT "https://api.cropsense.africa/soil-data/7c1e4f2a-3b6d-4e8c-9a1f-5d2b8e7c4f60" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"farm_id": "3fa2c9e1-6b3a-4d2e-9c11-4a8e5f9d2b7a",
"field_id": "8b6e1a2f-2d4c-4e9a-9b0f-1c7d3e5a6f42",
"captured_at": "2026-06-15T09:30:00Z",
"aoi_type": "point",
"data_source": "LAB",
"test_type": "rapid",
"test_report_url": "test_report_url",
"soil_texture": "soil_texture",
"soil_moisture_pct": 1.5,
"soil_temperature": 1.5,
"soil_ec": 1.5,
"soil_ph": 1.5,
"soil_nitrogen_ppm": 1.5,
"soil_phosphorus_ppm": 1.5,
"soil_potassium_ppm": 1.5,
"soil_calcium_ppm": 1.5,
"soil_magnesium_ppm": 1.5,
"soil_sulfur_ppm": 1.5,
"soil_organic_matter_pct": 1.5,
"soil_micronutrients": {},
"soil_test_recommendations": {},
"variables": {}
}'Example response · 200
{
"soil_data_id": "7c1e4f2a-3b6d-4e8c-9a1f-5d2b8e7c4f60",
"farm_id": "3fa2c9e1-6b3a-4d2e-9c11-4a8e5f9d2b7a",
"field_id": "8b6e1a2f-2d4c-4e9a-9b0f-1c7d3e5a6f42",
"captured_at": "2026-06-15T09:30:00Z",
"aoi_type": "point",
"data_source": "LAB",
"test_type": "rapid",
"test_report_url": "test_report_url",
"soil_texture": "soil_texture",
"soil_moisture_pct": 1.5,
"soil_temperature": 1.5,
"soil_ec": 1.5,
"soil_ph": 1.5,
"soil_nitrogen_ppm": 1.5,
"soil_phosphorus_ppm": 1.5,
"soil_potassium_ppm": 1.5,
"soil_calcium_ppm": 1.5,
"soil_magnesium_ppm": 1.5,
"soil_sulfur_ppm": 1.5,
"soil_organic_matter_pct": 1.5,
"soil_micronutrients": {},
"soil_test_recommendations": {},
"variables": {},
"is_active": true,
"created_at": "2026-06-15T09:30:00Z",
"updated_at": "2026-06-15T09:30:00Z"
}delete
/soil-data/{soil_data_id}Delete (deactivate) a soil data record
Requires an
Authorization: Bearer header.Parameters
soil_data_idstringpathrequiredDELETE /soil-data/{soil_data_id}
curl -X DELETE "https://api.cropsense.africa/soil-data/7c1e4f2a-3b6d-4e8c-9a1f-5d2b8e7c4f60" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN"Example response · 204
{}get
/soil-data/farm/{farm_id}Get all soil data records for a farm
Requires an
Authorization: Bearer header.Parameters
farm_idstringpathrequiredResponse 200
soil_dataSoilData[]requiredtotalintegerrequiredGET /soil-data/farm/{farm_id}
curl -X GET "https://api.cropsense.africa/soil-data/farm/3fa2c9e1-6b3a-4d2e-9c11-4a8e5f9d2b7a" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN"Example response · 200
{
"soil_data": [
{
"soil_data_id": "7c1e4f2a-3b6d-4e8c-9a1f-5d2b8e7c4f60",
"farm_id": "3fa2c9e1-6b3a-4d2e-9c11-4a8e5f9d2b7a",
"field_id": "8b6e1a2f-2d4c-4e9a-9b0f-1c7d3e5a6f42",
"captured_at": "2026-06-15T09:30:00Z",
"aoi_type": "point",
"data_source": "LAB",
"test_type": "rapid",
"test_report_url": "test_report_url",
"soil_texture": "soil_texture",
"soil_moisture_pct": 1.5,
"soil_temperature": 1.5,
"soil_ec": 1.5,
"soil_ph": 1.5,
"soil_nitrogen_ppm": 1.5,
"soil_phosphorus_ppm": 1.5,
"soil_potassium_ppm": 1.5,
"soil_calcium_ppm": 1.5,
"soil_magnesium_ppm": 1.5,
"soil_sulfur_ppm": 1.5,
"soil_organic_matter_pct": 1.5,
"soil_micronutrients": {},
"soil_test_recommendations": {},
"variables": {},
"is_active": true,
"created_at": "2026-06-15T09:30:00Z",
"updated_at": "2026-06-15T09:30:00Z"
}
],
"total": 1
}get
/soil-data/field/{field_id}Get all soil data records for a field
Requires an
Authorization: Bearer header.Parameters
field_idstringpathrequiredResponse 200
soil_dataSoilData[]requiredtotalintegerrequiredGET /soil-data/field/{field_id}
curl -X GET "https://api.cropsense.africa/soil-data/field/8b6e1a2f-2d4c-4e9a-9b0f-1c7d3e5a6f42" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN"Example response · 200
{
"soil_data": [
{
"soil_data_id": "7c1e4f2a-3b6d-4e8c-9a1f-5d2b8e7c4f60",
"farm_id": "3fa2c9e1-6b3a-4d2e-9c11-4a8e5f9d2b7a",
"field_id": "8b6e1a2f-2d4c-4e9a-9b0f-1c7d3e5a6f42",
"captured_at": "2026-06-15T09:30:00Z",
"aoi_type": "point",
"data_source": "LAB",
"test_type": "rapid",
"test_report_url": "test_report_url",
"soil_texture": "soil_texture",
"soil_moisture_pct": 1.5,
"soil_temperature": 1.5,
"soil_ec": 1.5,
"soil_ph": 1.5,
"soil_nitrogen_ppm": 1.5,
"soil_phosphorus_ppm": 1.5,
"soil_potassium_ppm": 1.5,
"soil_calcium_ppm": 1.5,
"soil_magnesium_ppm": 1.5,
"soil_sulfur_ppm": 1.5,
"soil_organic_matter_pct": 1.5,
"soil_micronutrients": {},
"soil_test_recommendations": {},
"variables": {},
"is_active": true,
"created_at": "2026-06-15T09:30:00Z",
"updated_at": "2026-06-15T09:30:00Z"
}
],
"total": 1
}get
/soil-data/field/{field_id}/latestGet the latest soil data record for a field
Requires an
Authorization: Bearer header.Parameters
field_idstringpathrequiredResponse 200
soil_data_idstringrequiredfarm_idstringrequiredfield_idstringrequiredcaptured_atstring<date-time>requiredaoi_typeenum<string>requireddata_sourceenum<string>requiredtest_typeenum<string>optionalrapidstandardcomprehensivetest_report_urlstringoptionalsoil_texturestringoptionalsoil_moisture_pctnumberoptionalsoil_temperaturenumberoptionalsoil_ecnumberoptionalsoil_phnumberoptionalsoil_nitrogen_ppmnumberoptionalsoil_phosphorus_ppmnumberoptionalsoil_potassium_ppmnumberoptionalsoil_calcium_ppmnumberoptionalsoil_magnesium_ppmnumberoptionalsoil_sulfur_ppmnumberoptionalsoil_organic_matter_pctnumberoptionalsoil_micronutrientsobjectoptionalsoil_test_recommendationsobjectoptionalvariablesobjectoptionalis_activebooleanrequiredcreated_atstring<date-time>requiredupdated_atstring<date-time>requiredGET /soil-data/field/{field_id}/latest
curl -X GET "https://api.cropsense.africa/soil-data/field/8b6e1a2f-2d4c-4e9a-9b0f-1c7d3e5a6f42/latest" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN"Example response · 200
{
"soil_data_id": "7c1e4f2a-3b6d-4e8c-9a1f-5d2b8e7c4f60",
"farm_id": "3fa2c9e1-6b3a-4d2e-9c11-4a8e5f9d2b7a",
"field_id": "8b6e1a2f-2d4c-4e9a-9b0f-1c7d3e5a6f42",
"captured_at": "2026-06-15T09:30:00Z",
"aoi_type": "point",
"data_source": "LAB",
"test_type": "rapid",
"test_report_url": "test_report_url",
"soil_texture": "soil_texture",
"soil_moisture_pct": 1.5,
"soil_temperature": 1.5,
"soil_ec": 1.5,
"soil_ph": 1.5,
"soil_nitrogen_ppm": 1.5,
"soil_phosphorus_ppm": 1.5,
"soil_potassium_ppm": 1.5,
"soil_calcium_ppm": 1.5,
"soil_magnesium_ppm": 1.5,
"soil_sulfur_ppm": 1.5,
"soil_organic_matter_pct": 1.5,
"soil_micronutrients": {},
"soil_test_recommendations": {},
"variables": {},
"is_active": true,
"created_at": "2026-06-15T09:30:00Z",
"updated_at": "2026-06-15T09:30:00Z"
}post
/soil-data/field/{field_id}/isdaFetch and store soil data from the ISDA API for a field's centroid
Requires an
Authorization: Bearer header.Parameters
field_idstringpathrequiredRequest body
captured_atstring<date-time>optionalaoi_typeenum<string>optionalSoil data area of interest type enum
pointpolygonResponse 201
soil_data_idstringrequiredfarm_idstringrequiredfield_idstringrequiredcaptured_atstring<date-time>requiredaoi_typeenum<string>requireddata_sourceenum<string>requiredtest_typeenum<string>optionalrapidstandardcomprehensivetest_report_urlstringoptionalsoil_texturestringoptionalsoil_moisture_pctnumberoptionalsoil_temperaturenumberoptionalsoil_ecnumberoptionalsoil_phnumberoptionalsoil_nitrogen_ppmnumberoptionalsoil_phosphorus_ppmnumberoptionalsoil_potassium_ppmnumberoptionalsoil_calcium_ppmnumberoptionalsoil_magnesium_ppmnumberoptionalsoil_sulfur_ppmnumberoptionalsoil_organic_matter_pctnumberoptionalsoil_micronutrientsobjectoptionalsoil_test_recommendationsobjectoptionalvariablesobjectoptionalis_activebooleanrequiredcreated_atstring<date-time>requiredupdated_atstring<date-time>requiredPOST /soil-data/field/{field_id}/isda
curl -X POST "https://api.cropsense.africa/soil-data/field/8b6e1a2f-2d4c-4e9a-9b0f-1c7d3e5a6f42/isda" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"captured_at": "2026-06-15T09:30:00Z",
"aoi_type": "point"
}'Example response · 201
{
"soil_data_id": "7c1e4f2a-3b6d-4e8c-9a1f-5d2b8e7c4f60",
"farm_id": "3fa2c9e1-6b3a-4d2e-9c11-4a8e5f9d2b7a",
"field_id": "8b6e1a2f-2d4c-4e9a-9b0f-1c7d3e5a6f42",
"captured_at": "2026-06-15T09:30:00Z",
"aoi_type": "point",
"data_source": "LAB",
"test_type": "rapid",
"test_report_url": "test_report_url",
"soil_texture": "soil_texture",
"soil_moisture_pct": 1.5,
"soil_temperature": 1.5,
"soil_ec": 1.5,
"soil_ph": 1.5,
"soil_nitrogen_ppm": 1.5,
"soil_phosphorus_ppm": 1.5,
"soil_potassium_ppm": 1.5,
"soil_calcium_ppm": 1.5,
"soil_magnesium_ppm": 1.5,
"soil_sulfur_ppm": 1.5,
"soil_organic_matter_pct": 1.5,
"soil_micronutrients": {},
"soil_test_recommendations": {},
"variables": {},
"is_active": true,
"created_at": "2026-06-15T09:30:00Z",
"updated_at": "2026-06-15T09:30:00Z"
}