Crop Monitoring Endpoints
PLANET
If you wish to test our Planet Imagery service, you will be required to use THIS GEOMETRY for your testing purposes. If you need to use a different geometry for testing purposes, you will be billed for this usage. Please contact our team on sales@withleaf.io to discuss your options should you require different testing geometry.
All HTTP methods should be prepended by this service's endpoint:
This service has the following endpoints available:
Description | Endpoints |
---|---|
Get all satellite fields | GET /fields |
Get a satellite field | GET /fields/{id} |
Get images of satellite field | GET /fields/{id}/processes |
Get an image of satellite field | GET /fields/{id}/processes/{id} |
Create a satellite field | POST /fields |
Delete a satellite field | DELETE /fields/{id} |
Get subscription for Planet | GET /fields/{id}/subscription |
Reprocess satelite images | POST /fields/{id}/process/{id}/reprocess |
Endpoints
Get all satellite fields
 GET /fields
Returns paged results for all satellite fields registered.
externalId
: external ID used in the field's registrationgeometry
: a valid MultiPolygon GeoJSON object with the geometry of the fieldsort
, the sorting order of the results; can be multi-value, where the first value to be passed will have preference in ordering over the next ones; you can also specify the order asasc
ordesc
withasc
being the default. Example: id, desc- Valid values for sorting are: createdAt, providers and externalId
Request examples
- cURL
- Python
- JavaScript
Response
Get a satellite field
 GET /fields/{id}
Fetches a field entry based on its external id.
id
: external ID used in the field's registrationgeometry
: a valid MultiPolygon GeoJSON object with the geometry of the field
Request examples
- cURL
- Python
- JavaScript
Response
Get images of satellite field
 GET /fields/{id}/processes
Returns images for a given field id
.
We return the following images (tifs are EPSG:4326, pngs are EPSG:3857):
- RGB as tiff and as png
- Colorized NDVI as tiff and as png
- Raw NDVI as tiff
- All bands as tiff.
Check the comparison page to identify the resolution and bands available for each provider.
It is possible to filter the results by a number of different parameters:
Parameter | Type | Description | Default |
---|---|---|---|
startDate | ISO 8601 datetime format | retrieve images taken after this day | - |
endDate | ISO 8601 datetime format | retrieve images taken until this day | - |
startProcessedTimestamp | ISO 8601 datetime format | retrieve images processed by Leaf after this day | - |
endProcessedTimestamp | ISO 8601 datetime format | retrieve images processed by Leaf until this day | - |
maxClouds | double between 0.0 and 100.0 | filter processes with clouds less than or equal to this percentage | 100 |
minCoverage | double between 0.0 and 100.0 | filter processes with coverage greater than or equal to this percentage | 0.0 |
status | string "SUCCESS", "FAILED" or "STARTED" | retrieve images with selected status | SUCCESS |
page | integer | page being fetched | 0 |
size | integer | how many processes (sets of all images) to return per page | 20 |
provider | array of string | sentinel or/and planet | If none is defined, it will created with sentinel only |
Important
If you have just created the satellite field, it may take a moment time for the images to become available.
Request examples
- cURL
- Python
- JavaScript
Response
date
: the date of the satellite imageclouds
: cloud coverage percentage of the field, from 0 to 100provider
: the satellite provider (sentinel or planet) from where this process was created.bucketName
: name of satellite image bucket where the original tile is. Usuallysentinel-s2-l2a
orleaf-planet-images-prd
bucketRegion
: AWS region of original image's bucket. Usuallyeu-central-1
bucketKey
: base path of original satellite imagestatus
: status of the process. It will be eitherSUCCESS
orFAILURE
coverage
: data coverage percentage of the field, from 0 to 100images
: each image in this list will have the following data:url
: URL of the imagedownloadUrl
: URL of the imagetype
: the type of the image. One oftif
,ndvi
,png
andtif_colorized
resolution
: resolution, in meters, of the image. See table below
processedTimestamp
: the timestamp of when the process was processed
Get an image of satellite field
 GET /fields/{id}/processes/{id}
Returns a single process for the field.
Request examples
- cURL
- Python
- JavaScript
Response
Create a satellite field
 POST /fields
Creates a new field.
It will be continuously monitored forever, and new images will arrive based on the provider selected, because each one of them has a different temporal resolution (time it takes for the satellite to go over the same field when orbiting the Earth). If you don't need the field anymore, you can delete the field.
Note
By default, Leaf will return images for your field from the last 30 days (from the moment you create the field).
You can change that by including a "startDate" or a "daysBefore" to the body
There are two ways you can do that:
- set a
startDate
(ISO, "yyyy-mm-dd") meaning Leaf will return all images for your field since this date. - set how many
daysBefore
(an integer greater than or equal to 0) you want to get images from.
Note that they are both optional, but you can not specify both.
Now let's see the Payload
Request body
externalId
: external ID used in the field's registration.geometry
: a valid MultiPolygon GeoJSON object with the geometry of the field.providers
: Specify the satellite imagery source, if none is specified, Sentinel images will be retrived by default.assetTypes
: If theproviders
property containsplanet
you can select whichassetType
will be retrived, which can be more than one. The available values areortho_analytic_8b_sr
,ortho_analytic_8b
,ortho_analytic_8b_xml
,ortho_visual
andortho_udm2
. The default value isortho_analytic_8b_sr
.
Request examples
- cURL
- Python
- JavaScript
field size limit
- the field cannot be larger than 50k hectares (123k acres) and
- cannot have a perimeter bigger than 300km (180 miles).
Sample geometry
If you are looking for a geometry for testing purposes you can use this one.
Restrictions
The satellite field creation will fail if the geometry doesn't fit the Planet requirements listed below:
- The geometry must be valid, it cannot have self-intersection, for example;
- The smallest possible area for each inner ring is 1 m²;
- The maximum number of vertices allowed is 1,500 vertices.
Delete a satellite field
 DELETE /fields/{id}
Deletes the field from our database.
warning
Note that the field deletion is irreversible and all images will be lost.
(But you can always create a new field and get images from the past, as far as you want).
Request examples
- cURL
- Python
- JavaScript
Get subscription for Planet
 GET /fields/{id}/subscription
Get the subscription from Planet. It returns the assetTypes, itemTypes and startDate for a field.
Request examples
- cURL
- Python
- JavaScript
Response
Reprocess satellite images
 POST /fields/{id}/process/{id}/reprocess
Allows reprocessing the satellite images based on a processId
.
Request examples
- cURL
- Python
- JavaScript
Alerts
With Alerts you can be notified when something happens or changes instead of needing to repeatedly query for changes. Leaf Alerts support events that happen within Leaf and events that happen within supported 3rd party software.
List of Crop Monitoring Events
Leaf Crop Monitoring Service can Alert you on these events: list of Crop Monitoring Events