Syngenta Cropwise Integration
Overview
Access farm properties, fields, and monitoring data from Syngenta Cropwise through the Colmeia middleware. Your Cropwise account is connected to your tenant by MT2Data — you only need your tenant bearer secret to make requests.
Base URL: https://colmeia.mt2data.cloud/api/cw
Authentication
All data routes require your tenant bearer secret:
Authorization: Bearer <tenant-secret>
Organization scoping
Cropwise scopes every request to a single Organization (an internal Syngenta UUID). Cropwise has no API to list the organizations a token can access, so the OrgID is provisioned out-of-band by the Syngenta Digital onboarding team and stored against your tenant when MT2Data connects your account.
You do not pass an orgId query parameter on any data route. The middleware resolves the OrgID from your tenant binding on every request and forwards it to Cropwise. If your tenant has no OrgID on file, data routes return 400 no_syngenta_org — contact MT2Data to provision the org.
Farm Management
List Properties (Farms)
Endpoint: GET /cw/data/:tenantId/properties
curl https://colmeia.mt2data.cloud/api/cw/data/YOUR_TENANT_ID/properties \
-H "Authorization: Bearer YOUR_TENANT_SECRET"
Response:
{
"total_elements": 3,
"content": [
{
"id": "property-uuid",
"name": "Property Name",
"field_count": 27,
"total_area": 3864.4776,
"state": "MT",
"city": "City Name",
"reference_point": {
"type": "Point",
"coordinates": [-52.78, -11.31]
}
}
]
}
List Fields
Endpoint: GET /cw/data/:tenantId/properties/:propertyId/fields
curl https://colmeia.mt2data.cloud/api/cw/data/YOUR_TENANT_ID/properties/PROPERTY_ID/fields \
-H "Authorization: Bearer YOUR_TENANT_SECRET"
Response:
{
"total_elements": 70,
"content": [
{
"id": "field-id",
"name": "Field Name",
"area": 154.32,
"crop_type": "Soybean",
"boundary": { "type": "Polygon", "coordinates": [[]] }
}
]
}
Monitoring Data
Get Field Indicators
Endpoint: GET /cw/data/:tenantId/monitoring/indicators
Get monitoring indicators (pest pressure, disease risk, etc.) for fields.
curl "https://colmeia.mt2data.cloud/api/cw/data/YOUR_TENANT_ID/monitoring/indicators?propertyId=PROPERTY_ID&start=2024-01-01&end=2024-12-31" \
-H "Authorization: Bearer YOUR_TENANT_SECRET"
Query Parameters:
| Parameter | Required | Description |
|---|---|---|
propertyId | Yes | Property ID |
start | No | Start date (YYYY-MM-DD) |
end | No | End date (YYYY-MM-DD) |
Get Geo-Referenced Monitoring Points
Endpoint: GET /cw/data/:tenantId/monitoring/points
curl "https://colmeia.mt2data.cloud/api/cw/data/YOUR_TENANT_ID/monitoring/points?propertyId=PROPERTY_ID" \
-H "Authorization: Bearer YOUR_TENANT_SECRET"
Get Monitoring Changes (Incremental Sync)
Endpoint: GET /cw/data/:tenantId/properties/:propertyId/monitoring/changes
Fetch only observations that changed within a date range — efficient for incremental sync.
curl "https://colmeia.mt2data.cloud/api/cw/data/YOUR_TENANT_ID/properties/PROPERTY_ID/monitoring/changes?start=2026-01-25&end=2026-01-31" \
-H "Authorization: Bearer YOUR_TENANT_SECRET"
Query Parameters:
| Parameter | Required | Description |
|---|---|---|
start | Yes | Start date (YYYY-MM-DD) |
end | Yes | End date (YYYY-MM-DD) — max 7 days from start |
date_reference | No | "sync_date" or "observation_date" (default: "sync_date") |
Agronomic Context
Get Current Season Crops
Endpoint: GET /cw/data/:tenantId/properties/:propertyId/crops
curl "https://colmeia.mt2data.cloud/api/cw/data/YOUR_TENANT_ID/properties/PROPERTY_ID/crops" \
-H "Authorization: Bearer YOUR_TENANT_SECRET"
Query Parameters: date (YYYY-MM-DD, defaults to today)
Get Crops Catalog
Endpoint: GET /cw/data/:tenantId/catalog/crops
curl "https://colmeia.mt2data.cloud/api/cw/data/YOUR_TENANT_ID/catalog/crops?country=BR" \
-H "Authorization: Bearer YOUR_TENANT_SECRET"
Field Notes & Observations
Get Field Notes
Endpoint: GET /cw/data/:tenantId/properties/:propertyId/notes
curl "https://colmeia.mt2data.cloud/api/cw/data/YOUR_TENANT_ID/properties/PROPERTY_ID/notes" \
-H "Authorization: Bearer YOUR_TENANT_SECRET"
Code Example
const TENANT_ID = 'YOUR_TENANT_ID';
const BASE = 'https://colmeia.mt2data.cloud/api';
const headers = { Authorization: 'Bearer YOUR_TENANT_SECRET' };
// Get all properties
const properties = await fetch(`${BASE}/cw/data/${TENANT_ID}/properties`, { headers })
.then(r => r.json());
// Get fields for first property
const propertyId = properties.content[0].id;
const fields = await fetch(
`${BASE}/cw/data/${TENANT_ID}/properties/${propertyId}/fields`, { headers }
).then(r => r.json());
console.log(`${properties.total_elements} properties, ${fields.total_elements} fields`);
Error Codes
| Code | Status | Meaning |
|---|---|---|
no_token_found | 401 | Your Cropwise account is not connected — contact MT2Data |
no_syngenta_org | 400 | Tenant has no OrgID on file — contact MT2Data so they can provision it from the OrgID provided by Syngenta Digital |
authentication_failed | 500 | Stored credentials need to be refreshed — contact MT2Data |