Usage
All listing endpoints have the parameters limit
and offset
available for use.
Get product list
Retrieve a list of the products available for tasking.
Request
curl --location --request GET 'https://api.satellogic.com/tasking/products/' \
--header 'authorizationToken: Bearer <ACCESS_TOKEN>'
Response
{
"count": 1,
"next": null,
"previous": null,
"results": [
{
"pk": 90,
"name": "Some product"
},
]
}
Get task list
Retrieve a list of the tasks submitted by the user.
The list can be filtered by project_name
and status
Request
curl --location --request GET 'https://api.satellogic.com/tasking/tasks/?limit=100&offset=0' \
--header 'authorizationToken: Bearer <ACCESS_TOKEN>'
--data-raw '{
"project_name": "Theme parks"
}'
Response
{
"count": 9876,
"next": "https://api.satellogic.com/tasking/tasks/?limit=100&offset=100",
"previous": null,
"results": [
{
"task_id": 2488,
"task_name": "Bush Gardens",
"project_name": "Theme parks",
"product": 1,
"start": "2019-10-24T00:00:00Z",
"end": "2019-10-31T00:00:00Z",
"priority": 14,
"client": "Amusement Corp",
"target": {
"type": "Point",
"coordinates": [
-120.087111,
34.74643,
0.0
]
},
"created_time": "2018-09-12T21:55:06.221076Z",
"status": "received"
},
...
Submit new task
Submit a new task by specifying product, point of interest and time period.
Request
curl --location --request POST 'https://api.satellogic.com/tasking/tasks/' \
--header 'authorizationToken: Bearer <ACCESS_TOKEN>' \
--header 'Content-Type: application/json' \
--data-raw '{
"task_name": "Disney Land",
"project_name": "Theme parks",
"product": 90,
"target": {
"type": "Point",
"coordinates": [
72.905273,
19.023001
]
},
"start": "2020-12-23T00:00:00+03:00",
"end": "2021-01-12T00:00:00+03:00"
}'
Response
{
"task_id": 23272,
"task_name": "Disney Land",
"project_name": "Theme parks",
"product": 90,
"start": "2020-12-22T21:00:00Z",
"end": "2021-01-11T21:00:00Z",
"priority": 14,
"client": "Amusement Corp",
"target": {
"type": "Point",
"coordinates": [
72.905273,
19.023001,
0.0
]
},
"created_time": "2020-12-23T22:13:52.943224Z",
"status": "received"
}
Submit new task with specific priority and client
Submit a new task as the example above but with a specific priority (for those accounts granted with a priority range) and client (for those accounts allowed to manage multiple clients).
The priority
parameter is optional in all cases, meaning that unless the user specifies a priority number in the request, the default priority for the client in use will be taken into account.
In the case of the client
parameter, if the account in use has only one client available, there is no need to send it in the request as that will be the only possible option. Alternatively, if the account manages multiple clients, the user should fill the parameter with the desired client. The accounts available clients can be retrieved using the /clients/
endpoint
Request
curl --location --request POST 'https://api.satellogic.com/tasking/tasks/' \
--header 'authorizationToken: Bearer <ACCESS_TOKEN>' \
--header 'Content-Type: application/json' \
--data-raw '{
"task_name": "Disney Land",
"project_name": "Theme parks",
"product": 90,
"target": {
"type": "Point",
"coordinates": [
72.905273,
19.023001
]
},
"start": "2020-12-23T00:00:00+03:00",
"end": "2021-01-12T00:00:00+03:00",
"priority": 14,
"client": "Theme parks client"
}'
Response
{
"task_id": 23272,
"task_name": "Disney Land",
"project_name": "Theme parks",
"product": 90,
"start": "2020-12-22T21:00:00Z",
"end": "2021-01-11T21:00:00Z",
"priority": 14,
"client": "Theme parks client",
"target": {
"type": "Point",
"coordinates": [
72.905273,
19.023001,
0.0
]
},
"created_time": "2020-12-23T22:13:52.943224Z",
"status": "received"
}
Query task status
Retrieve status and metadata associated with a task.
Request
curl --location --request GET 'https://api.satellogic.com/tasking/tasks/23221/' \
--header 'authorizationToken: Bearer <ACCESS_TOKEN>'
Response
{
"task_id": 23271,
"task_name": "Eurodisney",
"project_name": "Theme parks",
"product": 90,
"start": "2020-12-22T21:00:00Z",
"end": "2021-01-11T21:00:00Z",
"priority": 14,
"client": "Amusement Corp",
"target": {
"type": "Point",
"coordinates": [
72.905273,
19.023001,
0.0
]
},
"created_time": "2020-12-23T20:41:19.269776Z",
"status": "received"
}
Get capture list
Retrieve the list of captures associated with a task
Request
curl --location --request GET 'https://api.satellogic.com/tasking/tasks/2522/captures/' \
--header 'authorizationToken: Bearer <ACCESS_TOKEN>'
Response
{
"count": 3,
"next": null,
"previous": null,
"results": [
{
"capture_id": "abe88c71-45c5-49e2-93a2-0b22e6c5bf69",
"start": "2021-02-12T13:24:09.749209Z",
"satellite_name": "newsat13",
"status": "published"
},
{
"capture_id": "0b1230b7-51eb-4b2b-a672-f40da25a81f4",
"start": "2021-02-13T13:36:46.797424Z",
"satellite_name": "newsat18",
"status": "processing"
},
{
"capture_id": "fcee0909-1746-4d33-b8a6-0108afd62634",
"start": "2021-02-15T13:31:23.181541Z",
"satellite_name": "newsat13",
"status": "queued"
}
]
}
The response will contain an element in results
for every capture planned on behalf of the task.
The attributes for each task are the following:
Parameter | Type | Description |
---|---|---|
capture_id | string | Unique identifier for the capture. |
start | ISO Datetime | Datetime indicating when the capture took place |
satellite_name | string | Name of the satellite executing the capture |
status | string | The capture status |
fragment_id | UUID | Unique identifier for the area fragment. Available for AOI tasks only |
Cancel a Task
Cancel a submitted task. The task will appear in the task list with Canceled
status.
Request
curl --location --request PATCH 'https://api.satellogic.com/tasking/tasks/23241/cancel/' \
--header 'authorizationToken: Bearer <ACCESS_TOKEN>'
Recurrent tasks
The usual behavior for tasks is to capture the specified amount of captures once.
The expected_age
parameter is a way to set recurrence for POI tasks. It is not available for AOI tasks.
When the expected_age
parameter is specified, then the max_captures
and max_simultaneous_captures
parameters apply to each recurrent period.
For example, if expected_age
is set to seven days and none of max_captures
or max_simultaneous_captures
is specified, the planning process will attempt to generate a planned capture every seven days.
If expected_age
is set to ten days and max_captures
is set to 2, then the planning process will attempt to generate two planned captures every ten days. The distribution of the captures into the ten days interval will be arbitrary, but as an average, the user will receive two captures every ten days.
Notice that a recurrent task is never completed due to amount of captures. Therefore, the recurrence will continue for the survey period. The Task will be considered as completed only when the survey period is finished, despite the number of past captures.
The expected value for expected_age
is a timedelta represented as string. The format is %d %H:%M:%S
Here's an example of a recurrent task creation
Request
curl --location --request POST 'https://api.satellogic.com/tasking/tasks/' \
--header 'authorizationToken: Bearer <ACCESS_TOKEN>' \
--header 'Content-Type: application/json' \
--data-raw '{
"task_name": "Disney Land",
"project_name": "Theme parks",
"product": 90,
"target": {
"type": "Point",
"coordinates": [
72.905273,
19.023001
]
},
"start": "2020-12-23T00:00:00+03:00",
"end": "2021-01-12T00:00:00+03:00",
"expected_age": "7 days, 00:00:00"
}'
Response
{
"task_id": 23272,
"task_name": "Disney Land",
"project_name": "Theme parks",
"product": 90,
"start": "2020-12-22T21:00:00Z",
"end": "2021-01-11T21:00:00Z",
"priority": 14,
"client": "Amusement Corp",
"target": {
"type": "Point",
"coordinates": [
72.905273,
19.023001,
0.0
]
},
"created_time": "2020-12-23T22:13:52.943224Z",
"status": "received",
"expected_age": "7 days, 00:00:00"
}
Requesting several captures at once
There are two parameters available for this, max_captures
and max_simultaneous_captures
. max_captures
sets how many past captures are needed for the Task to be considered Completed, and max_simultaneous_captures
is an extra parameter used to specify how many captures will be planned at the same time. It is an integer greater or equal than max_captures
.
When it is not specified, max_simultaneous_captures
takes the same value as max_captures
, and the planning process will attempt to generate the exact number of captures the Task needs to be considered complete.
If max_simultaneous_captures
takes a higher value, then additional captures will be planned, reducing the latency for the users in case some planned captures fail.
For example, if a user creates a task to obtain a single capture, the planning process will generate a single planned capture. However, if the planned capture fails, the user must wait for the capture to be re-planned.
If the user creates a task to obtain a single capture, but the max_simultaneous_captures
is set to 3, then the planning process will attempt to plan three captures, despite only one being required to complete the Task.
If the first capture fails, another two already planned may fulfill the order faster than waiting for the task re-planning, reducing the latency from the user's point of view.
If no max_captures
is specified while creating a task, a default of 1 is used for both max_capture
and max_simultaneous_captures
.
It is possible that when max_simultaneous_captures
is greater than max_captures
, more captures than expected are delivered to the final client.
This is because some planned captures are delivered before the Task is set to completed
. It is a known issue and a possible side effect of setting a high value to max_simultaneous_captures
.
Consulting client's configuration
The endpoint /client/
is intended to retrieve the account configuration including the available client(s) with their corresponding tasking priority levels. The priority level of a Task will determine its placement in the capture planning process using an inverted range, the smaller the number, the higher the priority. In that sense:
max_priority
refers to the highest priority allowed for the client (the smallest number of the range).min_priority
refers to the lowest priority allowed for the client (the biggest number of the range).default_priority
it should set betweenmax_priority
andmin_priority
and is the one that will be used in case thepriority
parameter is not sent in the request.
Request
curl --location --request GET 'https://api.satellogic.com/tasking/clients/' \
--header 'authorizationToken: Bearer <ACCESS_TOKEN>'
Response
{
"name": "Amusement Corp",
"description": "",
"contact_name": "John Smith",
"contact_email": "contact@email.com",
"geofence": None, // or a geojson geometry
"min_priority": 15,
"max_priority": 13,
"default_priority": 14,
"date_created": "2023-01-01 10:00:00",
"last_update": "2023-01-02 10:00:00"
}