API Reference
YieldRank
Credit-risk scoring for farms — submit scores, and get repayment capacity, recommended loan limits, and portfolio farm intelligence.
post
/yieldrank/scoreSubmit a farm for YieldRank scoring
Requires an
Authorization: Bearer header.Request body
farm_idstringrequiredfield_idstringoptionalcrop_typestringoptionalscoring_contextenum<string>optionalloan_referencestringoptionalasync_modebooleanoptionalas_ofstring<date>optionalResponse 200
score_idstringrequiredcropsense_score_idstringoptionalfarm_idstringrequiredportfolio_idstringoptionalstatusenum<string>optionalscoreintegerrequiredraw_scoreintegeroptionalrisk_bandstringrequiredrisk_band_labelstringoptionalconfidence_levelstringoptionaldata_tierstringoptionalcrop_typestringoptionalscoring_contextstringoptionalscoring_scopestringoptionalscore_versionstringoptionalscored_atstring<date-time>requirednext_review_datestring<date>optionalscore_inputs_snapshotScoreInputsSnapshotoptionaldata_completenessDataCompletenessDetailoptionalpillar_scoresPillarScoresoptionalscore_breakdownScoreContributionsoptionalkey_risk_factorsRiskFactor[]optionalrecommendationsstring[]optionalloan_referencestringoptionalfarmer_idstringoptionalfarmer_namestringoptionalfarm_namestringoptionalfields_assessedFieldAssessedItem[]optionalrequested_amountstringoptionalloan_currencystringoptionalloan_contextLoanContextoptionaladverse_action_factorsAdverseActionFactor[]optionalauditAuditTrailoptionalPOST /yieldrank/score
curl -X POST "https://api.cropsense.africa/yieldrank/score" \
-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",
"crop_type": "crop_type",
"scoring_context": "credit_origination",
"loan_reference": "loan_reference",
"async_mode": false,
"as_of": "2026-06-15"
}'Example response · 200
{
"score_id": "4b8d2f6a-1c9e-4a3d-8f5b-2e7c6a9d0f1b",
"cropsense_score_id": "cropsense_score_id",
"farm_id": "3fa2c9e1-6b3a-4d2e-9c11-4a8e5f9d2b7a",
"portfolio_id": "portfolio_id",
"status": "pending",
"score": 1,
"raw_score": 1,
"risk_band": "risk_band",
"risk_band_label": "risk_band_label",
"confidence_level": "confidence_level",
"data_tier": "data_tier",
"crop_type": "crop_type",
"scoring_context": "scoring_context",
"scoring_scope": "scoring_scope",
"score_version": "score_version",
"scored_at": "2026-06-15T09:30:00Z",
"next_review_date": "2026-06-15",
"score_inputs_snapshot": {
"as_of": "2026-06-15",
"data_as_of": "2026-06-15",
"satellite_window_days": 1,
"alert_window_days": 1,
"max_cloud_coverage_pct": 1.5,
"defaulted_features": [
"defaulted_features"
],
"defaulted_feature_count": 1,
"satellite_record_count": 1,
"soil_test_count": 1,
"weather_month_count": 1,
"alert_count": 1,
"field_area_ha": 1.5,
"has_evaluation_metrics": true,
"avg_ndvi": 1.5,
"avg_health_score": 1.5,
"avg_stress_level": 1.5,
"avg_yield_prediction": 1.5,
"soil_ph": 1.5,
"soil_fertility_score": 1.5,
"soil_suitability_score": 1.5,
"ndvi_trend_numeric": 1.5,
"season_stage": "season_stage",
"area_size_band": "area_size_band",
"total_rainfall_mm": 1.5,
"observed_rainfall_mm": 1.5,
"weather_observed_day_count": 1,
"weather_day_coverage_pct": 1.5,
"weather_coverage_insufficient": true,
"rainfall_score": 1.5,
"avg_environmental_risk_score": 1.5,
"extreme_event_count": 1,
"cooperative_membership_status": "cooperative_membership_status",
"transaction_count": 1,
"input_spend_per_ha": 1.5,
"income_expense_ratio": 1.5,
"days_since_last_transaction": 1,
"avg_monthly_balance": 1.5,
"momo_frequency_score": 1.5,
"is_in_cooperative": true,
"input_purchase_count": 1,
"market_risk_score": 1.5,
"crop_type_resolved": "crop_type_resolved",
"optimal_rainfall_min": 1.5,
"optimal_rainfall_max": 1.5,
"demand_index": 1.5,
"susceptibility_index": 1.5
},
"data_completeness": {
"satellite_data": false,
"weather_data": false,
"soil_data": false,
"yield_history": false,
"farm_activities": false,
"financial_data": false,
"overall_pct": 1.5,
"defaulted_features": [
"defaulted_features"
],
"defaulted_feature_count": 1,
"fields_excluded": [
{
"field_id": "8b6e1a2f-2d4c-4e9a-9b0f-1c7d3e5a6f42",
"area_ha": 1.5,
"reason": "reason",
"detail": "detail"
}
]
},
"pillar_scores": {
"agronomic": 1.5,
"climate": 1.5,
"financial": 1.5,
"weight_agronomic": 0.4,
"weight_climate": 0.35,
"weight_financial": 0.25,
"pillar_evidence": {},
"weights_redistributed": true
},
"score_breakdown": {
"agronomic": {
"components": [
{
"label": "label",
"actual": 1.5,
"max": 1.5,
"gap": 1.5,
"pct_of_max": 1,
"driver": "driver"
}
]
},
"climate": {
"components": [
{
"label": "label",
"actual": 1.5,
"max": 1.5,
"gap": 1.5,
"pct_of_max": 1,
"driver": "driver"
}
]
},
"financial": {
"components": [
{
"label": "label",
"actual": 1.5,
"max": 1.5,
"gap": 1.5,
"pct_of_max": 1,
"driver": "driver"
}
]
}
},
"key_risk_factors": [
{
"factor": "factor",
"severity": "severity",
"description": "Notes about this record."
}
],
"recommendations": [
"recommendations"
],
"loan_reference": "loan_reference",
"farmer_id": "farmer_id",
"farmer_name": "farmer_name",
"farm_name": "farm_name",
"fields_assessed": [
{
"field_id": "8b6e1a2f-2d4c-4e9a-9b0f-1c7d3e5a6f42",
"field_name": "field_name",
"area_ha": 1.5,
"weight_pct": 1.5,
"score": 1,
"risk_band": "risk_band",
"open_in_crop_monitor": "open_in_crop_monitor"
}
],
"requested_amount": "requested_amount",
"loan_currency": "loan_currency",
"loan_context": {
"application_id": "application_id",
"loan_product_type": "loan_product_type",
"requested_amount": "requested_amount",
"loan_currency": "loan_currency",
"loan_tenor_months": 1,
"loan_purpose": "loan_purpose",
"application_status": "application_status"
},
"adverse_action_factors": [],
"audit": {
"assessed_at": "2026-06-15T09:30:00Z",
"assessed_by_name": "assessed_by_name",
"model_version": "model_version",
"data_as_of": "2026-06-15",
"rescore_cadence": "Manual",
"next_review_date": "2026-06-15"
}
}post
/yieldrank/scores/batchSubmit multiple farms for YieldRank scoring in one request
Requires an
Authorization: Bearer header.Request body
requestsScoreSubmitRequest[]requiredResponse 200
resultsScoreBatchItem[]requiredtotalintegerrequiredsucceededintegerrequiredfailedintegerrequiredPOST /yieldrank/scores/batch
curl -X POST "https://api.cropsense.africa/yieldrank/scores/batch" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"requests": [
{
"farm_id": "3fa2c9e1-6b3a-4d2e-9c11-4a8e5f9d2b7a",
"field_id": "8b6e1a2f-2d4c-4e9a-9b0f-1c7d3e5a6f42",
"crop_type": "crop_type",
"scoring_context": "credit_origination",
"loan_reference": "loan_reference",
"async_mode": false,
"as_of": "2026-06-15"
}
]
}'Example response · 200
{
"results": [
{
"farm_id": "3fa2c9e1-6b3a-4d2e-9c11-4a8e5f9d2b7a",
"field_id": "8b6e1a2f-2d4c-4e9a-9b0f-1c7d3e5a6f42",
"result": {
"score_id": "4b8d2f6a-1c9e-4a3d-8f5b-2e7c6a9d0f1b",
"cropsense_score_id": "cropsense_score_id",
"farm_id": "3fa2c9e1-6b3a-4d2e-9c11-4a8e5f9d2b7a",
"portfolio_id": "portfolio_id",
"status": "pending",
"score": 1,
"raw_score": 1,
"risk_band": "risk_band",
"risk_band_label": "risk_band_label",
"confidence_level": "confidence_level",
"data_tier": "data_tier",
"crop_type": "crop_type",
"scoring_context": "scoring_context",
"scoring_scope": "scoring_scope",
"score_version": "score_version",
"scored_at": "2026-06-15T09:30:00Z",
"next_review_date": "2026-06-15",
"score_inputs_snapshot": {
"as_of": "2026-06-15",
"data_as_of": "2026-06-15",
"satellite_window_days": 1,
"alert_window_days": 1,
"max_cloud_coverage_pct": 1.5,
"defaulted_features": [
"defaulted_features"
],
"defaulted_feature_count": 1,
"satellite_record_count": 1,
"soil_test_count": 1,
"weather_month_count": 1,
"alert_count": 1,
"field_area_ha": 1.5,
"has_evaluation_metrics": true,
"avg_ndvi": 1.5,
"avg_health_score": 1.5,
"avg_stress_level": 1.5,
"avg_yield_prediction": 1.5,
"soil_ph": 1.5,
"soil_fertility_score": 1.5,
"soil_suitability_score": 1.5,
"ndvi_trend_numeric": 1.5,
"season_stage": "season_stage",
"area_size_band": "area_size_band",
"total_rainfall_mm": 1.5,
"observed_rainfall_mm": 1.5,
"weather_observed_day_count": 1,
"weather_day_coverage_pct": 1.5,
"weather_coverage_insufficient": true,
"rainfall_score": 1.5,
"avg_environmental_risk_score": 1.5,
"extreme_event_count": 1,
"cooperative_membership_status": "cooperative_membership_status",
"transaction_count": 1,
"input_spend_per_ha": 1.5,
"income_expense_ratio": 1.5,
"days_since_last_transaction": 1,
"avg_monthly_balance": 1.5,
"momo_frequency_score": 1.5,
"is_in_cooperative": true,
"input_purchase_count": 1,
"market_risk_score": 1.5,
"crop_type_resolved": "crop_type_resolved",
"optimal_rainfall_min": 1.5,
"optimal_rainfall_max": 1.5,
"demand_index": 1.5,
"susceptibility_index": 1.5
},
"data_completeness": {
"satellite_data": false,
"weather_data": false,
"soil_data": false,
"yield_history": false,
"farm_activities": false,
"financial_data": false,
"overall_pct": 1.5,
"defaulted_features": [
"defaulted_features"
],
"defaulted_feature_count": 1,
"fields_excluded": [
{
"field_id": "8b6e1a2f-2d4c-4e9a-9b0f-1c7d3e5a6f42",
"area_ha": null,
"reason": null,
"detail": null
}
]
},
"pillar_scores": {
"agronomic": 1.5,
"climate": 1.5,
"financial": 1.5,
"weight_agronomic": 0.4,
"weight_climate": 0.35,
"weight_financial": 0.25,
"pillar_evidence": {},
"weights_redistributed": true
},
"score_breakdown": {
"agronomic": {
"components": [
null
]
},
"climate": {
"components": [
null
]
},
"financial": {
"components": [
null
]
}
},
"key_risk_factors": [
{
"factor": "factor",
"severity": "severity",
"description": "Notes about this record."
}
],
"recommendations": [
"recommendations"
],
"loan_reference": "loan_reference",
"farmer_id": "farmer_id",
"farmer_name": "farmer_name",
"farm_name": "farm_name",
"fields_assessed": [
{
"field_id": "8b6e1a2f-2d4c-4e9a-9b0f-1c7d3e5a6f42",
"field_name": "field_name",
"area_ha": 1.5,
"weight_pct": 1.5,
"score": 1,
"risk_band": "risk_band",
"open_in_crop_monitor": "open_in_crop_monitor"
}
],
"requested_amount": "requested_amount",
"loan_currency": "loan_currency",
"loan_context": {
"application_id": "application_id",
"loan_product_type": "loan_product_type",
"requested_amount": "requested_amount",
"loan_currency": "loan_currency",
"loan_tenor_months": 1,
"loan_purpose": "loan_purpose",
"application_status": "application_status"
},
"adverse_action_factors": [],
"audit": {
"assessed_at": "2026-06-15T09:30:00Z",
"assessed_by_name": "assessed_by_name",
"model_version": "model_version",
"data_as_of": "2026-06-15",
"rescore_cadence": "Manual",
"next_review_date": "2026-06-15"
}
},
"accepted": {
"score_id": "4b8d2f6a-1c9e-4a3d-8f5b-2e7c6a9d0f1b",
"cropsense_score_id": "cropsense_score_id",
"status": "pending",
"message": "message",
"estimated_completion_seconds": 60
},
"error": "error"
}
],
"total": 1,
"succeeded": 1,
"failed": 1
}get
/yieldrank/score/{score_id}Retrieve a score result
Requires an
Authorization: Bearer header.Parameters
score_idstringpathrequiredResponse 200
score_idstringrequiredcropsense_score_idstringoptionalfarm_idstringrequiredportfolio_idstringoptionalstatusenum<string>optionalscoreintegerrequiredraw_scoreintegeroptionalrisk_bandstringrequiredrisk_band_labelstringoptionalconfidence_levelstringoptionaldata_tierstringoptionalcrop_typestringoptionalscoring_contextstringoptionalscoring_scopestringoptionalscore_versionstringoptionalscored_atstring<date-time>requirednext_review_datestring<date>optionalscore_inputs_snapshotScoreInputsSnapshotoptionaldata_completenessDataCompletenessDetailoptionalpillar_scoresPillarScoresoptionalscore_breakdownScoreContributionsoptionalkey_risk_factorsRiskFactor[]optionalrecommendationsstring[]optionalloan_referencestringoptionalfarmer_idstringoptionalfarmer_namestringoptionalfarm_namestringoptionalfields_assessedFieldAssessedItem[]optionalrequested_amountstringoptionalloan_currencystringoptionalloan_contextLoanContextoptionaladverse_action_factorsAdverseActionFactor[]optionalauditAuditTrailoptionalGET /yieldrank/score/{score_id}
curl -X GET "https://api.cropsense.africa/yieldrank/score/4b8d2f6a-1c9e-4a3d-8f5b-2e7c6a9d0f1b" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN"Example response · 200
{
"score_id": "4b8d2f6a-1c9e-4a3d-8f5b-2e7c6a9d0f1b",
"cropsense_score_id": "cropsense_score_id",
"farm_id": "3fa2c9e1-6b3a-4d2e-9c11-4a8e5f9d2b7a",
"portfolio_id": "portfolio_id",
"status": "pending",
"score": 1,
"raw_score": 1,
"risk_band": "risk_band",
"risk_band_label": "risk_band_label",
"confidence_level": "confidence_level",
"data_tier": "data_tier",
"crop_type": "crop_type",
"scoring_context": "scoring_context",
"scoring_scope": "scoring_scope",
"score_version": "score_version",
"scored_at": "2026-06-15T09:30:00Z",
"next_review_date": "2026-06-15",
"score_inputs_snapshot": {
"as_of": "2026-06-15",
"data_as_of": "2026-06-15",
"satellite_window_days": 1,
"alert_window_days": 1,
"max_cloud_coverage_pct": 1.5,
"defaulted_features": [
"defaulted_features"
],
"defaulted_feature_count": 1,
"satellite_record_count": 1,
"soil_test_count": 1,
"weather_month_count": 1,
"alert_count": 1,
"field_area_ha": 1.5,
"has_evaluation_metrics": true,
"avg_ndvi": 1.5,
"avg_health_score": 1.5,
"avg_stress_level": 1.5,
"avg_yield_prediction": 1.5,
"soil_ph": 1.5,
"soil_fertility_score": 1.5,
"soil_suitability_score": 1.5,
"ndvi_trend_numeric": 1.5,
"season_stage": "season_stage",
"area_size_band": "area_size_band",
"total_rainfall_mm": 1.5,
"observed_rainfall_mm": 1.5,
"weather_observed_day_count": 1,
"weather_day_coverage_pct": 1.5,
"weather_coverage_insufficient": true,
"rainfall_score": 1.5,
"avg_environmental_risk_score": 1.5,
"extreme_event_count": 1,
"cooperative_membership_status": "cooperative_membership_status",
"transaction_count": 1,
"input_spend_per_ha": 1.5,
"income_expense_ratio": 1.5,
"days_since_last_transaction": 1,
"avg_monthly_balance": 1.5,
"momo_frequency_score": 1.5,
"is_in_cooperative": true,
"input_purchase_count": 1,
"market_risk_score": 1.5,
"crop_type_resolved": "crop_type_resolved",
"optimal_rainfall_min": 1.5,
"optimal_rainfall_max": 1.5,
"demand_index": 1.5,
"susceptibility_index": 1.5
},
"data_completeness": {
"satellite_data": false,
"weather_data": false,
"soil_data": false,
"yield_history": false,
"farm_activities": false,
"financial_data": false,
"overall_pct": 1.5,
"defaulted_features": [
"defaulted_features"
],
"defaulted_feature_count": 1,
"fields_excluded": [
{
"field_id": "8b6e1a2f-2d4c-4e9a-9b0f-1c7d3e5a6f42",
"area_ha": 1.5,
"reason": "reason",
"detail": "detail"
}
]
},
"pillar_scores": {
"agronomic": 1.5,
"climate": 1.5,
"financial": 1.5,
"weight_agronomic": 0.4,
"weight_climate": 0.35,
"weight_financial": 0.25,
"pillar_evidence": {},
"weights_redistributed": true
},
"score_breakdown": {
"agronomic": {
"components": [
{
"label": "label",
"actual": 1.5,
"max": 1.5,
"gap": 1.5,
"pct_of_max": 1,
"driver": "driver"
}
]
},
"climate": {
"components": [
{
"label": "label",
"actual": 1.5,
"max": 1.5,
"gap": 1.5,
"pct_of_max": 1,
"driver": "driver"
}
]
},
"financial": {
"components": [
{
"label": "label",
"actual": 1.5,
"max": 1.5,
"gap": 1.5,
"pct_of_max": 1,
"driver": "driver"
}
]
}
},
"key_risk_factors": [
{
"factor": "factor",
"severity": "severity",
"description": "Notes about this record."
}
],
"recommendations": [
"recommendations"
],
"loan_reference": "loan_reference",
"farmer_id": "farmer_id",
"farmer_name": "farmer_name",
"farm_name": "farm_name",
"fields_assessed": [
{
"field_id": "8b6e1a2f-2d4c-4e9a-9b0f-1c7d3e5a6f42",
"field_name": "field_name",
"area_ha": 1.5,
"weight_pct": 1.5,
"score": 1,
"risk_band": "risk_band",
"open_in_crop_monitor": "open_in_crop_monitor"
}
],
"requested_amount": "requested_amount",
"loan_currency": "loan_currency",
"loan_context": {
"application_id": "application_id",
"loan_product_type": "loan_product_type",
"requested_amount": "requested_amount",
"loan_currency": "loan_currency",
"loan_tenor_months": 1,
"loan_purpose": "loan_purpose",
"application_status": "application_status"
},
"adverse_action_factors": [],
"audit": {
"assessed_at": "2026-06-15T09:30:00Z",
"assessed_by_name": "assessed_by_name",
"model_version": "model_version",
"data_as_of": "2026-06-15",
"rescore_cadence": "Manual",
"next_review_date": "2026-06-15"
}
}get
/yieldrank/scoresList all YieldRank scores for the organisation
Requires an
Authorization: Bearer header.Parameters
farm_idstringqueryrisk_bandstringqueryA, B, C, D, or E
from_datestringqueryISO 8601 date
to_datestringqueryISO 8601 date
limitintegerqueryoffsetintegerqueryResponse 200
resultsScoreResult[]requiredtotalintegerrequiredlimitintegerrequiredoffsetintegerrequiredGET /yieldrank/scores
curl -X GET "https://api.cropsense.africa/yieldrank/scores?farm_id=3fa2c9e1-6b3a-4d2e-9c11-4a8e5f9d2b7a&risk_band=risk_band&from_date=2026-06-15&to_date=2026-06-15&limit=50&offset=0" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN"Example response · 200
{
"results": [
{
"score_id": "4b8d2f6a-1c9e-4a3d-8f5b-2e7c6a9d0f1b",
"cropsense_score_id": "cropsense_score_id",
"farm_id": "3fa2c9e1-6b3a-4d2e-9c11-4a8e5f9d2b7a",
"portfolio_id": "portfolio_id",
"status": "pending",
"score": 1,
"raw_score": 1,
"risk_band": "risk_band",
"risk_band_label": "risk_band_label",
"confidence_level": "confidence_level",
"data_tier": "data_tier",
"crop_type": "crop_type",
"scoring_context": "scoring_context",
"scoring_scope": "scoring_scope",
"score_version": "score_version",
"scored_at": "2026-06-15T09:30:00Z",
"next_review_date": "2026-06-15",
"score_inputs_snapshot": {
"as_of": "2026-06-15",
"data_as_of": "2026-06-15",
"satellite_window_days": 1,
"alert_window_days": 1,
"max_cloud_coverage_pct": 1.5,
"defaulted_features": [
"defaulted_features"
],
"defaulted_feature_count": 1,
"satellite_record_count": 1,
"soil_test_count": 1,
"weather_month_count": 1,
"alert_count": 1,
"field_area_ha": 1.5,
"has_evaluation_metrics": true,
"avg_ndvi": 1.5,
"avg_health_score": 1.5,
"avg_stress_level": 1.5,
"avg_yield_prediction": 1.5,
"soil_ph": 1.5,
"soil_fertility_score": 1.5,
"soil_suitability_score": 1.5,
"ndvi_trend_numeric": 1.5,
"season_stage": "season_stage",
"area_size_band": "area_size_band",
"total_rainfall_mm": 1.5,
"observed_rainfall_mm": 1.5,
"weather_observed_day_count": 1,
"weather_day_coverage_pct": 1.5,
"weather_coverage_insufficient": true,
"rainfall_score": 1.5,
"avg_environmental_risk_score": 1.5,
"extreme_event_count": 1,
"cooperative_membership_status": "cooperative_membership_status",
"transaction_count": 1,
"input_spend_per_ha": 1.5,
"income_expense_ratio": 1.5,
"days_since_last_transaction": 1,
"avg_monthly_balance": 1.5,
"momo_frequency_score": 1.5,
"is_in_cooperative": true,
"input_purchase_count": 1,
"market_risk_score": 1.5,
"crop_type_resolved": "crop_type_resolved",
"optimal_rainfall_min": 1.5,
"optimal_rainfall_max": 1.5,
"demand_index": 1.5,
"susceptibility_index": 1.5
},
"data_completeness": {
"satellite_data": false,
"weather_data": false,
"soil_data": false,
"yield_history": false,
"farm_activities": false,
"financial_data": false,
"overall_pct": 1.5,
"defaulted_features": [
"defaulted_features"
],
"defaulted_feature_count": 1,
"fields_excluded": [
{
"field_id": "8b6e1a2f-2d4c-4e9a-9b0f-1c7d3e5a6f42",
"area_ha": 1.5,
"reason": "reason",
"detail": "detail"
}
]
},
"pillar_scores": {
"agronomic": 1.5,
"climate": 1.5,
"financial": 1.5,
"weight_agronomic": 0.4,
"weight_climate": 0.35,
"weight_financial": 0.25,
"pillar_evidence": {},
"weights_redistributed": true
},
"score_breakdown": {
"agronomic": {
"components": [
{
"label": null,
"actual": null,
"max": null,
"gap": null,
"pct_of_max": null,
"driver": null
}
]
},
"climate": {
"components": [
{
"label": null,
"actual": null,
"max": null,
"gap": null,
"pct_of_max": null,
"driver": null
}
]
},
"financial": {
"components": [
{
"label": null,
"actual": null,
"max": null,
"gap": null,
"pct_of_max": null,
"driver": null
}
]
}
},
"key_risk_factors": [
{
"factor": "factor",
"severity": "severity",
"description": "Notes about this record."
}
],
"recommendations": [
"recommendations"
],
"loan_reference": "loan_reference",
"farmer_id": "farmer_id",
"farmer_name": "farmer_name",
"farm_name": "farm_name",
"fields_assessed": [
{
"field_id": "8b6e1a2f-2d4c-4e9a-9b0f-1c7d3e5a6f42",
"field_name": "field_name",
"area_ha": 1.5,
"weight_pct": 1.5,
"score": 1,
"risk_band": "risk_band",
"open_in_crop_monitor": "open_in_crop_monitor"
}
],
"requested_amount": "requested_amount",
"loan_currency": "loan_currency",
"loan_context": {
"application_id": "application_id",
"loan_product_type": "loan_product_type",
"requested_amount": "requested_amount",
"loan_currency": "loan_currency",
"loan_tenor_months": 1,
"loan_purpose": "loan_purpose",
"application_status": "application_status"
},
"adverse_action_factors": [],
"audit": {
"assessed_at": "2026-06-15T09:30:00Z",
"assessed_by_name": "assessed_by_name",
"model_version": "model_version",
"data_as_of": "2026-06-15",
"rescore_cadence": "Manual",
"next_review_date": "2026-06-15"
}
}
],
"total": 1,
"limit": 1,
"offset": 1
}get
/yieldrank/score/{score_id}/repayment-capacityCompute expected harvest value, net cash flow, and DSCR for a scored farm
Requires an
Authorization: Bearer header.Parameters
score_idstringpathrequiredResponse 200
expected_harvest_valuenumberoptionalexpected_yield_kg_hanumberoptionalyield_basisstringoptionalcurrencystringoptionalmodelled_net_cash_flownumberoptionaldscrnumberoptionaldscr_signalstringoptionaldata_sourcesstring[]optionaldata_completeness_pctintegeroptionalGET /yieldrank/score/{score_id}/repayment-capacity
curl -X GET "https://api.cropsense.africa/yieldrank/score/4b8d2f6a-1c9e-4a3d-8f5b-2e7c6a9d0f1b/repayment-capacity" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN"Example response · 200
{
"expected_harvest_value": 1.5,
"expected_yield_kg_ha": 1.5,
"yield_basis": "yield_basis",
"currency": "USD",
"modelled_net_cash_flow": 1.5,
"dscr": 1.5,
"dscr_signal": "dscr_signal",
"data_sources": [],
"data_completeness_pct": 0
}get
/yieldrank/score/{score_id}/recommended-limitDerive a model-recommended loan cap from YieldRank score and repayment capacity
Requires an
Authorization: Bearer header.Parameters
score_idstringpathrequiredResponse 200
recommended_amountnumberrequiredcurrencystringoptionalrecommended_pct_of_requestnumberoptionalcap_reasonstringrequiredcap_reasonsstring[]requiredrationalestringrequiredGET /yieldrank/score/{score_id}/recommended-limit
curl -X GET "https://api.cropsense.africa/yieldrank/score/4b8d2f6a-1c9e-4a3d-8f5b-2e7c6a9d0f1b/recommended-limit" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN"Example response · 200
{
"recommended_amount": 1.5,
"currency": "USD",
"recommended_pct_of_request": 1.5,
"cap_reason": "cap_reason",
"cap_reasons": [
"cap_reasons"
],
"rationale": "rationale"
}get
/yieldrank/score/{score_id}/explainGenerate an AI narrative explanation for a YieldRank score
Requires an
Authorization: Bearer header.Parameters
score_idstringpathrequiredResponse 200
score_idstringrequiredcropsense_score_idstringoptionalsummarystringrequiredpillar_narrativesPillarNarrativesrequiredoutlookstringrequiredgenerated_atstring<date-time>requiredmodelstringoptionalcachedbooleanoptionalGET /yieldrank/score/{score_id}/explain
curl -X GET "https://api.cropsense.africa/yieldrank/score/4b8d2f6a-1c9e-4a3d-8f5b-2e7c6a9d0f1b/explain" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN"Example response · 200
{
"score_id": "4b8d2f6a-1c9e-4a3d-8f5b-2e7c6a9d0f1b",
"cropsense_score_id": "cropsense_score_id",
"summary": "summary",
"pillar_narratives": {
"agronomic": "agronomic",
"climate": "climate",
"financial": "financial"
},
"outlook": "outlook",
"generated_at": "2026-06-15T09:30:00Z",
"model": "deepseek-v4-flash",
"cached": false
}get
/yieldrank/farms/{farm_id}/satelliteGet satellite intelligence for a portfolio farm
Requires an
Authorization: Bearer header.Parameters
farm_idstringpathrequiredfield_idstringqueryScope to a specific field
limitintegerqueryResponse 200
farm_idstringrequiredfield_idstringoptionalrecordsSatelliteRecord[]requiredtotalintegerrequiredGET /yieldrank/farms/{farm_id}/satellite
curl -X GET "https://api.cropsense.africa/yieldrank/farms/3fa2c9e1-6b3a-4d2e-9c11-4a8e5f9d2b7a/satellite?field_id=8b6e1a2f-2d4c-4e9a-9b0f-1c7d3e5a6f42&limit=10" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN"Example response · 200
{
"farm_id": "3fa2c9e1-6b3a-4d2e-9c11-4a8e5f9d2b7a",
"field_id": "8b6e1a2f-2d4c-4e9a-9b0f-1c7d3e5a6f42",
"records": [
{
"image_id": "image_id",
"farm_id": "3fa2c9e1-6b3a-4d2e-9c11-4a8e5f9d2b7a",
"field_id": "8b6e1a2f-2d4c-4e9a-9b0f-1c7d3e5a6f42",
"captured_at": "2026-06-15T09:30:00Z",
"cloud_coverage_pct": 1.5,
"data_source": "data_source",
"health_indices": {
"ndvi": 1.5,
"ndmi": 1.5,
"evi": 1.5,
"savi": 1.5
},
"evaluation_metrics": {
"stress_level": "stress_level",
"stress_score": 1,
"yield_prediction_index": 1.5,
"crop_coverage_pct": 1.5
},
"recommendations": [
"recommendations"
]
}
],
"total": 1
}get
/yieldrank/farms/{farm_id}/yield-forecastGet yield forecast for a portfolio farm
Requires an
Authorization: Bearer header.Parameters
farm_idstringpathrequiredResponse 200
farm_idstringrequiredcrop_typestringoptionaldata_tierstringrequiredforecast_kg_hanumberrequiredforecast_total_kgnumberoptionaloptimal_yield_kg_hanumberoptionalyield_gap_pctnumberoptionaltrendstringoptionalconfidencestringrequiredgenerated_atstring<date-time>requiredGET /yieldrank/farms/{farm_id}/yield-forecast
curl -X GET "https://api.cropsense.africa/yieldrank/farms/3fa2c9e1-6b3a-4d2e-9c11-4a8e5f9d2b7a/yield-forecast" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN"Example response · 200
{
"farm_id": "3fa2c9e1-6b3a-4d2e-9c11-4a8e5f9d2b7a",
"crop_type": "crop_type",
"data_tier": "data_tier",
"forecast_kg_ha": 1.5,
"forecast_total_kg": 1.5,
"optimal_yield_kg_ha": 1.5,
"yield_gap_pct": 1.5,
"trend": "trend",
"confidence": "confidence",
"generated_at": "2026-06-15T09:30:00Z"
}get
/yieldrank/farms/{farm_id}/summaryGet full farm intelligence summary
Requires an
Authorization: Bearer header.Parameters
farm_idstringpathrequiredResponse 200
farm_idstringrequiredfarm_namestringrequiredcountrystringoptionallocationstringoptionalarea_hanumberoptionalsoil_typestringoptionalhas_irrigationbooleanoptionalcrop_typesstring[]optionallatest_scoreScoreResultoptionallatest_satelliteSatelliteRecordoptionalyield_forecastYieldForecastResponseoptionalactive_alertsobject[]optionaldata_completenessDataCompletenessDetailoptionalGET /yieldrank/farms/{farm_id}/summary
curl -X GET "https://api.cropsense.africa/yieldrank/farms/3fa2c9e1-6b3a-4d2e-9c11-4a8e5f9d2b7a/summary" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN"Example response · 200
{
"farm_id": "3fa2c9e1-6b3a-4d2e-9c11-4a8e5f9d2b7a",
"farm_name": "farm_name",
"country": "Kenya",
"location": "Kiambu County",
"area_ha": 1.5,
"soil_type": "soil_type",
"has_irrigation": true,
"crop_types": [
"crop_types"
],
"latest_score": {
"score_id": "4b8d2f6a-1c9e-4a3d-8f5b-2e7c6a9d0f1b",
"cropsense_score_id": "cropsense_score_id",
"farm_id": "3fa2c9e1-6b3a-4d2e-9c11-4a8e5f9d2b7a",
"portfolio_id": "portfolio_id",
"status": "pending",
"score": 1,
"raw_score": 1,
"risk_band": "risk_band",
"risk_band_label": "risk_band_label",
"confidence_level": "confidence_level",
"data_tier": "data_tier",
"crop_type": "crop_type",
"scoring_context": "scoring_context",
"scoring_scope": "scoring_scope",
"score_version": "score_version",
"scored_at": "2026-06-15T09:30:00Z",
"next_review_date": "2026-06-15",
"score_inputs_snapshot": {
"as_of": "2026-06-15",
"data_as_of": "2026-06-15",
"satellite_window_days": 1,
"alert_window_days": 1,
"max_cloud_coverage_pct": 1.5,
"defaulted_features": [
"defaulted_features"
],
"defaulted_feature_count": 1,
"satellite_record_count": 1,
"soil_test_count": 1,
"weather_month_count": 1,
"alert_count": 1,
"field_area_ha": 1.5,
"has_evaluation_metrics": true,
"avg_ndvi": 1.5,
"avg_health_score": 1.5,
"avg_stress_level": 1.5,
"avg_yield_prediction": 1.5,
"soil_ph": 1.5,
"soil_fertility_score": 1.5,
"soil_suitability_score": 1.5,
"ndvi_trend_numeric": 1.5,
"season_stage": "season_stage",
"area_size_band": "area_size_band",
"total_rainfall_mm": 1.5,
"observed_rainfall_mm": 1.5,
"weather_observed_day_count": 1,
"weather_day_coverage_pct": 1.5,
"weather_coverage_insufficient": true,
"rainfall_score": 1.5,
"avg_environmental_risk_score": 1.5,
"extreme_event_count": 1,
"cooperative_membership_status": "cooperative_membership_status",
"transaction_count": 1,
"input_spend_per_ha": 1.5,
"income_expense_ratio": 1.5,
"days_since_last_transaction": 1,
"avg_monthly_balance": 1.5,
"momo_frequency_score": 1.5,
"is_in_cooperative": true,
"input_purchase_count": 1,
"market_risk_score": 1.5,
"crop_type_resolved": "crop_type_resolved",
"optimal_rainfall_min": 1.5,
"optimal_rainfall_max": 1.5,
"demand_index": 1.5,
"susceptibility_index": 1.5
},
"data_completeness": {
"satellite_data": false,
"weather_data": false,
"soil_data": false,
"yield_history": false,
"farm_activities": false,
"financial_data": false,
"overall_pct": 1.5,
"defaulted_features": [
"defaulted_features"
],
"defaulted_feature_count": 1,
"fields_excluded": [
{
"field_id": "8b6e1a2f-2d4c-4e9a-9b0f-1c7d3e5a6f42",
"area_ha": 1.5,
"reason": "reason",
"detail": "detail"
}
]
},
"pillar_scores": {
"agronomic": 1.5,
"climate": 1.5,
"financial": 1.5,
"weight_agronomic": 0.4,
"weight_climate": 0.35,
"weight_financial": 0.25,
"pillar_evidence": {},
"weights_redistributed": true
},
"score_breakdown": {
"agronomic": {
"components": [
{
"label": "label",
"actual": 1.5,
"max": 1.5,
"gap": 1.5,
"pct_of_max": 1,
"driver": "driver"
}
]
},
"climate": {
"components": [
{
"label": "label",
"actual": 1.5,
"max": 1.5,
"gap": 1.5,
"pct_of_max": 1,
"driver": "driver"
}
]
},
"financial": {
"components": [
{
"label": "label",
"actual": 1.5,
"max": 1.5,
"gap": 1.5,
"pct_of_max": 1,
"driver": "driver"
}
]
}
},
"key_risk_factors": [
{
"factor": "factor",
"severity": "severity",
"description": "Notes about this record."
}
],
"recommendations": [
"recommendations"
],
"loan_reference": "loan_reference",
"farmer_id": "farmer_id",
"farmer_name": "farmer_name",
"farm_name": "farm_name",
"fields_assessed": [
{
"field_id": "8b6e1a2f-2d4c-4e9a-9b0f-1c7d3e5a6f42",
"field_name": "field_name",
"area_ha": 1.5,
"weight_pct": 1.5,
"score": 1,
"risk_band": "risk_band",
"open_in_crop_monitor": "open_in_crop_monitor"
}
],
"requested_amount": "requested_amount",
"loan_currency": "loan_currency",
"loan_context": {
"application_id": "application_id",
"loan_product_type": "loan_product_type",
"requested_amount": "requested_amount",
"loan_currency": "loan_currency",
"loan_tenor_months": 1,
"loan_purpose": "loan_purpose",
"application_status": "application_status"
},
"adverse_action_factors": [],
"audit": {
"assessed_at": "2026-06-15T09:30:00Z",
"assessed_by_name": "assessed_by_name",
"model_version": "model_version",
"data_as_of": "2026-06-15",
"rescore_cadence": "Manual",
"next_review_date": "2026-06-15"
}
},
"latest_satellite": {
"image_id": "image_id",
"farm_id": "3fa2c9e1-6b3a-4d2e-9c11-4a8e5f9d2b7a",
"field_id": "8b6e1a2f-2d4c-4e9a-9b0f-1c7d3e5a6f42",
"captured_at": "2026-06-15T09:30:00Z",
"cloud_coverage_pct": 1.5,
"data_source": "data_source",
"health_indices": {
"ndvi": 1.5,
"ndmi": 1.5,
"evi": 1.5,
"savi": 1.5
},
"evaluation_metrics": {
"stress_level": "stress_level",
"stress_score": 1,
"yield_prediction_index": 1.5,
"crop_coverage_pct": 1.5
},
"recommendations": [
"recommendations"
]
},
"yield_forecast": {
"farm_id": "3fa2c9e1-6b3a-4d2e-9c11-4a8e5f9d2b7a",
"crop_type": "crop_type",
"data_tier": "data_tier",
"forecast_kg_ha": 1.5,
"forecast_total_kg": 1.5,
"optimal_yield_kg_ha": 1.5,
"yield_gap_pct": 1.5,
"trend": "trend",
"confidence": "confidence",
"generated_at": "2026-06-15T09:30:00Z"
},
"active_alerts": [
{}
],
"data_completeness": {
"satellite_data": false,
"weather_data": false,
"soil_data": false,
"yield_history": false,
"farm_activities": false,
"financial_data": false,
"overall_pct": 1.5,
"defaulted_features": [
"defaulted_features"
],
"defaulted_feature_count": 1,
"fields_excluded": [
{
"field_id": "8b6e1a2f-2d4c-4e9a-9b0f-1c7d3e5a6f42",
"area_ha": 1.5,
"reason": "reason",
"detail": "detail"
}
]
}
}