Queue a process request as a background job
const url = 'https://api.satellitedata.net/v1/process/jobs';const options = { method: 'POST', headers: {'X-API-Key': '<X-API-Key>', 'Content-Type': 'application/json'}, body: '{"input":{"bounds":{"bbox":[0.738,40.711,0.762,40.729]},"data":[{"type":"sentinel-2-l2a","dataFilter":{"timeRange":{"from":"2026-08-29T00:00:00Z","to":"2026-08-29T23:59:59Z"},"maxCloudCoverage":30},"processing":{"units":"REFLECTANCE"}}]},"bands":["red","nir08"],"output":{"width":512,"height":512,"crs":"EPSG:32631","format":"image/tiff","sampleType":"FLOAT32"}}'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request POST \ --url https://api.satellitedata.net/v1/process/jobs \ --header 'Content-Type: application/json' \ --header 'X-API-Key: <X-API-Key>' \ --data '{ "input": { "bounds": { "bbox": [ 0.738, 40.711, 0.762, 40.729 ] }, "data": [ { "type": "sentinel-2-l2a", "dataFilter": { "timeRange": { "from": "2026-08-29T00:00:00Z", "to": "2026-08-29T23:59:59Z" }, "maxCloudCoverage": 30 }, "processing": { "units": "REFLECTANCE" } } ] }, "bands": [ "red", "nir08" ], "output": { "width": 512, "height": 512, "crs": "EPSG:32631", "format": "image/tiff", "sampleType": "FLOAT32" } }'Lean extension: the same body as POST /v1/process, rendered by a worker in up to 5 minutes, for outputs over the synchronous limit (up to 20,000 pixels a side and 600 million band-pixels). Poll the job’s self link.
Authorizations
Section titled “Authorizations”Request Bodyrequired
Section titled “Request Bodyrequired”Process request (lean v1): one source, bands by name, GeoTIFF output. preset and expression are not available yet.
object
Inputs.
object
Area of interest: bbox or geometry, not both.
object
Bounding box as [west, south, east, north] in CRS84 longitude and latitude, or six numbers with heights.
A GeoJSON geometry.
object
GeoJSON geometry type.
GeoJSON coordinates in CRS84 longitude and latitude (RFC 7946).
Bounds properties.
object
CRS of bbox or geometry as an OGC URI.
One input collection (no fusion in the lean v1).
One input collection.
object
Collection id or alias, for example optical-sr or S2L2A.
Which scenes feed the request: a timeRange search (up to 6 scenes, in mosaickingOrder) or explicit ids.
object
Acquisition time window.
object
Inclusive start, RFC 3339 UTC.
Inclusive end, RFC 3339 UTC.
Maximum scene cloud cover percentage.
Scene order for mosaics.
Lean extension: item ids to mosaic, first on top, instead of timeRange.
How values are converted.
object
REFLECTANCE (default): float32 physical values (reflectance; kelvin for lwir11). DN: stored integers.
Default offset_removed: Sentinel-2 DN minus the 1000 baseline offset (int16). Equals none for REFLECTANCE and for Landsat.
Clip negative reflectance to 0.
Resampling method.
Bands by common name, native name or alias from schema v1; default every spectral band.
Output size and format.
object
Output width in pixels: up to 2,500 on POST /v1/process (413 above), 20,000 on jobs.
Output height in pixels: up to 2,500 on POST /v1/process (413 above), 20,000 on jobs.
Pixel width in CRS units, instead of width.
Pixel height in CRS units, instead of height.
Output CRS as an EPSG code (EPSG:32631) or OGC URI.
Output media type.
Output sample type. FLOAT32 for REFLECTANCE, INT16 for Sentinel-2 DN with offset_removed, UINT16 for stored DN; AUTO or absent picks it.
Example
{ "input": { "bounds": { "bbox": [ 0.738, 40.711, 0.762, 40.729 ] }, "data": [ { "type": "sentinel-2-l2a", "dataFilter": { "timeRange": { "from": "2026-08-29T00:00:00Z", "to": "2026-08-29T23:59:59Z" }, "maxCloudCoverage": 30 }, "processing": { "units": "REFLECTANCE" } } ] }, "bands": [ "red", "nir08" ], "output": { "width": 512, "height": 512, "crs": "EPSG:32631", "format": "image/tiff", "sampleType": "FLOAT32" }}Responses
Section titled “Responses”Queued.
A background process job (lean extension).
object
Job id.
Job status.
Creation time.
Last update.
When done: the GeoTIFF with a fresh one-hour url, its bands, dtype, scales and offsets.
object
Scenes that contributed pixels.
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
Self, and result links to the files when done.
A STAC and OGC API link object.
object
Link target.
Relation type, such as self, root, parent, next, prev, items, queryables, tiles or license.
Media type of the target.
Human-readable title.
HTTP method for the link, GET unless stated. Paging POST /v1/search uses POST.
Request body to send with a POST link, used for the next page of POST /v1/search.
object
When true the client merges body into the previous request body.
Example
{ "id": "3f2a9c1e5b7d4e0f8a6b2c4d1e3f5a7b", "status": "queued", "created": "2026-10-15T08:00:00+00:00", "links": [ { "rel": "self", "type": "application/json", "href": "https://api.satellitedata.net/v1/process/jobs/3f2a9c1e5b7d4e0f8a6b2c4d1e3f5a7b" } ]}Headers
Section titled “Headers”Request id for support and logs.
Example
01JQ7Z3M8R5V2W6X9Y0A1B2C3DURL of the job.
The request is malformed or a parameter is invalid.
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
Example
{ "type": "https://docs.satellitedata.net/problems/invalid-parameter", "title": "Invalid parameter", "status": 400, "detail": "bbox must have 4 or 6 numbers; got 3.", "instance": "/v1/search", "code": "invalid-parameter", "requestId": "01JQ7Z3M8R5V2W6X9Y0A1B2C3D", "errors": [ { "pointer": "bbox", "detail": "expected 4 or 6 numbers" } ]}Headers
Section titled “Headers”Request id for support and logs.
Example
01JQ7Z3M8R5V2W6X9Y0A1B2C3DThe X-API-Key header is missing or the key is unknown, disabled or not on this API’s usage plan.
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
Example
{ "type": "https://docs.satellitedata.net/problems/invalid-key", "title": "Invalid or missing credentials", "status": 401, "detail": "Send a valid key in the X-API-Key header.", "instance": "/v1/search", "code": "invalid-key", "requestId": "c1d2e3f4-0000-4a5b-8c9d-0123456789ab"}Headers
Section titled “Headers”Challenge naming the accepted scheme.
Example
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
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 size cap was exceeded.
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
Example
{ "type": "https://docs.satellitedata.net/problems/output-too-large", "title": "Output too large", "status": 413, "detail": "Output 3000 x 3000 pixels is over the 2500 pixel limit per side for synchronous process; POST /v1/process/jobs takes up to 20000.", "instance": "/v1/process", "code": "output-too-large", "requestId": "c1d2e3f4-0000-4a5b-8c9d-0123456789ab", "limits": { "maxOutputWidth": 2500, "maxOutputHeight": 2500, "requestedWidth": 3000, "requestedHeight": 3000 }}Headers
Section titled “Headers”Request id for support and logs.
Example
01JQ7Z3M8R5V2W6X9Y0A1B2C3DValid JSON the lean v1 cannot serve: an unknown band, or units or harmonization it does not offer.
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
Example
{ "type": "https://docs.satellitedata.net/problems/unknown-band", "title": "Unknown band", "status": 422, "detail": "landsat-ot-l2 has no band 'nir'; cross-sensor NIR is nir08. Close names: ['nir08']. The full list is in /v1/schema.", "instance": "/v1/process", "code": "unknown-band", "requestId": "c1d2e3f4-0000-4a5b-8c9d-0123456789ab", "errors": [ { "pointer": "/bands/1", "detail": "unknown band" } ]}Headers
Section titled “Headers”Request id for support and logs.
Example
01JQ7Z3M8R5V2W6X9Y0A1B2C3DThe key’s rate limit or monthly quota (usage plan satdata-personal) was hit.
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
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
17An 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
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
01JQ7Z3M8R5V2W6X9Y0A1B2C3DEarth Search or the renderer is unavailable.
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
Example
{ "type": "https://docs.satellitedata.net/problems/upstream-unavailable", "title": "Upstream unavailable", "status": 503, "detail": "Earth Search did not answer: ReadTimeout", "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
17