Recurring Series Tasking Tutorial
Read this tutorial if you are looking for a step-by-step guide on how to create a recurring tasking order series, monitor its progress and retrieve delivered data using the RESTful API.
In this guide, you will learn how to:
- Understand recurring order parameters
- Retrieve a price estimate for the series
- Create a recurring tasking series
- List and retrieve series details
- List orders within a series
- Download fulfilled orders
Recurring order parameters
A recurring tasking series is defined by a set of order parameters that apply to every individual order, plus a schedule that controls how often and how many times those orders are created.
The key series-specific parameters are:
| Parameter | Description |
|---|---|
start_date | The start of the first tasking window. Each subsequent window is offset from this by one frequency period |
frequency | The recurrence period of the consecutive acquisition windows, expressed as an ISO 8601 duration |
total_order_count | The total number of tasking windows to create in the series |
end_date | An alternative to total_order_count — the date after which no further windows are created |
Provide either total_order_count or end_date to define the length of the series, not both.
The frequency field uses ISO 8601 duration format. Examples of supported values are:
| Value | Meaning |
|---|---|
P7D | Every 7 days |
P1W | Every 1 week |
P14D | Every 14 days |
P1M | Every 1 calendar month |
The minimum supported frequency is P7D (7 days).
The order_parameters object defines the tasking parameters applied to each order in the series — imaging mode, cloud
cover, off-nadir range, licence level and any add-ons. More information on the tasking parameters available can be found
in Tasking Orders.
The total order count defines how many tasking windows are scheduled, not how many images are guaranteed to be delivered. An order that expires without a successful capture will not be retried, and the reserved credit for that window is returned to your credit limit.
Price estimation
Before creating a series, you can retrieve a price estimate for the full series using the series price endpoint. The estimate is based on the order parameters and number of orders you intend to create.
You must specify the licence_level and optionally a catalog withhold addon (addon:withhold) at this stage. For
details on the options available on your contract, see Contract Information.
export CONTRACT_ID="xxxxxxxx-xxxxxxxx-xxxxxxxx-xxxxxxxx"
export ACCESS_TOKEN="xxx…xxx"
curl -X POST "https://api.satellitevu.com/otm/v2/${CONTRACT_ID}/tasking/series/price/" \
-H "Authorization: Bearer ${ACCESS_TOKEN}" \
-H "Content-Type: application/json" \
-d '{
"type": "Feature",
"geometry": {
"type": "Point",
"coordinates": [-2.2374, 53.4808]
},
"properties": {
"name": "Monthly monitoring - Manchester",
"frequency": "P1M",
"start_date": "2026-08-01T00:00:00Z",
"total_order_count": 6,
"order_parameters": {
"satvu:day_night_mode": "day-night",
"max_cloud_cover": 50,
"min_off_nadir": 0,
"max_off_nadir": 30,
"licence_level": "Evaluation Licence",
"addon:withhold": "P0D"
}
}
}'
In the response body, you will see the price field with the estimated total cost across all individual orders in the
series.
Credits are reserved for the full series at the point of ordering. Each individual order's credit is redeemed when that order is successfully fulfilled. If an order is not captured, the reserved credit for that window is returned to your credit limit. Any orders which are not fulfilled will not be billed.
Creating a series
To create a recurring tasking series, use the same payload structure as the price endpoint. A successful request returns
a 201 response with the series details.
curl -X POST "https://api.satellitevu.com/otm/v2/${CONTRACT_ID}/tasking/series/" \
-H "Authorization: Bearer ${ACCESS_TOKEN}" \
-H "Content-Type: application/json" \
-d '{
"type": "Feature",
"geometry": {
"type": "Point",
"coordinates": [-2.2374, 53.4808]
},
"properties": {
"name": "Monthly monitoring - Manchester",
"frequency": "P1M",
"start_date": "2026-08-01T00:00:00Z",
"total_order_count": 6,
"order_parameters": {
"satvu:day_night_mode": "day-night",
"max_cloud_cover": 50,
"min_off_nadir": 0,
"max_off_nadir": 30,
"licence_level": "Evaluation Licence",
"addon:withhold": "P0D"
}
}
}'
You can define the length of the series using either total_order_count (the number of tasking windows to create) or
end_date (the date after which no further windows are created). Provide one or the other, not both.
The response includes the series id, which you will use to retrieve, modify or cancel the series.
Retrieving series details
List all series
To retrieve a list of all series under a contract, sorted by creation date (newest first) use the GET tasking series endpoint:
curl -X GET "https://api.satellitevu.com/otm/v2/${CONTRACT_ID}/tasking/series/" \
-H "Authorization: Bearer ${ACCESS_TOKEN}"
This will return a list of all the Series on your contract, along with the properties of each series.
Retrieve a single series
To retrieve the details of a specific series, you can use the GET individual tasking series endpoint with the Series ID:
export SERIES_ID="xxxxxxxx-xxxxxxxx-xxxxxxxx-xxxxxxxx"
curl -X GET "https://api.satellitevu.com/otm/v2/${CONTRACT_ID}/tasking/series/${SERIES_ID}" \
-H "Authorization: Bearer ${ACCESS_TOKEN}"
Listing orders within a series
Each occurrence in the series is created as an independent standard tasking order. To retrieve all orders belonging to a series:
export SERIES_ID="xxxxxxxx-xxxxxxxx-xxxxxxxx-xxxxxxxx"
curl -X GET "https://api.satellitevu.com/otm/v2/${CONTRACT_ID}/tasking/series/${SERIES_ID}/orders/" \
-H "Authorization: Bearer ${ACCESS_TOKEN}"
The response returns a list of orders, newest first. Each order has its own id, status and tasking parameters. Each
of these orders can be tracked, modified and cancelled individually as per any non-recurring order.
For information on modifying or cancelling individual orders or the series as a whole, see Track and manage tasking orders.
Data download
Once an individual order within the series reaches fulfilled status, you can download the data using the standard
order download endpoint. You do not need to wait for the full series to complete.
export ORDER_ID="xxxxxxxx-xxxxxxxx-xxxxxxxx-xxxxxxxx"
curl -X GET "https://api.satellitevu.com/otm/v2/${CONTRACT_ID}/tasking/orders/${ORDER_ID}/download" \
-H "Authorization: Bearer ${ACCESS_TOKEN}"
The endpoint response is a link to the file. Follow the link and save the data as a .zip archive.
To download all available orders within a series, you can use the series download endpoint. This will download a .zip
file containing all of the fulfilled orders within the series.
export SERIES_ID="xxxxxxxx-xxxxxxxx-xxxxxxxx-xxxxxxxx"
curl -X GET "https://api.satellitevu.com/otm/v2/${CONTRACT_ID}/tasking/series/${SERIES_ID}/download" \
-H "Authorization: Bearer ${ACCESS_TOKEN}"