Map tile for a render preset
const url = 'https://api.satellitedata.net/v1/tiles/ndvi/WebMercatorQuad/12/987/1474.png?collection=optical-sr&datetime=2026-06-01T00%3A00%3A00Z%2F2026-08-31T23%3A59%3A59Z&maxCloudCoverage=40&harmonize=bandpass_adjusted&tilesize=256';const options = {method: 'GET', headers: {'If-None-Match': '"r3-9f2c1a"'}};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request GET \ --url 'https://api.satellitedata.net/v1/tiles/ndvi/WebMercatorQuad/12/987/1474.png?collection=optical-sr&datetime=2026-06-01T00%3A00%3A00Z%2F2026-08-31T23%3A59%3A59Z&maxCloudCoverage=40&harmonize=bandpass_adjusted&tilesize=256' \ --header 'If-None-Match: "r3-9f2c1a"'Renders one map tile of a preset’s mosaic for a time window. The CloudFront cache answers most requests; an origin render reads the scenes chosen by mosaickingOrder until the tile is full. Anonymous callers get preset tiles under a per-IP limit; keyed callers pay units only on origin renders. Without a credential, only responses already in the CloudFront cache are served; a miss returns 401 render-requires-credential. A guest token, key or session renders misses and is charged units.
Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Path Parameters
Section titled “Path Parameters”Render preset id from GET /v1/presets.
Example
ndviOGC tile matrix set id.
Example
WebMercatorQuadZoom level (tile matrix).
Example
12Tile column.
Example
987Tile row.
Example
1474Tile format. png keeps transparency for masked pixels.
Example
pngQuery Parameters
Section titled “Query Parameters”Collection to render instead of the preset’s default; must be in the preset’s collections list.
Example
optical-srRFC 3339 instant or interval; an open end is written .. .
Example
2026-06-01T00:00:00Z/2026-08-31T23:59:59ZScene cloud cover ceiling; overrides the preset’s value.
Example
40Harmonization level; default bandpass_adjusted on optical-sr, offset_removed elsewhere.
Example
bandpass_adjustedTile edge in pixels. 512 costs four times the units of 256.
Example
256Header Parameters
Section titled “Header Parameters”ETag from an earlier response; a match returns 304.
Example
"r3-9f2c1a"Responses
Section titled “Responses”Tile image. Masked and empty pixels are transparent in PNG and WebP.
Headers
Section titled “Headers”Request id for support and logs.
Example
01JQ7Z3M8R5V2W6X9Y0A1B2C3DEntity tag; includes the render version.
Example
"r3-9f2c1a"Caching policy for CloudFront and browsers.
Example
public, max-age=3600, s-maxage=2592000, stale-if-error=604800Units charged for this response; 0 for cache hits and free routes.
Example
1.333Credit lines for the data in the response, separated by semicolons.
Example
Contains modified Copernicus Sentinel data 2026; Landsat data courtesy of the U.S. Geological SurveyThe ETag matches; the cached copy is current.
Headers
Section titled “Headers”Entity tag; includes the render version.
Example
"r3-9f2c1a"Caching policy for CloudFront and browsers.
Example
public, max-age=3600, s-maxage=2592000, stale-if-error=604800Zoom outside the preset range, an unknown parameter or a collection the preset does not accept.
RFC 9457 problem details. Every 4xx and 5xx response uses this shape with media type application/problem+json. The type URL opens a documentation page that explains the cause and the fix.
object
URL of the documentation page for this problem type, stable for the life of /v1.
Short summary of the problem type. It does not change between occurrences.
HTTP status code, repeated for clients that lose the status line.
Explanation specific to this occurrence, written for a developer.
Path of the request that failed.
Machine-readable problem code; equals the last path segment of type.
Request id, also sent in X-Request-Id. Quote it in support requests.
Field-level validation failures, present on 400 and 422.
One field-level failure.
object
JSON Pointer (RFC 6901) into the request body, or the query parameter name.
What is wrong with that member.
Seconds until the request can succeed; equals the Retry-After header.
The limit that was hit and the value requested, for example maxWidth and requestedWidth.
object
Units the request would have cost, computed before execution.
OAuth 2.0 error code (RFC 6749 section 5.2). Present only on /oauth/token responses.
OAuth 2.0 error description. Present only on /oauth/token responses.
Copy of detail for openEO clients, which read message. Present only on /v1/openeo routes.
Example
{ "type": "https://docs.satellitedata.net/problems/zoom-out-of-range", "title": "Zoom out of range", "status": 400, "detail": "Preset ndvi serves zoom 8 to 14; got 16.", "instance": "/v1/tiles/ndvi/WebMercatorQuad/16/15795/23584.png", "code": "zoom-out-of-range", "requestId": "01JQ7Z3M8R5V2W6X9Y0A1B2C3D", "limits": { "minzoom": 8, "maxzoom": 14, "requested": 16 }}Headers
Section titled “Headers”Request id for support and logs.
Example
01JQ7Z3M8R5V2W6X9Y0A1B2C3DThe API key or bearer token is missing, unknown, revoked or expired.
RFC 9457 problem details. Every 4xx and 5xx response uses this shape with media type application/problem+json. The type URL opens a documentation page that explains the cause and the fix.
object
URL of the documentation page for this problem type, stable for the life of /v1.
Short summary of the problem type. It does not change between occurrences.
HTTP status code, repeated for clients that lose the status line.
Explanation specific to this occurrence, written for a developer.
Path of the request that failed.
Machine-readable problem code; equals the last path segment of type.
Request id, also sent in X-Request-Id. Quote it in support requests.
Field-level validation failures, present on 400 and 422.
One field-level failure.
object
JSON Pointer (RFC 6901) into the request body, or the query parameter name.
What is wrong with that member.
Seconds until the request can succeed; equals the Retry-After header.
The limit that was hit and the value requested, for example maxWidth and requestedWidth.
object
Units the request would have cost, computed before execution.
OAuth 2.0 error code (RFC 6749 section 5.2). Present only on /oauth/token responses.
OAuth 2.0 error description. Present only on /oauth/token responses.
Copy of detail for openEO clients, which read message. Present only on /v1/openeo routes.
Example
{ "type": "https://docs.satellitedata.net/problems/invalid-key", "title": "Invalid or missing credentials", "status": 401, "detail": "Send a verified key in X-API-Key or a bearer token from /oauth/token.", "instance": "/v1/process", "code": "invalid-key", "requestId": "01JQ7Z3M8R5V2W6X9Y0A1B2C3D"}Headers
Section titled “Headers”Request id for support and logs.
Example
01JQ7Z3M8R5V2W6X9Y0A1B2C3DChallenge naming the accepted schemes.
Example
Bearer realm="satellitedata.net", ApiKey header="X-API-Key"No resource has this id.
RFC 9457 problem details. Every 4xx and 5xx response uses this shape with media type application/problem+json. The type URL opens a documentation page that explains the cause and the fix.
object
URL of the documentation page for this problem type, stable for the life of /v1.
Short summary of the problem type. It does not change between occurrences.
HTTP status code, repeated for clients that lose the status line.
Explanation specific to this occurrence, written for a developer.
Path of the request that failed.
Machine-readable problem code; equals the last path segment of type.
Request id, also sent in X-Request-Id. Quote it in support requests.
Field-level validation failures, present on 400 and 422.
One field-level failure.
object
JSON Pointer (RFC 6901) into the request body, or the query parameter name.
What is wrong with that member.
Seconds until the request can succeed; equals the Retry-After header.
The limit that was hit and the value requested, for example maxWidth and requestedWidth.
object
Units the request would have cost, computed before execution.
OAuth 2.0 error code (RFC 6749 section 5.2). Present only on /oauth/token responses.
OAuth 2.0 error description. Present only on /oauth/token responses.
Copy of detail for openEO clients, which read message. Present only on /v1/openeo routes.
Example
{ "type": "https://docs.satellitedata.net/problems/not-found", "title": "Not found", "status": 404, "detail": "No item S2C_T15TVK_20260714T170911_L2X in collection sentinel-2-l2a.", "instance": "/v1/collections/sentinel-2-l2a/items/S2C_T15TVK_20260714T170911_L2X", "code": "not-found", "requestId": "01JQ7Z3M8R5V2W6X9Y0A1B2C3D"}Headers
Section titled “Headers”Request id for support and logs.
Example
01JQ7Z3M8R5V2W6X9Y0A1B2C3DA per-minute, concurrency, monthly or per-IP limit was hit. Retry-After says when to retry.
RFC 9457 problem details. Every 4xx and 5xx response uses this shape with media type application/problem+json. The type URL opens a documentation page that explains the cause and the fix.
object
URL of the documentation page for this problem type, stable for the life of /v1.
Short summary of the problem type. It does not change between occurrences.
HTTP status code, repeated for clients that lose the status line.
Explanation specific to this occurrence, written for a developer.
Path of the request that failed.
Machine-readable problem code; equals the last path segment of type.
Request id, also sent in X-Request-Id. Quote it in support requests.
Field-level validation failures, present on 400 and 422.
One field-level failure.
object
JSON Pointer (RFC 6901) into the request body, or the query parameter name.
What is wrong with that member.
Seconds until the request can succeed; equals the Retry-After header.
The limit that was hit and the value requested, for example maxWidth and requestedWidth.
object
Units the request would have cost, computed before execution.
OAuth 2.0 error code (RFC 6749 section 5.2). Present only on /oauth/token responses.
OAuth 2.0 error description. Present only on /oauth/token responses.
Copy of detail for openEO clients, which read message. Present only on /v1/openeo routes.
Example
{ "type": "https://docs.satellitedata.net/problems/rate-limited", "title": "Rate limit exceeded", "status": 429, "detail": "This key spent 300 of its 300 units in the current minute.", "instance": "/v1/process", "code": "rate-limited", "requestId": "01JQ7Z3M8R5V2W6X9Y0A1B2C3D", "retryAfter": 17, "limits": { "unitsPerMinute": 300, "unitsSpentThisMinute": 300 }}Headers
Section titled “Headers”Request id for support and logs.
Example
01JQ7Z3M8R5V2W6X9Y0A1B2C3DSeconds to wait before retrying.
Example
17Remaining units and seconds to reset in the current window (IETF RateLimit header draft).
Example
"units";r=287;t=41Quota policy of the caller (IETF RateLimit header draft).
Example
"units";q=300;w=60An unexpected server error. No units are charged.
RFC 9457 problem details. Every 4xx and 5xx response uses this shape with media type application/problem+json. The type URL opens a documentation page that explains the cause and the fix.
object
URL of the documentation page for this problem type, stable for the life of /v1.
Short summary of the problem type. It does not change between occurrences.
HTTP status code, repeated for clients that lose the status line.
Explanation specific to this occurrence, written for a developer.
Path of the request that failed.
Machine-readable problem code; equals the last path segment of type.
Request id, also sent in X-Request-Id. Quote it in support requests.
Field-level validation failures, present on 400 and 422.
One field-level failure.
object
JSON Pointer (RFC 6901) into the request body, or the query parameter name.
What is wrong with that member.
Seconds until the request can succeed; equals the Retry-After header.
The limit that was hit and the value requested, for example maxWidth and requestedWidth.
object
Units the request would have cost, computed before execution.
OAuth 2.0 error code (RFC 6749 section 5.2). Present only on /oauth/token responses.
OAuth 2.0 error description. Present only on /oauth/token responses.
Copy of detail for openEO clients, which read message. Present only on /v1/openeo routes.
Example
{ "type": "https://docs.satellitedata.net/problems/internal", "title": "Internal error", "status": 500, "detail": "The request failed on our side and was logged. No units were charged.", "instance": "/v1/process", "code": "internal", "requestId": "01JQ7Z3M8R5V2W6X9Y0A1B2C3D"}Headers
Section titled “Headers”Request id for support and logs.
Example
01JQ7Z3M8R5V2W6X9Y0A1B2C3DAn upstream catalog or bucket is unavailable, or the service is in maintenance. No units are charged.
RFC 9457 problem details. Every 4xx and 5xx response uses this shape with media type application/problem+json. The type URL opens a documentation page that explains the cause and the fix.
object
URL of the documentation page for this problem type, stable for the life of /v1.
Short summary of the problem type. It does not change between occurrences.
HTTP status code, repeated for clients that lose the status line.
Explanation specific to this occurrence, written for a developer.
Path of the request that failed.
Machine-readable problem code; equals the last path segment of type.
Request id, also sent in X-Request-Id. Quote it in support requests.
Field-level validation failures, present on 400 and 422.
One field-level failure.
object
JSON Pointer (RFC 6901) into the request body, or the query parameter name.
What is wrong with that member.
Seconds until the request can succeed; equals the Retry-After header.
The limit that was hit and the value requested, for example maxWidth and requestedWidth.
object
Units the request would have cost, computed before execution.
OAuth 2.0 error code (RFC 6749 section 5.2). Present only on /oauth/token responses.
OAuth 2.0 error description. Present only on /oauth/token responses.
Copy of detail for openEO clients, which read message. Present only on /v1/openeo routes.
Example
{ "type": "https://docs.satellitedata.net/problems/upstream-unavailable", "title": "Upstream unavailable", "status": 503, "detail": "NASA Earthdata returned 503 for the HLS credentials endpoint; HLS scenes are temporarily unavailable.", "instance": "/v1/process", "code": "upstream-unavailable", "requestId": "01JQ7Z3M8R5V2W6X9Y0A1B2C3D", "retryAfter": 120}Headers
Section titled “Headers”Request id for support and logs.
Example
01JQ7Z3M8R5V2W6X9Y0A1B2C3DSeconds to wait before retrying.
Example
17The render did not finish within the 29-second API Gateway limit. No units are charged.
RFC 9457 problem details. Every 4xx and 5xx response uses this shape with media type application/problem+json. The type URL opens a documentation page that explains the cause and the fix.
object
URL of the documentation page for this problem type, stable for the life of /v1.
Short summary of the problem type. It does not change between occurrences.
HTTP status code, repeated for clients that lose the status line.
Explanation specific to this occurrence, written for a developer.
Path of the request that failed.
Machine-readable problem code; equals the last path segment of type.
Request id, also sent in X-Request-Id. Quote it in support requests.
Field-level validation failures, present on 400 and 422.
One field-level failure.
object
JSON Pointer (RFC 6901) into the request body, or the query parameter name.
What is wrong with that member.
Seconds until the request can succeed; equals the Retry-After header.
The limit that was hit and the value requested, for example maxWidth and requestedWidth.
object
Units the request would have cost, computed before execution.
OAuth 2.0 error code (RFC 6749 section 5.2). Present only on /oauth/token responses.
OAuth 2.0 error description. Present only on /oauth/token responses.
Copy of detail for openEO clients, which read message. Present only on /v1/openeo routes.
Example
{ "type": "https://docs.satellitedata.net/problems/render-timeout", "title": "Render timed out", "status": 504, "detail": "The render read 41 scenes and did not finish in 29 seconds. Narrow the time range or lower the output size.", "instance": "/v1/process", "code": "render-timeout", "requestId": "01JQ7Z3M8R5V2W6X9Y0A1B2C3D"}Headers
Section titled “Headers”Request id for support and logs.
Example
01JQ7Z3M8R5V2W6X9Y0A1B2C3D