curl -X PUT 'https://www.wiseyield.co/api/v1/farms/11111111.../fields/88888888.../blocks/aaaaaaaa.../plants/ffffffff...' \
-H "Authorization: Bearer $WISEYIELD_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "status": "sick", "notes": "Yellowing fronds — see pic 2026-05-17" }'
{
"data": {
"id": "ffffffff-1111-2222-3333-444444444444",
"status": "sick",
"notes": "Yellowing fronds — see pic 2026-05-17",
"updatedAt": "2026-05-17T17:25:00.000Z"
}
}
{
"error": "Conflict",
"code": "CONFLICT",
"message": "Tag ID \"QR-MDJ-0247\" is already assigned to another plant in this block"
}
Plants
Update plant
Update mutable fields on a plant. Only provided fields are touched.
PUT
/
api
/
v1
/
farms
/
{id}
/
fields
/
{fieldId}
/
blocks
/
{blockId}
/
plants
/
{plantId}
curl -X PUT 'https://www.wiseyield.co/api/v1/farms/11111111.../fields/88888888.../blocks/aaaaaaaa.../plants/ffffffff...' \
-H "Authorization: Bearer $WISEYIELD_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "status": "sick", "notes": "Yellowing fronds — see pic 2026-05-17" }'
{
"data": {
"id": "ffffffff-1111-2222-3333-444444444444",
"status": "sick",
"notes": "Yellowing fronds — see pic 2026-05-17",
"updatedAt": "2026-05-17T17:25:00.000Z"
}
}
{
"error": "Conflict",
"code": "CONFLICT",
"message": "Tag ID \"QR-MDJ-0247\" is already assigned to another plant in this block"
}
PUT https://www.wiseyield.co/api/v1/farms/{id}/fields/{fieldId}/blocks/{blockId}/plants/{plantId}
Authentication
Requires a key with thefields:write scope.
Path parameters
string
required
Farm UUID.
string
required
Field UUID.
string
required
Block UUID.
string
required
Plant UUID.
Request body
All fields are optional. Only fields you include in the body are updated.string
1–100 characters.
string
1–200 characters. Pass
null to clear. Unique within the block.object
{ lat, lng }. Pass null to clear.string
Calendar date as
YYYY-MM-DD. A full ISO 8601 datetime is accepted too, but only its date part is kept. Pass null to clear.string
One of
alive, sick, dead, replaced, removed.string
Up to 2,000 characters. Pass
null to clear.Response
Returns the updated plant wrapped underdata.
curl -X PUT 'https://www.wiseyield.co/api/v1/farms/11111111.../fields/88888888.../blocks/aaaaaaaa.../plants/ffffffff...' \
-H "Authorization: Bearer $WISEYIELD_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "status": "sick", "notes": "Yellowing fronds — see pic 2026-05-17" }'
{
"data": {
"id": "ffffffff-1111-2222-3333-444444444444",
"status": "sick",
"notes": "Yellowing fronds — see pic 2026-05-17",
"updatedAt": "2026-05-17T17:25:00.000Z"
}
}
{
"error": "Conflict",
"code": "CONFLICT",
"message": "Tag ID \"QR-MDJ-0247\" is already assigned to another plant in this block"
}
Errors
| Status | When |
|---|---|
400 INVALID_ID | Any path UUID is malformed |
400 VALIDATION_ERROR | Body validation failed |
401 | Missing, malformed, expired, or revoked API key |
403 INSUFFICIENT_SCOPE | Key lacks fields:write scope |
404 NOT_FOUND | Farm, field, block, or plant doesn’t exist or belongs to another user |
409 CONFLICT | tagId collision with another plant in the same block |
429 RATE_LIMIT_EXCEEDED | Per-user rate limit reached |
5xx | Server error |