Tasking Feasibility

The Canopy Tasking API provides customers with the ability to accurately determine when the constellation could potentially collect an image by submitting a Feasibility Request. When a Feasibility Request is submitted, Canopy determines all possible Opportunities to image the target within the given constraints. These are represented by a generated list of Opportunities included on the Feasibility model. The generated Opportunities can then be used to inform the input parameters of a new Task.


Competitive Feasibility

The Opportunities returned from Canopy's Feasibility Requests reflect the actual availability on the constellation schedule at the time of the request.

Feasibility Request

A Feasibility Request is similar to a Task as it includes the desired timeframe, image collection mode, and geometric view constraints. When the status of a submitted Feasibility Request has reached COMPLETED, the calculated Opportunities are available to view. If the Feasibility status instead changes to ERROR, the system was unable to satisfy the requested constraints.

RECEIVEDFeasiblity Request input has been validated and Opportunites are being calculated.
COMPLETEDThe feasiblity calculation has been completed and Opportunities are available to view.
ERRORAn error has occurred in the calculation.


An Opportunity is a window of time in which the Umbra constellation can image a target. They are returned as a list within the GET response for the associated Feasibility. Each Opportunity includes a start and end datetime, a duration, and various start and end values for various view geometry parameters.


The Canopy API artificially buffers the windowStartAt and windowEndAt properties by a few minutes for each Opportunity. This provides some wiggle room for our scheduler to optimize the requested Opportunity window when it is actually submitted as a Task.

Without this artificial buffer, Collects are commonly rejected due to orbit changes and other unforseen minor adjustments to satellite schedules.

To use an Opportunity to construct a new Task, copy all relevant Opportunity fields into the spotlightConstraints object of your Task Request.

    "createdAt": "2023-02-01T20:38:25.042617+00:00",
    "feasibilityRequest": {
        "imagingMode": "SPOTLIGHT",
        "spotlightConstraints": {
            "geometry": {
                "coordinates": [
                "type": "Point"
            "grazingAngleMaxDegrees": 70,
            "grazingAngleMinDegrees": 50,
            "multilookFactor": 1,
            "polarization": "VV",
            "rangeResolutionMinMeters": 1,
            "targetAzimuthAngleEndDegrees": 225,
            "targetAzimuthAngleStartDegrees": 135
        "windowEndAt": "2023-02-10T00:00:00+00:00",
        "windowStartAt": "2023-02-02T00:00:00+00:00"
    "id": "8fc93a43-2d7c-4c99-8ab3-b4777e08b591",
    "opportunities": [
            "durationSec": 32.0,
            "grazingAngleEndDegrees": 66.15728683177917,
            "grazingAngleStartDegrees": 50.065678232919,
            "groundRangeEndKm": 214.38595759284695,
            "groundRangeStartKm": 399.1216927967362,
            "slantRangeEndKm": 574.4416697644883,
            "slantRangeStartKm": 672.0966344057332,
            "squintAngleEndDegrees": 51.03476828584841,
            "squintAngleStartDegrees": 24.7987819865104,
            "targetAzimuthAngleEndDegrees": 219.22661066472432,
            "targetAzimuthAngleStartDegrees": 193.0246402999045,
            "windowEndAt": "2023-02-04T05:53:06.580947+00:00",
            "windowStartAt": "2023-02-04T05:52:34.580947+00:00"
            "durationSec": 26.0,
            "grazingAngleEndDegrees": 50.134579452270096,
            "grazingAngleStartDegrees": 61.228708546267185,
            "groundRangeEndKm": 400.6329153579246,
            "groundRangeStartKm": 266.92139324968616,
            "slantRangeEndKm": 676.2239054352133,
            "slantRangeStartKm": 601.112929038593,
            "squintAngleEndDegrees": 146.24463943799844,
            "squintAngleStartDegrees": 123.81283714949032,
            "targetAzimuthAngleEndDegrees": 157.63650276834412,
            "targetAzimuthAngleStartDegrees": 135.2027760704994,
            "windowEndAt": "2023-02-07T18:26:32.881283+00:00",
            "windowStartAt": "2023-02-07T18:26:06.881283+00:00"
    "organizationId": "org_jIqnkHIq2LpZ0fEw",
    "status": "COMPLETED",
    "updatedAt": "2023-02-01T20:39:03.385443+00:00",
    "userId": "auth0|6228a57f4c83d900703bc4a6"