AirHub API
  1. LAANC SDSP
AirHub API
  • Introduction
  • Authorization
    • Overview
    • Get Oauth Token
      POST
  • Advisories
    • Advisory
      POST
    • Get Advisories BBox
      GET
    • Get Advisories GeoJSON
      POST
  • Briefing
    • Overview
    • B4UFLY
      • What Is B4UFLY
      • The API Basics
      • Location vs Area
      • v1
        • B4UFLY Briefing by Area v1
        • B4UFLY Briefing by Location v1
      • v2
        • What's New in v2
        • B4UFLY Briefing by Area v2
        • B4UFLY Briefing by Location v2
  • LAANC SDSP
    • Overview
    • ASL Operations
      • List Operations
      • Create Operation
      • Get Operation
      • Delete Operation
      • Update Operation
    • LAANC Operations
      • Get Operation
      • Delete Operation
      • Create Operation
      • Update Operation
    • LAANC Authorizations
      • Rescinded and Invalid Operations
      • Submit Authorization
      • Get Authorization
      • Cancel Authorization
      • Cancel Invalid Authorization
      • Close Authorization
      • Acknowledge Rescinded Authorization
    • Operation v2
      POST
    • Create Ephemeral Operations
      POST
  • Risk
    • Get Hazard
      POST
    • Get Hazard Ground Type
      POST
    • Get Hazard Ground Risk
      POST
  • Aviation
    • Aviation
      POST
  • Surface
    • Suitability
      POST
    • Classification Surface
      POST
    • Surface v2 GeoJSON
      POST
    • Surface v2 Hexbin
      POST
  • Route
    • Route v2
  • Check
    • Check Airspace
    • Get Status
  • Elevation - NEW
    • Elevation
  • Map Vector Tiles - NEW
    • Overview
    • Styled Tiles
    • Vector Tile
  1. LAANC SDSP

Operation v2

Deprecated
Sandbox
https://airhub-api-sandbox.airspacelink.com
Sandbox
https://airhub-api-sandbox.airspacelink.com
POST
/v2/operation
Last modified:2024-10-17 12:03:21
Scope: operation:create
DEPRECATED - This route is deprecated and will be removed September 1, 2025. Please use Create Ephemeral Operations instead.
To support LAANC authorization workflows within 3rd-party applications, the API allows the creation of basic operation definitions. Each operation may include information such as operation start time, duration, requested altitude, and boundary (shape). For approved vendors, other details such as pilot personal contact details may be included.

Definitions:#

Operation: Describes the mission parameters. The umbrella to 1:n authorizations.
Authorization: Describes all or a portion of the operational area to be authorized for flight. Due to airspace dynamics, an operation may be dividied across space or time for seperate and distinct authorizations.

LAANC Deeplinking#

Successfully creating an operation will return a URL that may be used to access the operation within the AirHub Portal application. Following is a sample url after the operation has been successfully created:
https://portal.airspacelink.com/plan/operations/{id}/claim
ℹ️ Important: Operations will be created in the environment respective to the API with which they were created.
Operations created via the Sandbox API to the Sandbox Portal environment
Operations created via the Production API to the Production Portal environment

Callback URL#

You may supply an optional callbackUrl during operation creation. Airspace Link will dispatch a call to the url when changes occur to the status of any authorization associated with the operation. In order to distinguish between different operations, your callbackUrl may include a unique ID which represents your system's internal identifier. Common patterns may include https://myapp.com/aslCallback/{ID} or https://myapp.com/aslCallback?id={ID}. The url may be structured in any way meaningful to your organization.
Sample callback response (only if authorized):
{ 
    authId: string,
    authStatus: string,
    authStatusDate: string, 
    startTime: string,
    duration: number,
    altitude: number,
    atc: string
}

JSON POST Body#

The POST body is expected to be a GeoJSON Feature. The feature's geometry must be a GeoJSON Polygon or LineString.
A request where geometry is a valid GeoJSON LineString will result in a buffered Polygon. FAA requires input geometries for an operation be a valid GeoJSON Polygon. Validation checks are applied to the input LineString/resulting Polygon/or input Polygon:
LineString must have an array of positions (float64) in accordance with the RFC7946 spec
LineString resulting in a buffered Polygon must not have interior rings (doughnut shape)
LineString resulting a buffered Polygon must not have an area greater than 10 square miles or a side length greater than 10 nautical miles
Polygon must be closed; the first coordinates match the last in the array

Request

Header Params
Content-Type
enum<string> 
required
Allowed value:
application/json;charset=UTF-8
Example:
application/json;charset=UTF-8
Authorization
string 
required
Authorization bearer accessToken generated in Authorization step
Example:
{{access-token}}
Body Params application/json
type
string 
required
Always Feature
geometry
object 
required
GeoJSON Polygon or GeoJSON LineString
type
string 
required
coordinates
array [array] 
required
properties
object 
required
Operation properties. See child items for more detail.
operationName
string 
required
Name of the operation.
category
string 
required

Rule Category

FAA rules are categorized into the following:
CategoryDescription
faa_107FAA Commercial UAS Flight.
faa_44809FAA Recreational UAS Flight.
startTime
string 
required
ISO 8601 compliant start timestamp of the operation.
timezoneName
string 
required
Operation timezone. Value should match the Time Zone column of the table located here.
duration
integer 
required
Duration of the operation from 1 - 720 minutes.
maxAltitude
integer 
required
Maximum requested altitude of the operation from 5 - 400' Above Ground Level.
callbackUrl
string 
optional
A POST request will be made to this URL when authorization status updates occur. See Callback URL section above for more details.
Example
{
  "type": "Feature",
  "geometry": {
    "type": "Polygon",
    "coordinates": [
      [
        [
          -81.38980504483482,
          30.29395983352252
        ],
        [
          -81.38980504483482,
          30.29293179807891
        ],
        [
          -81.38530643599411,
          30.29293179807891
        ],
        [
          -81.38530643599411,
          30.29395983352252
        ],
        [
          -81.38980504483482,
          30.29395983352252
        ]
      ]
    ]
  },
  "properties": {
    "operationName": "Test Operation",
    "category": "faa_107",
    "timezoneName": "America/New_York",
    "duration": 55,
    "maxAltitude": 100,
    "startTime": "2023-01-05T12:00:00.0000000+00:00"
  }
}

Request samples

Shell
JavaScript
Java
Swift
Go
PHP
Python
HTTP
C
C#
Objective-C
Ruby
OCaml
Dart
R
Request Request Example
Shell
JavaScript
Java
Swift
curl --location --request POST 'https://airhub-api-sandbox.airspacelink.com/v2/operation' \
--header 'Authorization: ' \
--header 'Content-Type: application/json;charset=UTF-8' \
--data-raw '{
    "type": "Feature",
    "geometry": {
        "type": "Polygon",
        "coordinates": [
            [
                [
                    -81.38980504483482,
                    30.29395983352252
                ],
                [
                    -81.38980504483482,
                    30.29293179807891
                ],
                [
                    -81.38530643599411,
                    30.29293179807891
                ],
                [
                    -81.38530643599411,
                    30.29395983352252
                ],
                [
                    -81.38980504483482,
                    30.29395983352252
                ]
            ]
        ]
    },
    "properties": {
        "operationName": "Test Operation",
        "category": "faa_107",
        "timezoneName": "America/New_York",
        "duration": 55,
        "maxAltitude": 100,
        "startTime": "2023-01-05T12:00:00.0000000+00:00"
    }
}'

Responses

🟢200Success
application/json
Body
statusCode
integer 
required
message
string 
required
data
object 
required
url
string 
required
Example
{
  "statusCode": 200,
  "message": "success",
  "data": {
    "url": "<url>"
  }
}
🟠400Bad Request
🔴500500
Modified at 2024-10-17 12:03:21
Previous
Acknowledge Rescinded Authorization
Next
Create Ephemeral Operations
Built with