---
title: "Get an estimate for a batch job"
method: GET
path: "/jobs/{job_id}/estimate"
tags: ["Data Processing", "Batch Jobs"]
---

# Get an estimate for a batch job

`GET /jobs/{job_id}/estimate`

Calculates an estimate for a batch job. Back-ends can decide to either calculate the duration, the costs, the size or a combination of them.
Back-end providers MAY specify an expiry time for the estimate. Starting to process data afterwards MAY be charged at a higher cost. Costs do often not include download costs. Whether download costs are included or not can be indicated explicitly with the `downloads_included` flag.
The estimate SHOULD be the upper limit of the costs, but back-end are free to use the field according to their terms of service.
For some batch jobs it is not (easily) possible to estimate the costs reliably, e.g. if a UDF or ML model is part of the process. In this case, the server SHOULD return a `EstimateComplexity` error with HTTP status code 500.

## Path parameters

- `job_id` string, required — Per-back-end unique identifier of the batch job, generated by the back-end during creation. MUST match the specified pattern.

## Response `200`

The estimated costs with regard to money, processing time and storage capacity. At least one of `costs`, `duration` or `size` MUST be provided.

- union
  - object
    - `costs` number, nullable, required — An amount of money or credits. The value MUST be specified in the currency the back-end is working with. The currency can be retrieved by calling `GET /`. If no currency is set, this field MUST be `null`.
    - `duration` string — Estimated duration for the operation. Duration MUST be specified as an [ISO 8601 duration](https://en.wikipedia.org/wiki/ISO_8601#Durations).
    - `size` integer — Estimated required storage capacity, i.e. the size of the generated files. Size MUST be specified in bytes.
    - `downloads_included` integer, nullable — Specifies how many full downloads of the processed data are included in the estimate. Set to `null` for unlimited downloads, which is also the default value.
    - `expires` string, date-time — Time until which the estimate is valid, formatted as a [RFC 3339](https://www.rfc-editor.org/rfc/rfc3339.html) date-time.
  - object
    - `costs` number, nullable — An amount of money or credits. The value MUST be specified in the currency the back-end is working with. The currency can be retrieved by calling `GET /`. If no currency is set, this field MUST be `null`.
    - `duration` string, required — Estimated duration for the operation. Duration MUST be specified as an [ISO 8601 duration](https://en.wikipedia.org/wiki/ISO_8601#Durations).
    - `size` integer — Estimated required storage capacity, i.e. the size of the generated files. Size MUST be specified in bytes.
    - `downloads_included` integer, nullable — Specifies how many full downloads of the processed data are included in the estimate. Set to `null` for unlimited downloads, which is also the default value.
    - `expires` string, date-time — Time until which the estimate is valid, formatted as a [RFC 3339](https://www.rfc-editor.org/rfc/rfc3339.html) date-time.
  - object
    - `costs` number, nullable — An amount of money or credits. The value MUST be specified in the currency the back-end is working with. The currency can be retrieved by calling `GET /`. If no currency is set, this field MUST be `null`.
    - `duration` string — Estimated duration for the operation. Duration MUST be specified as an [ISO 8601 duration](https://en.wikipedia.org/wiki/ISO_8601#Durations).
    - `size` integer, required — Estimated required storage capacity, i.e. the size of the generated files. Size MUST be specified in bytes.
    - `downloads_included` integer, nullable — Specifies how many full downloads of the processed data are included in the estimate. Set to `null` for unlimited downloads, which is also the default value.
    - `expires` string, date-time — Time until which the estimate is valid, formatted as a [RFC 3339](https://www.rfc-editor.org/rfc/rfc3339.html) date-time.

## Other responses

- `4XX` — The request can not be fulfilled due to an error on client-side, i.e. the request is invalid. The client SHOULD NOT repeat the request without modifications. The response body SHOULD contain a JSON error object. MUST be any HTTP status code specified in [RFC 7231](https://www.rfc-editor.org/rfc/rfc7231.html#section-6.6). This request MUST respond with HTTP status codes 401 if authorization is required or 403 if the authorization failed or access is forbidden in general to the authenticated user. HTTP status code 404 SHOULD be used if the value of a path parameter is invalid. See also: * [Error Handling](#section/API-Principles/Error-Handling) in the API in general. * [Common Error Codes](errors.json)
- `5XX` — The request can not be fulfilled due to an error at the back-end. The error is never the client’s fault and therefore it is reasonable for the client to retry the exact same request that triggered this response. The response body SHOULD contain a JSON error object. MUST be any HTTP status code specified in [RFC 7231](https://www.rfc-editor.org/rfc/rfc7231.html#section-6.6). See also: * [Error Handling](#section/API-Principles/Error-Handling) in the API in general. * [Common Error Codes](errors.json)

---

[API](https://skmtc.net/open-eo/apis/openeo-api.md) · [All operations](https://skmtc.net/open-eo/apis/openeo-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/open-eo/openeo-api/revisions/0c5e31955a19/schema)
