Use the growers endpoints to create or manage grower records and to bulk-enable preview fields for onboarding. This page is the narrow reference for grower-specific operations, while farms and fields live in the broader fields reference.
For conceptual background, see Growers.
Base URL
https://api.withleaf.io/services/fields/api
Endpoints
| Endpoint | Method | Path |
|---|
| Get all growers | GET | /growers |
| Get a grower | GET | /users/{leafUserId}/growers/{id} |
| Create a grower | POST | /users/{leafUserId}/growers |
| Update a grower | PUT | /users/{leafUserId}/growers/{id} |
| Enable preview fields by grower | POST | /growers/enableSync |
Get all growers
GET /growers
Returns a paginated list of growers available to the authenticated API owner. Use leafUserId to narrow the list to one Leaf user.
Parameters
| Parameter | Type | Description |
|---|
leafUserId | string (UUID) | Filter by Leaf user. |
provider | string | Filter by provider name (JohnDeere, ClimateFieldView, CNHI, Trimble). |
name | string | Filter by grower name. |
providerOrganizationId | string | Filter by the organization ID on the provider side. |
providerCompanyId | string | Filter by the company ID on the provider side. |
providerGrowerId | string | Filter by the grower ID on the provider side. |
page | integer | Page number (default 0). |
size | integer | Page size (default 20, max 100). |
sort | string | Sorting order with optional ,asc or ,desc suffix. |
The default page size is 20 when page and size are not set.
Request
curl -X GET \
-H 'Authorization: Bearer YOUR_TOKEN' \
'https://api.withleaf.io/services/fields/api/growers?leafUserId=1d3ecb0f-bf3d-42db-aae6-8c45c045d28c'
Response
[
{
"id": 873300016,
"name": "1Grower",
"leafUserId": "1d3ecb0f-bf3d-42db-aae6-8c45c045d28c",
"providerName": "JohnDeere",
"providerId": 2,
"providerGrowerId": "1Grower",
"farmIds": [],
"createdTime": "2023-06-06T03:31:39.966630Z",
"updatedTime": "2023-06-07T20:01:14.814346Z"
}
]
For John Deere, growers correspond to John Deere “Clients.” The name property comes directly from the Client name.
Get a grower
GET /users/{leafUserId}/growers/{id}
Returns a single grower by ID.
Parameters
| Parameter | Type | Description |
|---|
leafUserId | path (UUID) | The Leaf user ID. |
id | path (integer) | The grower ID. |
Request
curl -X GET \
-H 'Authorization: Bearer YOUR_TOKEN' \
'https://api.withleaf.io/services/fields/api/users/1d3ecb0f-bf3d-42db-aae6-8c45c045d28c/growers/873300016'
Response
{
"id": 873300016,
"name": "1Grower",
"leafUserId": "1d3ecb0f-bf3d-42db-aae6-8c45c045d28c",
"providerName": "JohnDeere",
"providerId": 2,
"providerGrowerId": "1Grower",
"farmIds": [],
"createdTime": "2023-06-06T03:31:39.966630Z",
"updatedTime": "2023-06-07T20:01:14.814346Z"
}
Create a grower
POST /users/{leafUserId}/growers
Creates a grower for the specified Leaf user. Leaf assigns an auto-generated integer ID.
Parameters
| Parameter | Type | Description |
|---|
leafUserId | path (UUID) | The Leaf user ID. |
Request body
{
"name": "Smith Farms"
}
Only the name field is accepted.
Request
curl -X POST \
-H 'Authorization: Bearer YOUR_TOKEN' \
-H 'Content-Type: application/json' \
-d '{"name":"Smith Farms"}' \
'https://api.withleaf.io/services/fields/api/users/{leafUserId}/growers'
Response
Returns the created grower object.
Update a grower
PUT /users/{leafUserId}/growers/{id}
Updates the grower’s name.
Parameters
| Parameter | Type | Description |
|---|
leafUserId | path (UUID) | The Leaf user ID. |
id | path (integer) | The grower ID. |
Request body
{
"name": "Updated Grower Name"
}
Request
curl -X PUT \
-H 'Authorization: Bearer YOUR_TOKEN' \
-H 'Content-Type: application/json' \
-d '{"name":"Updated Grower Name"}' \
'https://api.withleaf.io/services/fields/api/users/{leafUserId}/growers/{id}'
Response
Returns the updated grower object.
Enable preview fields by grower
POST /growers/enableSync
Enables sync for John Deere fields in PREVIEW status under the specified growers. Matching fields are moved to WAITING and queued for sync.
Use this when the customDataSync configuration is enabled. This is faster than enabling fields individually when you want to onboard an entire grower.
Request body
{
"growerIds": [873300016, 873300017]
}
Request
curl -X POST \
-H 'Authorization: Bearer YOUR_TOKEN' \
-H 'Content-Type: application/json' \
-d '{"growerIds":[873300016,873300017]}' \
'https://api.withleaf.io/services/fields/api/growers/enableSync'
Response
{
"affectedFieldIds": [
"field-id-1",
"field-id-2"
]
}