CropSense

Search documentation

Search for a command to run...

API Reference

Soil Data

Lab tests, sensor readings, and ISDA soil data for fields and farms.

post/soil-data

Manually create a soil data record (lab test or sensor reading)

Requires an Authorization: Bearer header.

Request body

farm_idstringrequired
field_idstringrequired
captured_atstring<date-time>required
data_sourceenum<string>required
aoi_typeenum<string>optional

Soil data area of interest type enum

pointpolygon
test_typeenum<string>optional
rapidstandardcomprehensive
test_report_urlstringoptional
soil_texturestringoptional
soil_moisture_pctnumberoptional
soil_temperaturenumberoptional
soil_ecnumberoptional
soil_phnumberoptional
soil_nitrogen_ppmnumberoptional
soil_phosphorus_ppmnumberoptional
soil_potassium_ppmnumberoptional
soil_calcium_ppmnumberoptional
soil_magnesium_ppmnumberoptional
soil_sulfur_ppmnumberoptional
soil_organic_matter_pctnumberoptional
soil_micronutrientsobjectoptional
soil_test_recommendationsobjectoptional
variablesobjectoptional

Response 201

soil_data_idstringrequired
farm_idstringrequired
field_idstringrequired
captured_atstring<date-time>required
aoi_typeenum<string>required
data_sourceenum<string>required
test_typeenum<string>optional
rapidstandardcomprehensive
test_report_urlstringoptional
soil_texturestringoptional
soil_moisture_pctnumberoptional
soil_temperaturenumberoptional
soil_ecnumberoptional
soil_phnumberoptional
soil_nitrogen_ppmnumberoptional
soil_phosphorus_ppmnumberoptional
soil_potassium_ppmnumberoptional
soil_calcium_ppmnumberoptional
soil_magnesium_ppmnumberoptional
soil_sulfur_ppmnumberoptional
soil_organic_matter_pctnumberoptional
soil_micronutrientsobjectoptional
soil_test_recommendationsobjectoptional
variablesobjectoptional
is_activebooleanrequired
created_atstring<date-time>required
updated_atstring<date-time>required
POST /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_idstringpathrequired

Response 200

soil_data_idstringrequired
farm_idstringrequired
field_idstringrequired
captured_atstring<date-time>required
aoi_typeenum<string>required
data_sourceenum<string>required
test_typeenum<string>optional
rapidstandardcomprehensive
test_report_urlstringoptional
soil_texturestringoptional
soil_moisture_pctnumberoptional
soil_temperaturenumberoptional
soil_ecnumberoptional
soil_phnumberoptional
soil_nitrogen_ppmnumberoptional
soil_phosphorus_ppmnumberoptional
soil_potassium_ppmnumberoptional
soil_calcium_ppmnumberoptional
soil_magnesium_ppmnumberoptional
soil_sulfur_ppmnumberoptional
soil_organic_matter_pctnumberoptional
soil_micronutrientsobjectoptional
soil_test_recommendationsobjectoptional
variablesobjectoptional
is_activebooleanrequired
created_atstring<date-time>required
updated_atstring<date-time>required
GET /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_idstringpathrequired

Request body

farm_idstringoptional
field_idstringoptional
captured_atstring<date-time>optional
aoi_typeenum<string>optional

Soil data area of interest type enum

pointpolygon
data_sourceenum<string>optional

Soil data source enum

LABSENSORISDA
test_typeenum<string>optional
rapidstandardcomprehensive
test_report_urlstringoptional
soil_texturestringoptional
soil_moisture_pctnumberoptional
soil_temperaturenumberoptional
soil_ecnumberoptional
soil_phnumberoptional
soil_nitrogen_ppmnumberoptional
soil_phosphorus_ppmnumberoptional
soil_potassium_ppmnumberoptional
soil_calcium_ppmnumberoptional
soil_magnesium_ppmnumberoptional
soil_sulfur_ppmnumberoptional
soil_organic_matter_pctnumberoptional
soil_micronutrientsobjectoptional
soil_test_recommendationsobjectoptional
variablesobjectoptional

Response 200

soil_data_idstringrequired
farm_idstringrequired
field_idstringrequired
captured_atstring<date-time>required
aoi_typeenum<string>required
data_sourceenum<string>required
test_typeenum<string>optional
rapidstandardcomprehensive
test_report_urlstringoptional
soil_texturestringoptional
soil_moisture_pctnumberoptional
soil_temperaturenumberoptional
soil_ecnumberoptional
soil_phnumberoptional
soil_nitrogen_ppmnumberoptional
soil_phosphorus_ppmnumberoptional
soil_potassium_ppmnumberoptional
soil_calcium_ppmnumberoptional
soil_magnesium_ppmnumberoptional
soil_sulfur_ppmnumberoptional
soil_organic_matter_pctnumberoptional
soil_micronutrientsobjectoptional
soil_test_recommendationsobjectoptional
variablesobjectoptional
is_activebooleanrequired
created_atstring<date-time>required
updated_atstring<date-time>required
PUT /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_idstringpathrequired
DELETE /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_idstringpathrequired

Response 200

soil_dataSoilData[]required
totalintegerrequired
GET /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_idstringpathrequired

Response 200

soil_dataSoilData[]required
totalintegerrequired
GET /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}/latest

Get the latest soil data record for a field

Requires an Authorization: Bearer header.

Parameters

field_idstringpathrequired

Response 200

soil_data_idstringrequired
farm_idstringrequired
field_idstringrequired
captured_atstring<date-time>required
aoi_typeenum<string>required
data_sourceenum<string>required
test_typeenum<string>optional
rapidstandardcomprehensive
test_report_urlstringoptional
soil_texturestringoptional
soil_moisture_pctnumberoptional
soil_temperaturenumberoptional
soil_ecnumberoptional
soil_phnumberoptional
soil_nitrogen_ppmnumberoptional
soil_phosphorus_ppmnumberoptional
soil_potassium_ppmnumberoptional
soil_calcium_ppmnumberoptional
soil_magnesium_ppmnumberoptional
soil_sulfur_ppmnumberoptional
soil_organic_matter_pctnumberoptional
soil_micronutrientsobjectoptional
soil_test_recommendationsobjectoptional
variablesobjectoptional
is_activebooleanrequired
created_atstring<date-time>required
updated_atstring<date-time>required
GET /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}/isda

Fetch and store soil data from the ISDA API for a field's centroid

Requires an Authorization: Bearer header.

Parameters

field_idstringpathrequired

Request body

captured_atstring<date-time>optional
aoi_typeenum<string>optional

Soil data area of interest type enum

pointpolygon

Response 201

soil_data_idstringrequired
farm_idstringrequired
field_idstringrequired
captured_atstring<date-time>required
aoi_typeenum<string>required
data_sourceenum<string>required
test_typeenum<string>optional
rapidstandardcomprehensive
test_report_urlstringoptional
soil_texturestringoptional
soil_moisture_pctnumberoptional
soil_temperaturenumberoptional
soil_ecnumberoptional
soil_phnumberoptional
soil_nitrogen_ppmnumberoptional
soil_phosphorus_ppmnumberoptional
soil_potassium_ppmnumberoptional
soil_calcium_ppmnumberoptional
soil_magnesium_ppmnumberoptional
soil_sulfur_ppmnumberoptional
soil_organic_matter_pctnumberoptional
soil_micronutrientsobjectoptional
soil_test_recommendationsobjectoptional
variablesobjectoptional
is_activebooleanrequired
created_atstring<date-time>required
updated_atstring<date-time>required
POST /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"
}