Skip to content

Synchronous openEO process graph

POST
/v1/openeo/result
curl --request POST \
--url https://api.satellitedata.net/v1/openeo/result \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <X-API-Key>' \
--data '{ "process": { "process_graph": { "load": { "process_id": "load_collection", "arguments": { "id": "optical-sr", "spatial_extent": { "west": -93.3, "south": 44.9, "east": -93.2, "north": 45 }, "temporal_extent": [ "2026-06-01", "2026-09-01" ], "bands": [ "red", "nir08" ] } }, "ndvi": { "process_id": "ndvi", "arguments": { "data": { "from_node": "load" }, "nir": "nir08", "red": "red" } }, "median": { "process_id": "reduce_dimension", "arguments": { "data": { "from_node": "ndvi" }, "dimension": "t", "reducer": { "process_graph": { "m": { "process_id": "median", "arguments": { "data": { "from_parameter": "data" } }, "result": true } } } } }, "save": { "process_id": "save_result", "arguments": { "data": { "from_node": "median" }, "format": "GTiff" }, "result": true } } }, "budget": 5 }'

Runs an openEO process graph synchronously and returns the result, for graphs that load a satellitedata.net collection, apply band math and reductions, and save one raster or JSON. Units are estimated from the graph before execution with the process formula, and the budget field caps them.

OpenEO process graph.

Media typeapplication/json

OpenEO synchronous processing request.

object
process
required

Process.

object
process_graph
required

OpenEO process graph: node id to node.

object
key
additional properties
object
process_id
required
string
arguments
required
object
key
additional properties
any
result
boolean
budget

Maximum units the caller allows; the request fails with 422 when the estimate is higher.

number | null
log_level

Log level.

string
Allowed values: error warning info debug

Example

{
"process": {
"process_graph": {
"load": {
"process_id": "load_collection",
"arguments": {
"id": "optical-sr",
"spatial_extent": {
"west": -93.3,
"south": 44.9,
"east": -93.2,
"north": 45
},
"temporal_extent": [
"2026-06-01",
"2026-09-01"
],
"bands": [
"red",
"nir08"
]
}
},
"ndvi": {
"process_id": "ndvi",
"arguments": {
"data": {
"from_node": "load"
},
"nir": "nir08",
"red": "red"
}
},
"median": {
"process_id": "reduce_dimension",
"arguments": {
"data": {
"from_node": "ndvi"
},
"dimension": "t",
"reducer": {
"process_graph": {
"m": {
"process_id": "median",
"arguments": {
"data": {
"from_parameter": "data"
}
},
"result": true
}
}
}
}
},
"save": {
"process_id": "save_result",
"arguments": {
"data": {
"from_node": "median"
},
"format": "GTiff"
},
"result": true
}
}
},
"budget": 5
}

Result of the graph.

string
X-Request-Id
string

Request id for support and logs.

Example
01JQ7Z3M8R5V2W6X9Y0A1B2C3D
X-Units-Spent
number

Units charged for this response; 0 for cache hits and free routes.

Example
1.333
X-Units-Remaining
number

Units left this month before restricted mode.

Example
8664.2
RateLimit
string

Remaining units and seconds to reset in the current window (IETF RateLimit header draft).

Example
"units";r=287;t=41
RateLimit-Policy
string

Quota policy of the caller (IETF RateLimit header draft).

Example
"units";q=300;w=60
X-Attribution
string

Credit 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 Survey

Invalid process graph.

Media typeapplication/problem+json

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
type
required

URL of the documentation page for this problem type, stable for the life of /v1.

string format: uri
title
required

Short summary of the problem type. It does not change between occurrences.

string
status
required

HTTP status code, repeated for clients that lose the status line.

integer
>= 400 <= 599
detail
required

Explanation specific to this occurrence, written for a developer.

string
instance

Path of the request that failed.

string
code

Machine-readable problem code; equals the last path segment of type.

string
/^[a-z0-9-]+$/
requestId

Request id, also sent in X-Request-Id. Quote it in support requests.

string
errors

Field-level validation failures, present on 400 and 422.

Array<object>

One field-level failure.

object
pointer
required

JSON Pointer (RFC 6901) into the request body, or the query parameter name.

string
detail
required

What is wrong with that member.

string
retryAfter

Seconds until the request can succeed; equals the Retry-After header.

integer
limits

The limit that was hit and the value requested, for example maxWidth and requestedWidth.

object
key
additional properties
number
unitsEstimated

Units the request would have cost, computed before execution.

number
error

OAuth 2.0 error code (RFC 6749 section 5.2). Present only on /oauth/token responses.

string
Allowed values: invalid_request invalid_client invalid_grant unauthorized_client unsupported_grant_type invalid_scope
error_description

OAuth 2.0 error description. Present only on /oauth/token responses.

string
message

Copy of detail for openEO clients, which read message. Present only on /v1/openeo routes.

string
key
additional properties
any

Example

{
"type": "https://docs.satellitedata.net/problems/invalid-process-graph",
"title": "Invalid process graph",
"status": 400,
"detail": "Node ndvi refers to unknown node lod.",
"instance": "/v1/openeo/result",
"code": "invalid-process-graph",
"requestId": "01JQ7Z3M8R5V2W6X9Y0A1B2C3D",
"message": "Node ndvi refers to unknown node lod."
}
X-Request-Id
string

Request id for support and logs.

Example
01JQ7Z3M8R5V2W6X9Y0A1B2C3D

The API key or bearer token is missing, unknown, revoked or expired.

Media typeapplication/problem+json

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
type
required

URL of the documentation page for this problem type, stable for the life of /v1.

string format: uri
title
required

Short summary of the problem type. It does not change between occurrences.

string
status
required

HTTP status code, repeated for clients that lose the status line.

integer
>= 400 <= 599
detail
required

Explanation specific to this occurrence, written for a developer.

string
instance

Path of the request that failed.

string
code

Machine-readable problem code; equals the last path segment of type.

string
/^[a-z0-9-]+$/
requestId

Request id, also sent in X-Request-Id. Quote it in support requests.

string
errors

Field-level validation failures, present on 400 and 422.

Array<object>

One field-level failure.

object
pointer
required

JSON Pointer (RFC 6901) into the request body, or the query parameter name.

string
detail
required

What is wrong with that member.

string
retryAfter

Seconds until the request can succeed; equals the Retry-After header.

integer
limits

The limit that was hit and the value requested, for example maxWidth and requestedWidth.

object
key
additional properties
number
unitsEstimated

Units the request would have cost, computed before execution.

number
error

OAuth 2.0 error code (RFC 6749 section 5.2). Present only on /oauth/token responses.

string
Allowed values: invalid_request invalid_client invalid_grant unauthorized_client unsupported_grant_type invalid_scope
error_description

OAuth 2.0 error description. Present only on /oauth/token responses.

string
message

Copy of detail for openEO clients, which read message. Present only on /v1/openeo routes.

string
key
additional properties
any

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"
}
X-Request-Id
string

Request id for support and logs.

Example
01JQ7Z3M8R5V2W6X9Y0A1B2C3D
WWW-Authenticate
string

Challenge naming the accepted schemes.

Example
Bearer realm="satellitedata.net", ApiKey header="X-API-Key"

The credentials are valid but cannot use this route, for example before email verification or without the scope.

Media typeapplication/problem+json

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
type
required

URL of the documentation page for this problem type, stable for the life of /v1.

string format: uri
title
required

Short summary of the problem type. It does not change between occurrences.

string
status
required

HTTP status code, repeated for clients that lose the status line.

integer
>= 400 <= 599
detail
required

Explanation specific to this occurrence, written for a developer.

string
instance

Path of the request that failed.

string
code

Machine-readable problem code; equals the last path segment of type.

string
/^[a-z0-9-]+$/
requestId

Request id, also sent in X-Request-Id. Quote it in support requests.

string
errors

Field-level validation failures, present on 400 and 422.

Array<object>

One field-level failure.

object
pointer
required

JSON Pointer (RFC 6901) into the request body, or the query parameter name.

string
detail
required

What is wrong with that member.

string
retryAfter

Seconds until the request can succeed; equals the Retry-After header.

integer
limits

The limit that was hit and the value requested, for example maxWidth and requestedWidth.

object
key
additional properties
number
unitsEstimated

Units the request would have cost, computed before execution.

number
error

OAuth 2.0 error code (RFC 6749 section 5.2). Present only on /oauth/token responses.

string
Allowed values: invalid_request invalid_client invalid_grant unauthorized_client unsupported_grant_type invalid_scope
error_description

OAuth 2.0 error description. Present only on /oauth/token responses.

string
message

Copy of detail for openEO clients, which read message. Present only on /v1/openeo routes.

string
key
additional properties
any

Example

{
"type": "https://docs.satellitedata.net/problems/email-unverified",
"title": "Email not verified",
"status": 403,
"detail": "Keys work only after the account email is verified. Check your inbox or resend from the dashboard.",
"instance": "/v1/process",
"code": "email-unverified",
"requestId": "01JQ7Z3M8R5V2W6X9Y0A1B2C3D"
}
X-Request-Id
string

Request id for support and logs.

Example
01JQ7Z3M8R5V2W6X9Y0A1B2C3D

Estimated units exceed the budget, or a process is not supported.

Media typeapplication/problem+json

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
type
required

URL of the documentation page for this problem type, stable for the life of /v1.

string format: uri
title
required

Short summary of the problem type. It does not change between occurrences.

string
status
required

HTTP status code, repeated for clients that lose the status line.

integer
>= 400 <= 599
detail
required

Explanation specific to this occurrence, written for a developer.

string
instance

Path of the request that failed.

string
code

Machine-readable problem code; equals the last path segment of type.

string
/^[a-z0-9-]+$/
requestId

Request id, also sent in X-Request-Id. Quote it in support requests.

string
errors

Field-level validation failures, present on 400 and 422.

Array<object>

One field-level failure.

object
pointer
required

JSON Pointer (RFC 6901) into the request body, or the query parameter name.

string
detail
required

What is wrong with that member.

string
retryAfter

Seconds until the request can succeed; equals the Retry-After header.

integer
limits

The limit that was hit and the value requested, for example maxWidth and requestedWidth.

object
key
additional properties
number
unitsEstimated

Units the request would have cost, computed before execution.

number
error

OAuth 2.0 error code (RFC 6749 section 5.2). Present only on /oauth/token responses.

string
Allowed values: invalid_request invalid_client invalid_grant unauthorized_client unsupported_grant_type invalid_scope
error_description

OAuth 2.0 error description. Present only on /oauth/token responses.

string
message

Copy of detail for openEO clients, which read message. Present only on /v1/openeo routes.

string
key
additional properties
any

Example

{
"type": "https://docs.satellitedata.net/problems/budget-exceeded",
"title": "Budget exceeded",
"status": 422,
"detail": "The graph is estimated at 7.9 units; budget is 5.",
"instance": "/v1/openeo/result",
"code": "budget-exceeded",
"requestId": "01JQ7Z3M8R5V2W6X9Y0A1B2C3D",
"unitsEstimated": 7.9,
"message": "The graph is estimated at 7.9 units; budget is 5."
}
X-Request-Id
string

Request id for support and logs.

Example
01JQ7Z3M8R5V2W6X9Y0A1B2C3D

A per-minute, concurrency, monthly or per-IP limit was hit. Retry-After says when to retry.

Media typeapplication/problem+json

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
type
required

URL of the documentation page for this problem type, stable for the life of /v1.

string format: uri
title
required

Short summary of the problem type. It does not change between occurrences.

string
status
required

HTTP status code, repeated for clients that lose the status line.

integer
>= 400 <= 599
detail
required

Explanation specific to this occurrence, written for a developer.

string
instance

Path of the request that failed.

string
code

Machine-readable problem code; equals the last path segment of type.

string
/^[a-z0-9-]+$/
requestId

Request id, also sent in X-Request-Id. Quote it in support requests.

string
errors

Field-level validation failures, present on 400 and 422.

Array<object>

One field-level failure.

object
pointer
required

JSON Pointer (RFC 6901) into the request body, or the query parameter name.

string
detail
required

What is wrong with that member.

string
retryAfter

Seconds until the request can succeed; equals the Retry-After header.

integer
limits

The limit that was hit and the value requested, for example maxWidth and requestedWidth.

object
key
additional properties
number
unitsEstimated

Units the request would have cost, computed before execution.

number
error

OAuth 2.0 error code (RFC 6749 section 5.2). Present only on /oauth/token responses.

string
Allowed values: invalid_request invalid_client invalid_grant unauthorized_client unsupported_grant_type invalid_scope
error_description

OAuth 2.0 error description. Present only on /oauth/token responses.

string
message

Copy of detail for openEO clients, which read message. Present only on /v1/openeo routes.

string
key
additional properties
any

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
}
}
X-Request-Id
string

Request id for support and logs.

Example
01JQ7Z3M8R5V2W6X9Y0A1B2C3D
Retry-After
integer

Seconds to wait before retrying.

Example
17
RateLimit
string

Remaining units and seconds to reset in the current window (IETF RateLimit header draft).

Example
"units";r=287;t=41
RateLimit-Policy
string

Quota policy of the caller (IETF RateLimit header draft).

Example
"units";q=300;w=60

An unexpected server error. No units are charged.

Media typeapplication/problem+json

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
type
required

URL of the documentation page for this problem type, stable for the life of /v1.

string format: uri
title
required

Short summary of the problem type. It does not change between occurrences.

string
status
required

HTTP status code, repeated for clients that lose the status line.

integer
>= 400 <= 599
detail
required

Explanation specific to this occurrence, written for a developer.

string
instance

Path of the request that failed.

string
code

Machine-readable problem code; equals the last path segment of type.

string
/^[a-z0-9-]+$/
requestId

Request id, also sent in X-Request-Id. Quote it in support requests.

string
errors

Field-level validation failures, present on 400 and 422.

Array<object>

One field-level failure.

object
pointer
required

JSON Pointer (RFC 6901) into the request body, or the query parameter name.

string
detail
required

What is wrong with that member.

string
retryAfter

Seconds until the request can succeed; equals the Retry-After header.

integer
limits

The limit that was hit and the value requested, for example maxWidth and requestedWidth.

object
key
additional properties
number
unitsEstimated

Units the request would have cost, computed before execution.

number
error

OAuth 2.0 error code (RFC 6749 section 5.2). Present only on /oauth/token responses.

string
Allowed values: invalid_request invalid_client invalid_grant unauthorized_client unsupported_grant_type invalid_scope
error_description

OAuth 2.0 error description. Present only on /oauth/token responses.

string
message

Copy of detail for openEO clients, which read message. Present only on /v1/openeo routes.

string
key
additional properties
any

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"
}
X-Request-Id
string

Request id for support and logs.

Example
01JQ7Z3M8R5V2W6X9Y0A1B2C3D

An upstream catalog or bucket is unavailable, or the service is in maintenance. No units are charged.

Media typeapplication/problem+json

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
type
required

URL of the documentation page for this problem type, stable for the life of /v1.

string format: uri
title
required

Short summary of the problem type. It does not change between occurrences.

string
status
required

HTTP status code, repeated for clients that lose the status line.

integer
>= 400 <= 599
detail
required

Explanation specific to this occurrence, written for a developer.

string
instance

Path of the request that failed.

string
code

Machine-readable problem code; equals the last path segment of type.

string
/^[a-z0-9-]+$/
requestId

Request id, also sent in X-Request-Id. Quote it in support requests.

string
errors

Field-level validation failures, present on 400 and 422.

Array<object>

One field-level failure.

object
pointer
required

JSON Pointer (RFC 6901) into the request body, or the query parameter name.

string
detail
required

What is wrong with that member.

string
retryAfter

Seconds until the request can succeed; equals the Retry-After header.

integer
limits

The limit that was hit and the value requested, for example maxWidth and requestedWidth.

object
key
additional properties
number
unitsEstimated

Units the request would have cost, computed before execution.

number
error

OAuth 2.0 error code (RFC 6749 section 5.2). Present only on /oauth/token responses.

string
Allowed values: invalid_request invalid_client invalid_grant unauthorized_client unsupported_grant_type invalid_scope
error_description

OAuth 2.0 error description. Present only on /oauth/token responses.

string
message

Copy of detail for openEO clients, which read message. Present only on /v1/openeo routes.

string
key
additional properties
any

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
}
X-Request-Id
string

Request id for support and logs.

Example
01JQ7Z3M8R5V2W6X9Y0A1B2C3D
Retry-After
integer

Seconds to wait before retrying.

Example
17

The render did not finish within the 29-second API Gateway limit. No units are charged.

Media typeapplication/problem+json

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
type
required

URL of the documentation page for this problem type, stable for the life of /v1.

string format: uri
title
required

Short summary of the problem type. It does not change between occurrences.

string
status
required

HTTP status code, repeated for clients that lose the status line.

integer
>= 400 <= 599
detail
required

Explanation specific to this occurrence, written for a developer.

string
instance

Path of the request that failed.

string
code

Machine-readable problem code; equals the last path segment of type.

string
/^[a-z0-9-]+$/
requestId

Request id, also sent in X-Request-Id. Quote it in support requests.

string
errors

Field-level validation failures, present on 400 and 422.

Array<object>

One field-level failure.

object
pointer
required

JSON Pointer (RFC 6901) into the request body, or the query parameter name.

string
detail
required

What is wrong with that member.

string
retryAfter

Seconds until the request can succeed; equals the Retry-After header.

integer
limits

The limit that was hit and the value requested, for example maxWidth and requestedWidth.

object
key
additional properties
number
unitsEstimated

Units the request would have cost, computed before execution.

number
error

OAuth 2.0 error code (RFC 6749 section 5.2). Present only on /oauth/token responses.

string
Allowed values: invalid_request invalid_client invalid_grant unauthorized_client unsupported_grant_type invalid_scope
error_description

OAuth 2.0 error description. Present only on /oauth/token responses.

string
message

Copy of detail for openEO clients, which read message. Present only on /v1/openeo routes.

string
key
additional properties
any

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"
}
X-Request-Id
string

Request id for support and logs.

Example
01JQ7Z3M8R5V2W6X9Y0A1B2C3D