Climate FieldView Platform APIs
Last Modified: Wed Jan 4 12:47:29 UTC 2023
All endpoints are only accessible via HTTPS.
-
All API endpoints are located at
https://platform.climate.com(e.g.https://platform.climate.com/v4/fields). -
The authorization token endpoint is located at
https://api.climate.com/api/oauth/token.
Troubleshooting
X-Http-Request-Id response header will be returned on every call,
successful or not. If you experience an issue with our api and need
to contact technical support, please supply the value of the X-Http-Request-Id
header along with an approximate time of when the request was made.
Request Limits
When you’re onboarded to Climate’s API platform, your x-api-key is assigned a custom usage plan. Usage plans are unique to each partner and have the following key attributes:
-
Throttling information
- burstLimit: Maximum rate limit over a period ranging from 1 second to a few seconds
- rateLimit: A steady-state rate limit
-
Quota information
- Limit: The maximum number of requests that can be made in a given month
When the request rate threshold is exceeded, a 429 response code is returned. Optionally, the header may be returned:
Following are examples of rate limit errors:
- Rate limit exceeded:
HTTP/1.1 429
Content-Type: application/json
Content-Length: 32
{"message":"Too Many Requests"}
- Quota exhausted:
HTTP/1.1 429
Content-Type: application/json
Content-Length: 29
Pagination
Pagination is performed via headers. Any request which returns a "results"
array may be paginated. The following figure shows how query results are laid out with
X-Limit=4 and no filter applied.

-
If there are no results, a response code of
304will be returned. -
If the response is the last set of results, a response code of
200or206will be returned. -
If there are more results, a response code of
206will be returned. -
If
X-Next-Tokenis provided in the request headers but the token has expired, a response code of409will be returned. This is only applicable for some endpoints; see specific endpoint documentation below.
X-Limit
The page size can be controlled with the X-Limit header. Valid values are
1-100 and defaults to 100.
X-Next-Token
If the results are paginated, a response header of X-Next-Token will be
returned. Use the associated value in the subsequent request (via the X-Next-Token
request header) to retrieve the next page. The following sequence diagram shows how to
use X-Next-Token to fetch all the records.
Chunked Uploads
Uploads larger than 5MiB (5242880 bytes) must be done in 5MiB chunks
(with the exception of the final chunk). Each chunk request MUST contain a
Content-Range header specifying the portion of the upload, and a Content-Type
header specifying binary content type (application/octet-stream). Range
uploads must be contiguous. The maximum upload size is capped at 500MiB (524288000 bytes).
Chunked Downloads
Downloads larger than 5MiB (5242880 bytes) must be done in 1-5MiB
chunks (with the exception of the final chunk, which may be less than 1MiB).
Each chunk request MUST contain a Range header specifying the requested portion of the download,
and an Accept header specifying binary and json content types (application/octet-stream,application/json)
or all content types (*/*).
Drivers
If you need drivers to process agronomic data, download the ADAPT plugin below. We only support the plugin in the Windows environment, minimum is Windows 7 SP1.
For asPlanted, asHarvested and asApplied data:
Release notes can be found .
Download and use of the ADAPT plugin means that you agree to the EULA for use of the ADAPT plugin.
Please review the (last updated on June 6th, 2019) before download and use of the ADAPT plugin.
For more information, please refer to:
Sample Test Data
Sample agronomic data:
To upload the sample data to your account, please follow the instructions in this .
Sample soil data:
{"message":"Limit Exceeded"}- Homepage
- https://api.apis.guru/v2/specs/climate.com/4.0.11.json
- Provider
- climate.com
- OpenAPI version
- 3.0.0
- Spec (JSON)
- https://api.apis.guru/v2/specs/climate.com/4.0.11/openapi.json
- Spec (YAML)
- https://api.apis.guru/v2/specs/climate.com/4.0.11/openapi.yaml
Tools (28)
Extracted live via the executor SDK.
-
boundaries.fetchBoundariesRetrieve multiple Boundaries (up to 10 per request).
-
boundaries.fetchBoundaryByIdRetrieve a Boundary by ID.
-
boundaries.uploadBoundaryUpload a Boundary entry by passing the geometry of the boundary. This will store the boundary but will not create field in Climate FieldView and will not link to an existing field in Climate FieldView. This is restricted to callers with boundaries:write scope. To upload a field boundary for field creation in Climate FieldView, please use POST /v4/uploads.
-
exports.fetchExportContentsByIdDownloads larger than
5MiB(5242880 bytes) in size must be downloaded in chunks no larger than5MiB(5242880 bytes) and no smaller than1MiB(1048576 bytes). The last chunk could be less than1MiB(1048576 bytes). -
exports.fetchExportStatusByIdCheck the status of an Export by ID.
-
exports.postExportStep one in requesting a data product. The method will return an Export ID which the caller will use in subsequent
GETrequests. The followingcontentTypesmay be requested:-
application/vnd.climate.acrsi.geojson (Beta) Exports the planting activities accessible by the authenticated user and optionally filtered by resource owner as a .
The export request definition must contain the following properties:
- plantingStartDate
- plantingEndDate
- resourceOwnerId
Requires
exports:readandplantingActivitySummary:readscope. -
application/vnd.climate.harvest.geojson Exports the harvesting activities accessible by the authenticated user and optionally filtered by resource owner as a .
The export request definition must contain the following properties:
- harvestStartDate
- harvestEndDate
- resourceOwnerId
Requires
exports:readandplantingActivitySummary:readscope.
-
-
farmOrganizations.fetchFarmOrganizationByTypeAndIdRetrieve a given farm organization by organization type and ID.
-
fields.fetchAllFieldsRetrieve all fields the authenticated user has access to, including fields shared with the authenticated user from other resource owners. Filter the results by field name if the
fieldNamequery parameter is specified. A 409 will be returned if the X-Next-Token has expired. When receiving a 409, the client should discard the X-Next-Token, discard all currently persisted fields for the user, and re-fetch fields from /fields/all. -
fields.fetchFieldByIdRetrieve a given Field by ID.
-
fields.fetchFieldsRetrieve list of Fields. Filter the results by field name if the
fieldNamequery parameter is specified. -
layers.getV4LayersAsAppliedRetrieve a list of application activities. The id in the response is used for GET /v4/layers/asApplied/{activityId}/contents.
-
layers.getV4LayersAsAppliedActivityIdContentsRetrieve an individual application activity by id. Ids are retrieved via the /layers/asApplied route. Downloads larger than
5MiB(5242880 bytes) in size, must be downloaded in chunks no larger than5MiB(5242880 bytes) and no smaller than1MiB(1048576 bytes). The last chunk could be less than1MiB(1048576 bytes). The data is compressed using .zip format. -
layers.getV4LayersAsHarvestedRetrieve a list of harvest activities. The id in the response is used for GET /v4/layers/asHarvested/{activityId}/contents.
-
layers.getV4LayersAsHarvestedActivityIdContentsRetrieve an individual harvest activity by id. Ids are retrieved via the /layers/asHarvested route. Downloads larger than
5MiB(5242880 bytes) in size, must be downloaded in chunks no larger than5MiB(5242880 bytes) and no smaller than1MiB(1048576 bytes). The last chunk could be less than1MiB(1048576 bytes). The data is compressed using .zip format. -
layers.getV4LayersAsPlantedRetrieve a list of planting activities. The id in the response is used for GET /v4/layers/asPlanted/{activityId}/contents.
-
layers.getV4LayersAsPlantedActivityIdContentsRetrieve an individual planting activity by id. Ids are retrieved via the /layers/asPlanted route. Downloads larger than
5MiB(5242880 bytes) in size, must be downloaded in chunks no larger than5MiB(5242880 bytes) and no smaller than1MiB(1048576 bytes). The last chunk could be less than1MiB(1048576 bytes). The data is compressed using .zip format. -
layers.getV4LayersScoutingObservationsRetrieve a list of scouting observations created or updated by the user identified by the Authorization header.
-
layers.getV4LayersScoutingObservationsScoutingObservationIdRetrieve an individual scouting observation by id. Ids are retrieved via the /layers/scoutingObservations route.
-
layers.getV4LayersScoutingObservationsScoutingObservationIdAttachmentsRetrieve attachments associated with a given scouting observation. Photos added to scouting notes in the FieldView app are capped to 20MB, and we won’t store photos larger than that in a scouting note.
-
layers.getV4LayersScoutingObservationsScoutingObservationIdAttachmentsAttachmentIdContentsPhotos added to scouting notes in the FieldView app are capped to
20MiB(20971520 bytes), and we won’t store photos larger than that in a scouting note. Downloads larger than5MiB(5242880 bytes) in size, must be downloaded in chunks no larger than5MiB(5242880 bytes) and no smaller than1MiB(1048576 bytes). The last chunk could be less than1MiB(1048576 bytes). -
operations.fetchOperationsRetrieve the operations accessible to the authenticated user. Filter the results by resource owner if the
resourceOwnerIdquery parameter is specified. -
resourceOwners.getResourceOwnerRetrieve a resource owner for the given
resourceOwnerId. -
uploads.chunkedUploadSend chunked data for an Upload.
-
uploads.fetchUploadStatusByIdCheck the status of an Upload by ID.
-
uploads.fetchUploadStatusesCheck the status of multiple Uploads (up to 100 per request).
-
uploads.postUploadStep one in uploading a data product. The method will return an Upload ID which the caller will use in subsequent
PUTrequests. The followingcontentTypesmay be uploaded:image/vnd.climate.thermal.geotiff
__image/vnd.climate.ndvi.geotiff__
__image/vnd.climate.rgb.geotiff__
__image/vnd.climate.rgb-nir.geotiff__
__image/vnd.climate.rgb-cir.geotiff__
__application/vnd.climate.rx.planting.shp__
__application/vnd.climate.prescription.zones.shp__
__application/vnd.climate.modus.xml__
__application/vnd.climate.stand-count.geojson__
__application/vnd.climate.weed-count.geojson__
__application/vnd.climate.as-applied.zip__
__application/vnd.climate.as-planted.zip__
__application/vnd.climate.as-harvested.zip__
Allows for the upload of a thermal image. The image is a single band geotiff with 64 bit signed floating point values in degrees Celsius. The Coordinate Reference System (CRS) must be UTM with WGS84 datum. The following metadata entries are required to be embedded in the geotiff: * acquisitionStartDate - ISO8601 date * acquisitionEndDate - ISO8601 date * isCalibrated - boolean The following metadata entries are optional: * sourceId - uuid referencing the asset in the partner's system * fieldId - uuid referencing a field in the Climate system * boundaryId - uuid referencing a boundary in the Climate system * brandId - uuid referencing a partner's branding in the Climate system * name - name of the layer. The maximum number of characters that will be accepted as input is 20. Requires either imagery:write or platform scope.Allows for the upload of a NDVI image. The image is a single band geotiff with 64 bit signed floating point values in the range of -1 to 1 inclusive. The Coordinate Reference System (CRS) must be UTM with WGS84 datum. The following metadata entries are required to be embedded in the geotiff: * acquisitionStartDate - ISO8601 date * acquisitionEndDate - ISO8601 date The following metadata entries are optional: * sourceId - uuid referencing the asset in the partner's system * fieldId - uuid referencing a field in the Climate system * boundaryId - uuid referencing a boundary in the Climate system * brandId - uuid referencing a partner's branding in the Climate system * name - name of the layer. The maximum number of characters that will be accepted as input is 20. Requires either imagery:write or platform scope.Allows for the upload of a true color image. The image is a multi band geotiff with 24-bit composite values. Each band is 8 bits with values in the range of 0 to 255. The Coordinate Reference System (CRS) must be UTM with WGS84 datum. The geotiff must contain 3 bands in the order Red, Green, Blue. The following metadata entries are required to be embedded in the geotiff: * acquisitionStartDate - ISO8601 date * acquisitionEndDate - ISO8601 date * isCalibrated - boolean The following metadata entries are optional: * sourceId - uuid referencing the asset in the partner's system * fieldId - uuid referencing a field in the Climate system * boundaryId - uuid referencing a boundary in the Climate system * brandId - uuid referencing a partner's branding in the Climate system * reflectanceComputeMethod - either TOA or GROUND * name - name of the layer. The maximum number of characters that will be accepted as input is 20. Requires either imagery:write or platform scope.Allows for the upload of a Near Infrared (NIR) image. The Coordinate Reference System (CRS) must be UTM with WGS84 datum. The following metadata entries are required to be embedded in the geotiff: * acquisitionStartDate - ISO8601 date * acquisitionEndDate - ISO8601 date * isCalibrated - boolean The following metadata entries are optional: * sourceId - uuid referencing the asset in the partner's system * fieldId - uuid referencing a field in the Climate system * boundaryId - uuid referencing a boundary in the Climate system * brandId - uuid referencing a partner's branding in the Climate system * reflectanceComputeMethod - either TOA or GROUND * name - name of the layer. The maximum number of characters that will be accepted as input is 20. Requires either imagery:write or platform scope.Allows for the upload of a Color Infrared (CIR) image. The Coordinate Reference System (CRS) must be UTM with WGS84 datum. The following metadata entries are required to be embedded in the geotiff: * acquisitionStartDate - ISO8601 date * acquisitionEndDate - ISO8601 date * isCalibrated - boolean The following metadata entries are optional: * sourceId - uuid referencing the asset in the partner's system * fieldId - uuid referencing a field in the Climate system * boundaryId - uuid referencing a boundary in the Climate system * brandId - uuid referencing a partner's branding in the Climate system * reflectanceComputeMethod - either TOA or GROUND * name - name of the layer. The maximum number of characters that will be accepted as input is 20. Requires either imagery:write or platform scope.Allows for the upload of a planting prescription in shapefile format. The upload must be an archive in the zip format. It should contain one and only one of each of the following file types: * .shp * .shx * .dbf All files with the above suffixes must have the same prefix, ie Back40.shp, Back40.shx and Back40.dbf. Requires either rx:write or platform scope.Allows for the upload of a zones prescription in shapefile format. The upload must be an archive in the zip format. It should contain one and only one of each of the following file types: * .shp * .shx * .dbf All files with the above suffixes must have the same prefix, ie Back40.shp, Back40.shx and Back40.dbf. The following metadata entries are required: * fieldId - field identifier for prescription zones. Requires either rxZones:write or platform scope.Allows for the upload of a soil sampling file in the modus 1.0 format with some restrictions. The upload must be a single xml file. The following elements are required to be present in the modus file. * EventCode - Max length of 64 bytes * EventDate - Must be in ISO8601 * SoilSample - Has a maxOccurs of 20k * Depth - Has a maxOccurs of 50 * LabName - Must be non-empty. * StartingDepth - 0 to 36 inclusive, default 0 * EndingDepth - 1 - 36 inclusive, default 1 * ColumnDepth * DepthUnit - must be inches * Geometry - point in wgs84 Requires the soil:write scope.Allows for the upload of a valid [geojson feature collection](https://tools.ietf.org/html/rfc7946#section-3.3). Each feature in the collection must contain the following entry in its properties section: * StandPPA - A count of the number of plants per acre: Additionally, the type field of each feature's geometry field must be: * Point Requires `imagery:write` scope.Allows for the upload of a valid [geojson feature collection](https://tools.ietf.org/html/rfc7946#section-3.3). Each feature in the collection must contain the following entry in its properties section: * StandPPA - A count of the number of plants per acre: Additionally, the type field of each feature's geometry field must be: * Point Requires `imagery:write` scope.Allows for the upload of a valid application data [supported formats](https://support.climate.com/kt#/kA02A000000DjvOSAS/en_US). The following metadata entries are required: * fileName - name of the file being uploaded. The following metadata entries are optional: * resourceOwner - the grower's account email, where dealer/partner wants to upload data. As a prerequisite the grower must share their operation with the dealer/partner. Requires `asApplied:write` scope.Allows for the upload of a valid planting data [supported formats](https://support.climate.com/kt#/kA02A000000DjvOSAS/en_US). The following metadata entries are required: * fileName - name of the file being uploaded. The following metadata entries are optional: * resourceOwner - the grower's account email, where dealer/partner wants to upload data. As a prerequisite the grower must share their operation with the dealer/partner. Requires `asPlanted:write` scope.Allows for the upload of a valid harvest data [supported formats](https://support.climate.com/kt#/kA02A000000DjvOSAS/en_US). The following metadata entries are required: * fileName - name of the file being uploaded. The following metadata entries are optional: * resourceOwner - the grower's account email, where dealer/partner wants to upload data. As a prerequisite the grower must share their operation with the dealer/partner. Requires `asHarvested:write` scope. -
openapi.previewSpecPreview an OpenAPI document before adding it as a source
-
openapi.addSourceAdd an OpenAPI source and register its operations as tools