Skip to main content

How to Place a Tasking Request

Note: These instructions only apply to tasking orders placed via the MGP Tasking API.

In this tutorial, we'll walk through the steps to create an MGP tasking request. For more detailed information, see Tasking API reference.

Prerequisite: Cloud storage setup

Before you place a tasking request, make sure your delivery location is set up to allow Maxar to write data to it. The output files from your tasking order can be delivered to one of the following cloud types:

Amazon S3 Access

Azure Blob Storage Access

Google Cloud Storage Access

Prerequisite: MGP API Key

An MGP API key provides authentication to make MGP API requests. An OAuth bearer token can also be used.

API URLs

To place an order, validate your order request, or get a usage estimate, make a request to the URL in the table below with a JSON request body. Follow the tutorial to create a request body.

RequestDescriptionRequest URL
Submit a Tasking requestPlace a tasking request.POST https://api.maxar.com/tasking/v1/tasking
Validate a request body before submittingSee if your request body is valid before submitting your tasking order.POST https://api.maxar.com/tasking/v1/tasking?validation_only=true
Quote a tasking requestGet a usage estimate quote for your tasking request before placing it.POST https://api.maxar.com/tasking/v1/tasking/quote

Tasking example

We'll use the following example in our tutorial. This example JSON request body will collect a 50 cm color image and process and deliver it as a system-ready (1B) image. If you use this example, be sure to set the start and end dates to a future date.

{
"start_datetime": "2025-01-01T00:00:00Z",
"end_datetime": "2025-03-01T00:00:00Z",
"aoi_geojson": {
"coordinates": [
[
[-105.024490, 39.675484],
[-104.867935, 39.675484],
[-104.867935, 39.784268],
[-105.024490, 39.784268],
[-105.024490, 39.675484]
]
],
"type": "Polygon"
},
"max_cloud_cover": 30,
"max_off_nadir_angle": 30,
"collect_gsd": 0.5,
"min_sun_elevation_angle": 15,
"order_templates": [
{
"pipeline": "imagery/system-ready",
"template": {
"settings": {
"customer_description": "50 cm 1B imagery",
"inventory_ids": ["$.id"],
"aoi": "$._aoi_intersection"
},
"output_configs": [
{
"type": "amazon_s3",
"bucket": "example-bucket",
"prefix": "example-prefix"
}
]
}
}
],
"end_use_code": "AGR",
"tasking_priority": "SelectPlus"
"tasking_notifications": [{
"type": "email",
"target": "user@example.com",
"level": "INTERMEDIATE"
}]
}

1. Date and Time

The collection time frame is determined by the start date and the end date. Both are required.

  • start_datetime must be set at least 5 minutes in the future.
  • end_datetime must be set at least 10 minutes in the future.
    "start_datetime": "2025-01-01T00:00:00Z",
"end_datetime": "2025-03-01T00:00:00Z",

Dates must use ISO 8601 standards and must specify a time zone designator of either UTC or an offset from UTC.

The following are all valid datetime formats.

"2024-04-02T00:00Z"
"2024-04-02T00:00:00Z"
"20240402T00:00+0000"
"2024-04-02T4:00+04:00"
"2024-04-02T04:00+04:00"
"2024-04-01T22:00-02"

2. Area of Interest (AOI)

AOI format and rules

Your AOI is submitted in the aoi_geojson field. It must be a polygon in GeoJSON format.

"aoi_geojson": {
"coordinates": [
[
[-105.024490, 39.675484],
[-104.867935, 39.675484],
[-104.867935, 39.784268],
[-105.024490, 39.784268],
[-105.024490, 39.675484]
]
],
"type": "Polygon"
  • Geometry type: A GeoJSON geometry polygon.

  • Minimum AOI size: 50 sq kms.

  • Maximum AOI size:1000 sq kms.

  • Minimum width: The minimum polygon width is 2000 meters.

  • Vertices: The maximum number of vertices is 1000. Vertices should be spaced at a minimum of 1 - 2 meters apart.

High demand areas

High demand countries include: Armenia, Azerbaijan, Bahrain, Benin, China (East), Colombia, Congo, Cyprus, Ecuador, Gabon, Gaza Strip, Georgia, Iran, Iraq, Israel, Japan, Jordan, Kuwait, Lebanon, North Korea, Nigeria, Oman, Qatar, Saudi Arabia, Singapore, South Korea, Syria, Taiwan, Togo, Turkey, Turkmenistan, Ukraine, United Arab Emirates, West Bank, and Yemen

3. Tasking parameters

You can include additional tasking parameter in your request (optional). The values you specify for the parameters must all be met for a collection to occur. More parameters and tighter restrictions can hinder the collection from taking place.

This set of tasking parameters is taken from the example earlier in this document. The complete list of tasking parameters and allowed values can be found at Tasking Parameters.

    "max_cloud_cover": 30,
"max_off_nadir_angle": 30,
"collect_gsd": 0.5,
"min_sun_elevation_angle": 15

4. Order template

Once the imagery is collected to fulfill an MGP tasking request, it is sent to the MGP ordering API to be processed by one of the "core imagery" pipelines. When the files are ready, they are delivered to the specified cloud delivery location. The instructions for ordering, processing, and delivering collected imagery are specified in the order_templates object.

Example order template:

    "order_templates": [
{
"pipeline": "imagery/system-ready",
"template": {
"settings": {
"customer_description": "string",
"inventory_ids": ["$.id"],
"aoi": "$._aoi_intersection"
},
"output_configs": [
{
"type": "amazon_s3",
"bucket": "example-bucket",
"prefix": "example-prefix"
}
]
}
}
],

Pipeline

The pipeline field tells the ordering system which core imagery product the collected image should be processed as. The pipeline name consists of a namespace and a name. The allowed values are:

imagery/system-ready
imagery/view-ready
imagery/view-ready-ortho
imagery/map-ready

See Core Imagery Default Recipes for more information about these core imagery products.

Settings

The "settings" section tells the MGP ordering system the catalog IDs to order and the AOI to apply. It also requires a customer description for the order. The inventory_ids and aoi fields use placeholders to populate the values.

Example:

                "settings": {
"customer_description": "Albuquerque NM project",
"inventory_ids": ["$.id"],
"aoi": "$._aoi_intersection"
}

Placeholders are used to populate the order template with values not currently known, or to populate the order template with a value referenced elsewhere in the request.

This table defines the values allowed for the fields in the "settings" object. All fields are required.

Field NameDescriptionAllowed Values
customer_descriptionA brief description to help you identify the order.The value must be a "string."
inventory_idsUse the placeholder ["$.id"] as the value. This tells the ordering system to order the imagery collected for this request. No other value will be accepted for this field."inventory_ids": ["$.id"]
aoiUse the placeholder "$._aoi_intersection" as the value. This tells the ordering system to intersect the ordered imagery with the AOI defined in the aoi_geojson field from the tasking parameters. No other value will be accepted."aoi": "$._aoi_intersection"

Order delivery (output_configs)

The values in the output_configs object tell the ordering system where to deliver the imagery once it's collected and processed. MGP needs "write" access to your cloud storage location in order to deliver the ordered files. Each section below gives an example output_configs object and a link to setup documentation.

Amazon S3

"output_configs": [
{
"type": "amazon_s3",
"bucket": "example-bucket",
"prefix": "example-prefix"
}
]

To give Maxar "write" access to your S3 bucket, set up a bucket policy before you place a tasking order. This allows the ordered imagery to be delivered to your S3 bucket. See S3 bucket and policy setup

Azure cloud storage


"output_configs": [
{
"azure_blob_storage": {
"sas_url": "Azure SAS URL string goes here",
"container": "my-mgp-container",
"prefix": "prefix-1"
}
]

To give Maxar "write" access to your Azure storage container, create a SAS URL with "write" permissions. This allows the ordered imagery to be delivered to your container. See Azure Cloud Storage.

Google cloud storage

   "output_configs": [
{
"google_cloud_storage": {
"service_credentials": "... base64-encoded credentials string ...",
"bucket": "my-mgp-bucket",
"prefix": "prefix-1"
}
]

To give Maxar "write" access to your Google cloud storage bucket, set up your account with the permissions listed in the Google cloud storage setup documentation. Then from your account, generate a JSON service key and then convert the key to a base-encoded credentials string.

5. End Use Code

A tasking request requires an end use code to identify the intended use of the ordered imagery. See allowed end use code values.

Example:

"end_use_code": "AGR",

Important: Avoid using the "OTH" end use code which means "other". This requires a manual review process and may delay fulfillment of your tasking order or cause it to be rejected. Use the code that most closely matches your intended use.

6. Priority

The tasking priority will be "Select" unless "SelectPlus" is specified. See Priority in the Intro to Tasking.

"tasking_priority": "SelectPlus"

7. Tasking notifications

The MGP tasking API supports the following notification types: email, sns, or http delivery. A request can include one or more notification types. See the examples below. The tasking_notifications object is not required. If it's not included, no notifications will be sent.

Notification level determines what notifications you receive for your tasking order. For details, see Tasking Notifications.

Example: Email

 "tasking_notifications": [{
"type": "email",
"target": "user@example.com",
"level": "FINAL_ONLY"
}]

The target field accepts a single email or a comma-separated list of emails.

Example:

"target": "email1@email.com,email2@email.com",

Example: SNS

"tasking_notifications": [{
"type": "sns",
"target": "arn:aws:sns:us-east-2:123456789012:YourTopic",
"config": {
"requires_message_group_id": true,
"requires_message_deduplication_id": true,
},
"level": "FINAL_ONLY",
}]

Example: HTTP

"tasking_notifications": [{
"type": "http",
"target": "https://your-service-url/order/",
"config": {
"headers": {
"Authorization": "Bearer 12345",
"X-CUSTOM-HEADER": "some value",
}
},
"level": "INTERMEDIATE",
}]

Example: Multiple notification types

    "tasking_notifications": [{
"type": "email",
"target": "user@example.com",
"level": "INTERMEDIATE"
}],
"tasking_notifications": [{
"type": "sns",
"target": "arn:aws:sns:us-east-2:123456789012:YourTopic",
"config": {
"requires_message_group_id": true,
"requires_message_deduplication_id": true
},
"level": "FINAL_ONLY"
}]

Status, validation, and errors

Validation occurs during multiple stages of the tasking, collection, processing, and delivery workflow. "Synchronous" validation checks are made at the time the tasking request is submitted. "Asynchronous" validation checks occur throughout the process. These checks are explained in the Validation and Errors guide. Status definitions can be found in the API reference section, under Tasking Status.

To check on the status of a tasking request, see Get the status and details of a tasking request.

Canceling a tasking request

When a tasking request is canceled, it will be ended and the satellites will not attempt to collect imagery. You can add a request body to a Cancel Tasking request to provide the reason for cancellation.

{
"reason": "user-provided reason for canceling the request."
}

Tasking API reference

Place or validate a tasking request

Get a usage quote

Cancel a tasking Request

Get the status and details of a tasking request

See all tasking requests for your account