curl 'https://www.wiseyield.co/api/v1/crops?status=growing&limit=50' \
-H "Authorization: Bearer $WISEYIELD_API_KEY"
const res = await fetch(
'https://www.wiseyield.co/api/v1/crops?status=growing&limit=50',
{ headers: { Authorization: `Bearer ${process.env.WISEYIELD_API_KEY}` } }
);
const { data, pagination } = await res.json();
import os, requests
res = requests.get(
'https://www.wiseyield.co/api/v1/crops',
params={'status': 'growing', 'limit': 50},
headers={'Authorization': f"Bearer {os.environ['WISEYIELD_API_KEY']}"},
)
body = res.json()
{
"data": [
{
"id": "33333333-4444-5555-6666-777777777777",
"farmId": "11111111-2222-3333-4444-555555555555",
"fieldId": "88888888-9999-aaaa-bbbb-cccccccccccc",
"cropType": "date palm",
"variety": "Medjool",
"adminCropId": null,
"adminCropVarietyId": null,
"plantedArea": "4.2",
"plantingDate": "2024-03-15T00:00:00.000Z",
"expectedHarvestDate": "2026-10-01T00:00:00.000Z",
"actualHarvestDate": null,
"season": "spring",
"seasonYear": 2024,
"expectedYield": "180",
"actualYield": null,
"estimatedCost": "12000",
"actualCost": "10500",
"estimatedRevenue": "45000",
"actualRevenue": null,
"status": "growing",
"notes": "Drip-irrigated, fall NPK pending",
"createdAt": "2024-03-15T08:00:00.000Z",
"updatedAt": "2026-05-10T14:30:00.000Z"
}
],
"pagination": { "page": 1, "limit": 50, "total": 1, "totalPages": 1 }
}
{
"error": "Forbidden",
"code": "INSUFFICIENT_SCOPE",
"message": "Insufficient permissions. Required scope: crops:read",
"details": {
"requiredScope": "crops:read",
"availableScopes": ["farms:read"]
}
}
Crops
List crops
List crops belonging to farms owned by the authenticated user.
GET
/
api
/
v1
/
crops
curl 'https://www.wiseyield.co/api/v1/crops?status=growing&limit=50' \
-H "Authorization: Bearer $WISEYIELD_API_KEY"
const res = await fetch(
'https://www.wiseyield.co/api/v1/crops?status=growing&limit=50',
{ headers: { Authorization: `Bearer ${process.env.WISEYIELD_API_KEY}` } }
);
const { data, pagination } = await res.json();
import os, requests
res = requests.get(
'https://www.wiseyield.co/api/v1/crops',
params={'status': 'growing', 'limit': 50},
headers={'Authorization': f"Bearer {os.environ['WISEYIELD_API_KEY']}"},
)
body = res.json()
{
"data": [
{
"id": "33333333-4444-5555-6666-777777777777",
"farmId": "11111111-2222-3333-4444-555555555555",
"fieldId": "88888888-9999-aaaa-bbbb-cccccccccccc",
"cropType": "date palm",
"variety": "Medjool",
"adminCropId": null,
"adminCropVarietyId": null,
"plantedArea": "4.2",
"plantingDate": "2024-03-15T00:00:00.000Z",
"expectedHarvestDate": "2026-10-01T00:00:00.000Z",
"actualHarvestDate": null,
"season": "spring",
"seasonYear": 2024,
"expectedYield": "180",
"actualYield": null,
"estimatedCost": "12000",
"actualCost": "10500",
"estimatedRevenue": "45000",
"actualRevenue": null,
"status": "growing",
"notes": "Drip-irrigated, fall NPK pending",
"createdAt": "2024-03-15T08:00:00.000Z",
"updatedAt": "2026-05-10T14:30:00.000Z"
}
],
"pagination": { "page": 1, "limit": 50, "total": 1, "totalPages": 1 }
}
{
"error": "Forbidden",
"code": "INSUFFICIENT_SCOPE",
"message": "Insufficient permissions. Required scope: crops:read",
"details": {
"requiredScope": "crops:read",
"availableScopes": ["farms:read"]
}
}
GET https://www.wiseyield.co/api/v1/crops
Authentication
Requires a key with thecrops:read scope. See Authentication.
Query parameters
integer
default:"1"
Page number (≥ 1).
integer
default:"20"
Results per page (1–100; values above 100 are clamped to 100).
string
Filter by status:
planned, planted, growing, harvested, failed.string
Filter to crops on a specific farm (UUID).
string
Filter to crops on a specific field (UUID).
string
default:"createdAt"
Sort field:
createdAt, cropType, plantedArea, plantingDate.string
default:"desc"
Sort direction:
asc, desc.Response
array
Array of crop objects.
Show Crop
Show Crop
string
UUID.
string
UUID of the parent farm.
string
UUID of the field this crop is planted on. Required per the Operations Attachment Principle.
string
Free-text crop name (e.g.
"wheat", "date palm").string | null
Free-text variety (e.g.
"Medjool").string | null
UUID linking to the admin Crop Library (preferred over free-text).
string | null
UUID linking to the admin variety record.
string
Numeric string in the farm’s
areaUnit.string | null
ISO 8601.
string | null
ISO 8601.
string | null
ISO 8601. Auto-set when
status transitions to harvested.string | null
One of
winter, summer, autumn, spring, year_round.integer | null
e.g.
2026.string | null
Numeric string (tons).
string | null
Numeric string (tons).
string | null
Numeric string in the farm’s
currency.string | null
Numeric string in
currency. Derived from the crop’s own expense rows, each converted at today’s rate; null when the crop has no expense records.string | null
Numeric string in the farm’s
currency.string | null
Numeric string in
currency. Derived from the crop’s own sale rows, each converted at today’s rate; null when the crop has no sale records.string
ISO-4217 code the
actual* figures are stated in — the farm’s currency, or the currency derived from its country when unset.string
One of
planned, planted, growing, harvested, failed.string | null
Free text, up to 5,000 characters.
string
ISO 8601.
string
ISO 8601.
object
curl 'https://www.wiseyield.co/api/v1/crops?status=growing&limit=50' \
-H "Authorization: Bearer $WISEYIELD_API_KEY"
const res = await fetch(
'https://www.wiseyield.co/api/v1/crops?status=growing&limit=50',
{ headers: { Authorization: `Bearer ${process.env.WISEYIELD_API_KEY}` } }
);
const { data, pagination } = await res.json();
import os, requests
res = requests.get(
'https://www.wiseyield.co/api/v1/crops',
params={'status': 'growing', 'limit': 50},
headers={'Authorization': f"Bearer {os.environ['WISEYIELD_API_KEY']}"},
)
body = res.json()
{
"data": [
{
"id": "33333333-4444-5555-6666-777777777777",
"farmId": "11111111-2222-3333-4444-555555555555",
"fieldId": "88888888-9999-aaaa-bbbb-cccccccccccc",
"cropType": "date palm",
"variety": "Medjool",
"adminCropId": null,
"adminCropVarietyId": null,
"plantedArea": "4.2",
"plantingDate": "2024-03-15T00:00:00.000Z",
"expectedHarvestDate": "2026-10-01T00:00:00.000Z",
"actualHarvestDate": null,
"season": "spring",
"seasonYear": 2024,
"expectedYield": "180",
"actualYield": null,
"estimatedCost": "12000",
"actualCost": "10500",
"estimatedRevenue": "45000",
"actualRevenue": null,
"status": "growing",
"notes": "Drip-irrigated, fall NPK pending",
"createdAt": "2024-03-15T08:00:00.000Z",
"updatedAt": "2026-05-10T14:30:00.000Z"
}
],
"pagination": { "page": 1, "limit": 50, "total": 1, "totalPages": 1 }
}
{
"error": "Forbidden",
"code": "INSUFFICIENT_SCOPE",
"message": "Insufficient permissions. Required scope: crops:read",
"details": {
"requiredScope": "crops:read",
"availableScopes": ["farms:read"]
}
}
Errors
| Status | When |
|---|---|
401 | Missing, malformed, expired, or revoked API key |
403 | Key lacks crops:read scope |
429 | Rate limit reached |
5xx | Server error |