The Basics

The AirMap API gives you access to a wide range of airspace services to use in your app or device. The interface strives to be RESTful and easy to use.

Before you can use the AirMap API, you will need to create a free AirMap account and apply to become a developer. If approved, you will then be given an API key, which is required for most API calls and to use the SDK.

Response Format

All of AirMap's REST API responses conform to the JSend Specification. This means that every response will have a status and a data field in the JSON response. The status field will give either a success or fail. In the case of a success, the data field will contain the requested data. In the case of a fail, the data will contain error messages.

For example, in the case of a bad request:

{
  "status": "fail",
  "data": {
    "errors": [
      { "name": "title", "message": "cannot be this ridiculous" },
      { "name": "description", "message": "must be provided" }       
    ]
  }
}

Here is an example of a successful request of a public profile:

{
  "status": "success",
  "data": {
    "id": "auth0|abc123",
    "username": "R2theD2"
  }
}

Errors

The AirMap API returns errors consistent with the standard HTTP status codes along with error objects that describe the error in detail. The following pattern generally applies:

2xx

The request was received, understood, and accepted by AirMap.

4xx

The request has an error. Check the error object for details about what is wrong.

5xx

Something went wrong on AirMap's side. Please open a support ticket or contact AirMap.

Dates

AirMap formats all dates according to the sub-formats of the ISO 8601 standard:

  • yyyy-MM-dd'T'HH:mm:ss.SSSZ
  • yyyy-MM-dd'T'HH:mm:ssZ
Suggest Edits

Authorization

 

Requests to AirMap APIs require authorization; that is, the user must have granted permission for an application to access the requested data. To prove that the user has granted permission, the request header sent by the application must include a valid access token. Additionally, you'll need a valid API key.

The AirMap Developer Portal will allow you to create an organization and manage your applications. Once an application is created, you will be granted an access token and API key for the services desired.

For more information on getting access to our SDKs and APIs, please visit our Getting Started page.

Suggest Edits

Airspace Layers

 

These are all the available airspace layers that can be used in the Map SDK. See the Available Airspace Layers for more info.

Note

These layers are only for use in the Map SDK. If you are using the Status or Airspace API, keep scrolling down to Airspace Types

Airports

Layer
Description

airports_recreational

Public Airports (recreational rules)

airports_commercial

Public Airports (commercial rules)

airports_recreational_private

Private Airports (recreational rules)

airports_commerical_private

Private Airports (commercial rules)

Controlled Airspace

Layer
Description

class_b

Class B Airspace

class_c

Class C Airspace

class_d

Class D Airspace

class_e0

Class E to Ground

Cautionary

Layer
Description

sua_prohibited

Prohibited Special Use Airspace

sua_restricted

Restricted Special Use Airspace

national_parks

National Parks

noaa

NOAA Marine Protection Areas

Advisory

Layer
Description

hospitals

Hospitals

heliports

Heliports

power_plants

Power Plants

schools

Schools

Temporal

Layer
Description

tfrs

Temporary Flight Restrictions

wildfires

Wildfires (realtime)

fires

City and County Fires (realtime)

emergencies

First Responder Activity (realtime)

Suggest Edits

Airspace Types

 

Airspace objects represent all the different advisories in which a UAS operator may be interested. The Airspace objects are returned in both the Status API and the Airspace API. For a detailed look at each type, please see below. A description and example JSON response is given for each type. The JSON response is what is returned from the Airspace API. The Status API is similar, except it will not return the GeoJSON geometry of each object.

Here is a summary of all the different types of airspace objects, and the identifier that you should use when filtering in the APIs:

Type
Identifier

Airports

airport

Controlled Airspace

controlled_airspace

Special Use Airspace

special_use_airspace

Temporary Flight Restrictions

tfr

Wildfires

wildfire

Parks

park

Power Plants

power_plant

Heliports

heliport

Prisons

prison

Schools

school

Hospitals

hospital

Fires

fire

Emergencies

emergency

Densely Inhabit Districts (Japan)

densely_populated_region

Identifier: park

Types of parks included in this Airspace object:

• National Park
• City Park
• Marine Protected Area (NOAA)

{
  "status": "success",
  "data": {
    "id": "3621d752-e870-4a5d-8756-781d82568f6f",
    "name": "Yosemite",
    "type": "park",
    "country": "USA",
    "state": "California",
    "city": "",
    "last_updated": "2016-07-20T20:56:47.000Z",
    "properties": {},
    "geometry": {
      "type": "Polygon",
      "coordinates": [
        [
          [
            -119.845562414,
            37.8327833210298
          ],
          [
            -119.850205576,
            37.8326633630297
          ],
          [
            -119.854848738,
            37.8325444040298
          ],
          [
            -119.85481875,
            37.8363413140297
          ],
          [
            -119.854788763,
            37.8401382230297
          ],
          [
            -119.850159602,
            37.8401631840298
          ],
          [
            -119.845530442,
            37.8401881460298
          ],
          [
            -119.840885281,
            37.8403051040297
          ],
          [
            -119.840872297,
            37.8439740170297
          ],
          [
            "..."
          ]
        ]
      ]
    }
  }
}
Suggest Edits

Power Plants

 

Identifier: power_plant

{
  "status": "success",
  "data": {
    "id": "36b57fe5-5714-44d7-83b5-2cb34c88af8c",
    "name": "Scattergood",
    "type": "power_plant",
    "country": "USA",
    "state": "California",
    "city": "Playa Dal Ray",
    "last_updated": "2016-07-22T12:49:00.000Z",
    "properties": {
      "tech": "Natural Gas Steam Turbine",
      "plant_code": 404
    },
    "geometry": {
      "type": "Point",
      "coordinates": [
        -118.427648,
        33.918151
      ]
    }
  }
}
Suggest Edits

Heliports

 

Identifier: heliport

These heliports may not be active, and in some instances may be an empty field where helicopters can land in emergencies. Thus, there may be many objects returned, especially in cities. We include this object as an advisory to help alert UAS operators that they should be particularly alert to helicopter traffic in the area.

{
  "status": "success",
  "data": {
    "id": "bab01b0f-49eb-4422-bd2c-642dd58b380d",
    "name": "PALOMAR MEDICAL CENTER",
    "type": "heliport",
    "country": "USA",
    "state": "California",
    "city": "Escondido",
    "last_updated": "2016-08-11T00:15:38.000Z",
    "properties": {
      "faa": "'6CA7",
      "phone": "+17608024541",
      "use": "private"
    },
    "geometry": {
      "type": "Point",
      "coordinates": [
        -117.121944444444,
        33.1223055555556
      ]
    }
  }
}
 

Identifier: school

Types of schools included in this Airspace object:

• University
• High School
• Middle School
• Elementary School
• Other

{
  "status": "success",
  "data": {
    "id": "186b4201-a64d-4eb1-8a18-456ff6e6d34b",
    "name": "ST MONICA CATHOLIC HIGH SCHOOL",
    "type": "school",
    "country": "USA",
    "state": "California",
    "city": "Santa Monica",
    "last_updated": "2016-07-20T17:46:08.000Z",
    "properties": {},
    "geometry": {
      "type": "Point",
      "coordinates": [
        -118.497281,
        34.024436
      ]
    }
  }
}

Identifier: prison

{
  "status": "success",
  "data": {
    "id": "a943d640-8afd-4ce9-b1dc-864c5325105b",
    "name": "California State Prison - Corcoran",
    "type": "prison",
    "country": "USA",
    "state": "California",
    "city": "Corcoran",
    "last_updated": "2016-07-20T17:46:08.000Z",
    "properties": {},
    "geometry": {
      "type": "Point",
      "coordinates": [
        -119.552849,
        36.060114
      ]
    }
  }
}
Suggest Edits

Temporary Flight Restrictions

 

Identifier: tfr

A temporary flight restriction (TFR) is a regulatory action that temporarily restricts certain aircraft from operating within a defined area in order to protect persons or property in the air or on the ground. Common reasons for a TFR include sporting events and national security incidents.

{
  "status": "success",
  "data": {
    "id": "3176b0d6-37c4-4f06-9fa2-5a54db3f0fa2",
    "name": "Temporary flight restrictions for Special Security Reasons",
    "type": "tfr",
    "country": "USA",
    "state": "California",
    "city": "Anaheim",
    "last_updated": "2016-08-23T23:17:29.000Z",
    "properties": {
      "url": "http://tfr.faa.gov/save_pages/detail_4_3635.html",
      "type": "Security",
      "notam_reason": "Temporary flight restrictions for Special Security Reasons:DISNEYLAND THEME PARK, ANAHEIM"
    },
    "geometry": {
      "type": "Polygon",
      "coordinates": [
        [
          [
            -117.921389,
            33.851479
          ],
          [
            -117.910964,
            33.850718
          ],
          [
            -117.900856,
            33.848457
          ],
          [
            -117.891374,
            33.844765
          ],
          [
            -117.882804,
            33.839754
          ],
          [
            -117.875409,
            33.833578
          ],
          [
            -117.869412,
            33.826423
          ],
          [
            -117.864996,
            33.818508
          ],
          [
            -117.862294,
            33.810073
          ],
          [
            -117.861388,
            33.801374
          ],
          [
            -117.862306,
            33.792677
          ],
          [
            -117.865018,
            33.784244
          ],
          [
            -117.869442,
            33.776333
          ],
          [
            -117.875443,
            33.769183
          ],
          [
            -117.882839,
            33.763011
          ],
          [
            -117.891404,
            33.758005
          ],
          [
            -117.900879,
            33.754317
          ],
          [
            -117.910976,
            33.752059
          ],
          [
            -117.921389,
            33.751298
          ],
          [
            -117.931802,
            33.752059
          ],
          [
            -117.941899,
            33.754317
          ],
          [
            -117.951374,
            33.758005
          ],
          [
            -117.959939,
            33.763011
          ],
          [
            -117.967335,
            33.769183
          ],
          [
            -117.973336,
            33.776333
          ],
          [
            -117.97776,
            33.784244
          ],
          [
            -117.980472,
            33.792677
          ],
          [
            -117.981389,
            33.801374
          ],
          [
            -117.980484,
            33.810073
          ],
          [
            -117.977782,
            33.818508
          ],
          [
            -117.973366,
            33.826423
          ],
          [
            -117.967369,
            33.833578
          ],
          [
            -117.959974,
            33.839754
          ],
          [
            -117.951404,
            33.844765
          ],
          [
            -117.941922,
            33.848457
          ],
          [
            -117.931814,
            33.850718
          ],
          [
            -117.921389,
            33.851479
          ]
        ]
      ]
    }
  }
}
 

Identifier: airport

{
  "status": "success",
  "data": {
    "id": "bdbd3a36-1a36-405c-8733-2cab6d3aa271",
    "name": "San Francisco Intl",
    "type": "airport",
    "country": "USA",
    "state": "California",
    "city": "San Francisco",
    "last_updated": "2016-08-11T23:33:13.000Z",
    "properties": {
      "iata": "SFO",
      "icao": "KSFO",
      "paved": true,
      "phone": "+16508215000",
      "tower": true,
      "runways": [
        {
          "name": "01L",
          "length": 7650,
          "bearing": 14
        },
        {
          "name": "01R",
          "length": 8650,
          "bearing": 14
        },
        {
          "name": "10L",
          "length": 11870,
          "bearing": 104
        },
        {
          "name": "10R",
          "length": 11381,
          "bearing": 104
        },
        {
          "name": "19L",
          "length": 8650,
          "bearing": 194
        },
        {
          "name": "19R",
          "length": 7650,
          "bearing": 194
        },
        {
          "name": "28L",
          "length": 11381,
          "bearing": 284
        },
        {
          "name": "28R",
          "length": 11870,
          "bearing": 284
        }
      ],
      "elevation": 13,
      "longest_runway": 11870,
      "instrument_approach_procedure": true,
      "use": "public"
    },
    "geometry": {
      "type": "Point",
      "coordinates": [
        -122.375416666667,
        37.6188055555556
      ]
    },
    "rules": [
      {
        "name": "Commercial Rules",
        "geometry": {
          "type": "Polygon",
          "coordinates": [
            [
              [
                -122.270495071032,
                37.6182035459562
              ],
              [
                -122.272669663847,
                37.6019340955551
              ],
              [
                -122.278790041503,
                37.5863144767897
              ],
              [
                -122.288618882919,
                37.5719443404376
              ],
              [
                -122.301777091749,
                37.5593750517554
              ],
              [
                -122.317758572282,
                37.5490886345066
              ],
              [
                -122.335949742127,
                37.5414793998077
              ],
              [
                -122.355653022862,
                37.5368389427161
              ],
              [
                -122.376113419842,
                37.5353450606707
              ],
              [
                -122.396547204286,
                37.5370550010954
              ],
              [
                -122.416171645377,
                37.5419032857199
              ],
              [
                -122.434234707722,
                37.5497041916284
              ],
              [
                -122.450043630358,
                37.5601587989399
              ],
              [
                -122.462991337376,
                37.5728663476202
              ],
              [
                -122.472579697415,
                37.5873394864869
              ],
              [
                -122.478438749262,
                37.6030228512052
              ],
              [
                -122.480341142913,
                37.6193142800962
              ],
              [
                -122.47821120794,
                37.6355878717507
              ],
              [
                -122.472128250883,
                37.6512180112555
              ],
              [
                -122.462323895897,
                37.6656034461621
              ],
              [
                -122.449173511467,
                37.6781904821636
              ],
              [
                -122.433182002054,
                37.6884943936337
              ],
              [
                -122.414964476802,
                37.696118206112
              ],
              [
                -122.395222526485,
                37.7007681051901
              ],
              [
                -122.374717032867,
                37.7022648559564
              ],
              [
                -122.354238590336,
                37.7005507742444
              ],
              [
                -122.334576728553,
                37.6956919688051
              ],
              [
                -122.31648917989,
                37.6878757642694
              ],
              [
                -122.300672433108,
                37.6774034096114
              ],
              [
                -122.287734755215,
                37.6646783667437
              ],
              [
                -122.278172750676,
                37.6501906501729
              ],
              [
                -122.272352368298,
                37.6344978435407
              ],
              [
                -122.270495071032,
                37.6182035459562
              ]
            ]
          ]
        }
      },
      {
        "name": "Recreational Rules",
        "geometry": "{...}"
      }
    ],
    "related_geometry": {
      "property_boundary": {
        "id": "e67294df-e424-4f62-a44b-a265af73941b",
        "geometry": "{...}"
      }
    }
  }
}
Suggest Edits

Controlled Airspace

 

Identifier: controlled_airspace

Controlled Airspace is airspace where air traffic control services are defined. Some countries require authorization prior to flight in controlled airspace. AirMap provides all controlled airspace under 500 ft

{
  "status": "success",
  "data": {
    "id": "94089474-83ff-4f49-88aa-af419a33a54f",
    "name": "LOS ANGELES CLASS B AREA A",
    "type": "controlled_airspace",
    "country": "USA",
    "state": "",
    "city": "",
    "last_updated": "2016-07-20T17:46:08.000Z",
    "properties": {},
    "geometry": {
      "type": "Polygon",
      "coordinates": [
        [
          [
            -118.745277777778,
            33.9972222222222
          ],
          [
            -118.5425,
            34.0063888888889
          ],
          [
            -118.456388888889,
            33.9616666666667
          ],
          [
            -118.369444444444,
            33.9616666666667
          ],
          [
            -118.25,
            34.0166666666667
          ],
          [
            -118.231111111111,
            33.93
          ],
          [
            -118.434722222222,
            33.9308333333333
          ],
          [
            -118.450277777778,
            33.7594444444444
          ],
          [
            -118.541388888889,
            33.7538888888889
          ],
          [
            -118.745277777778,
            33.9972222222222
          ]
        ]
      ]
    }
  }
}
Suggest Edits

Special Use Airspace

 

Identifier: special_use_airspace

Special Use Airspace includes airspace that is prohibited, restricted or otherwise designated as a dangerous area to operate an aircraft.

{
  "status": "success",
  "data": {
    "id": "e06c06eb-5c9a-47e9-a8fa-db47170dc642",
    "name": "R6404A (HILL AFB, UT)",
    "type": "special_use_airspace",
    "country": "USA",
    "state": null,
    "city": null,
    "last_updated": "2016-07-29T21:23:28.000Z",
    "properties": {
      "type": "Restricted"
    },
    "geometry": {
      "type": "Polygon",
      "coordinates": [
        [
          [
            -112.759167,
            41.191667
          ],
          [
            -112.650833,
            41.116667
          ],
          [
            -112.650833,
            41.016667
          ],
          [
            -112.8425,
            40.916667
          ],
          [
            -114.000833,
            40.916667
          ],
          [
            -114.0425,
            40.925
          ],
          [
            -114.0425,
            41.141667
          ],
          [
            -113.834167,
            41.266667
          ],
          [
            -113.29636,
            41.230422
          ],
          [
            -112.759167,
            41.191667
          ]
        ]
      ]
    }
  }
}
Suggest Edits

Wildfires

 

Identifier: wildfire

The FAA does not issue Temporary Flight Restrictions for the vast majority of fires in the United States, even though many are fought with firefighting aircraft. In many states, interfering with firefighting activity is considered a crime. This object includes realtime wildfires.

{
  "status": "success",
  "data": {
    "id": "e25bed06-ba8e-488c-9ff7-06a54c644ae9",
    "name": "Wildfire",
    "type": "wildfire",
    "country": "USA",
    "state": "California",
    "city": "Tehachapi",
    "last_updated": "2016-08-12T18:45:02.000Z",
    "properties": {
      "date_effective": "August 11, 2016"
    },
    "geometry": {
      "type": "Point",
      "coordinates": [
        -118.432234530465,
        35.0969494022499
      ]
    }
  }
}
 

Identifier: hospital

Hospital

Hospital

{
  "status": "success",
  "data": {
    "id": "dced5845-aa31-4e3e-b232-7eb9071eace6",
    "name": "Davis Hospital and Medical Center",
    "type": "hospital",
    "country": "USA",
    "state": "Utah",
    "city": "Layton",
    "last_updated": "2016-07-20T17:46:08.000Z",
    "properties": {},
    "geometry": {
      "type": "Point",
      "coordinates": [
        -111.995573,
        41.09108
      ]
    }
  }
}
 

Information about drone manufacturers, models, and metadata.

Suggest Edits

Get Manufacturers

Get a list of aircraft manufacturers.

 
gethttps://api.airmap.com/aircraft/v2/manufacturer
curl -X "GET" "https://api.airmap.com/aircraft/v2/manufacturer?" \
	-H "X-API-Key: {YOUR API KEY}"
A binary file was returned

You couldn't be authenticated

{
  "status": "success",
  "data": [
    {
      "id": "d280ceed-2a64-4076-9479-7b91038678d9",
      "name": "3D Robotics"
    },
    {
      "id": "2a55b47e-ca49-4b7e-99c7-dee9cd784ec9",
      "name": "DJI"
    },
    {
      "id": "b6d8ec6e-a57a-4742-8983-923196d55b1b",
      "name": "LaTrax"
    },
    {
      "id": "2bd7c486-5b35-4da9-96d8-1a520c328c65",
      "name": "Lumenier"
    },
    {
      "id": "3bb10775-4567-4c16-8477-df013ae60237",
      "name": "Other"
    },
    {
      "id": "6f25a640-60d9-4b98-8602-67094b7a8914",
      "name": "Parrot"
    },
    {
      "id": "3d7e01fe-3c79-4a0c-86bf-ce6115992024",
      "name": "Quanum"
    },
    {
      "id": "c1665f8e-7c26-442a-ba52-c99acb31b3a2",
      "name": "senseFly",
      "url": "NULL"
    },
    {
      "id": "8d0cf81a-2709-47d2-945d-56e120f61626",
      "name": "TBS"
    },
    {
      "id": "0c71de37-d500-4702-91ef-56d7ec606aa7",
      "name": "Yuneec"
    }
  ]
}

Query Params

q
string

Filter by Manufacturer Name.

Headers

X-API-Key
string

Key provided by AirMap.

 

Use this endpoint to get a list of all available drone manufacturers. You may also include a query string to search based on the provided text.

Suggest Edits

Get Models

Get a list of aircraft models.

 
gethttps://api.airmap.com/aircraft/v2/model
curl -X "GET" "https://api.airmap.com/aircraft/v2/model?manufacturer=2a55b47e-ca49-4b7e-99c7-dee9cd784ec9&q=phantom" \
	-H "X-API-Key: {YOUR API KEY}"
A binary file was returned

You couldn't be authenticated

{
  "status": "success",
  "data": [
    {
      "id": "0bdc3e35-75ba-4e02-9040-d336d11f5202",
      "name": "Phantom 1",
      "manufacturer": {
        "id": "2a55b47e-ca49-4b7e-99c7-dee9cd784ec9",
        "name": "DJI"
      }
    },
    {
      "id": "692fb4f0-fcf7-4f6b-9943-4292b061f09e",
      "name": "Phantom 2",
      "manufacturer": {
        "id": "2a55b47e-ca49-4b7e-99c7-dee9cd784ec9",
        "name": "DJI"
      }
    },
    {
      "id": "b3b1c26f-06da-4eae-9390-667c90039175",
      "name": "Phantom 3",
      "manufacturer": {
        "id": "2a55b47e-ca49-4b7e-99c7-dee9cd784ec9",
        "name": "DJI"
      }
    },
    {
      "id": "786bbd91-0509-4a36-94eb-f9fa46d1d20b",
      "name": "Phantom 4",
      "manufacturer": {
        "id": "2a55b47e-ca49-4b7e-99c7-dee9cd784ec9",
        "name": "DJI"
      }
    },
    {
      "id": "492effbb-2a1d-4458-9dd1-ff41539d8626",
      "name": "Phantom 4 Pro",
      "manufacturer": {
        "id": "2a55b47e-ca49-4b7e-99c7-dee9cd784ec9",
        "name": "DJI"
      }
    }
  ]
}

Query Params

manufacturer
string

Filter by Manufacturer ID.

q
string

Filter by Model Name.

Headers

X-API-Key
string

Key provided by AirMap.

 

Use this endpoint to get a list of all available drone models. You may also include a query string to search for a manufacturer or model based on the provided text.

Suggest Edits

Get Model By ID

Get details about a specific aircraft.

 
gethttps://api.airmap.com/aircraft/v2/model/id
curl -X "GET" "https://api.airmap.com/aircraft/v2/model/786bbd91-0509-4a36-94eb-f9fa46d1d20b" \
	-H "X-API-Key: {YOUR API KEY}"
A binary file was returned

You couldn't be authenticated

{
  "status": "success",
  "data": {
    "id": "786bbd91-0509-4a36-94eb-f9fa46d1d20b",
    "name": "Phantom 4",
    "manufacturer": {
      "id": "2a55b47e-ca49-4b7e-99c7-dee9cd784ec9",
      "name": "DJI"
    }
  }
}

Path Params

id
string
required

unique id of model

Headers

X-API-Key
string

Key provided by AirMap.

 

Get details on a specific drone model.

 

Premium Feature

The Airspace API is a restricted API intended mainly for manufacturers. Please Contact Us for access.

The Airspace API provides detailed geometry of all the airspace advisories in a given area. Each object includes detailed metadata like properties, rules, requirements, etc. Geometry is returned as either GeoJSON or WKT

For more information on the types of airspace objects, please see the Airspace Types

Name
Description

uuid

Airspace ID

name

Airspace Name

type

Airspace Type

country

Country

state

State

city

City

last_updated

Last Updated Timestamp

properties

Airspace metadata and properties that are unique to each airspace object type

geometry

Basic geometry for the airspace object in GeoJSON

related_geometry

Associated geometries that are related to this geometry (such as a runway at an airport)

rules

List of rules for the airspace object

Rules

Name
Description

id

string

Rule ID

name

string

Rule Name

description

string

Rule Description

jurisdiction

string

Rule jurisdiction name

requirements

array

List of requirement objects

restriction_type

string

Rule restriction type

Suggest Edits

Airspace Search

Search for airspace objects by geometry+buffer in either WKT or GeoJSON format.

 
gethttps://api.airmap.com/airspace/v2/search
curl -X "GET" "https://api.airmap.com/airspace/v2/search?geometry=%7B%22type%22:%22Polygon%22,%22coordinates%22:%5B%5B%5B-118.6578369140625,34.11180455556899%5D,%5B-118.43261718749999,33.694637550483186%5D,%5B-117.97393798828125,33.62376800118811%5D,%5B-117.88330078125,33.80197351806589%5D,%5B-118.6578369140625,34.11180455556899%5D%5D%5D%7D&types=airport,controlled_airspace,tfr,wildfire&full=true&geometry_format=wkt" \
	-H "X-API-Key: {YOUR API KEY}"
A binary file was returned

You couldn't be authenticated

{
  "status": "success",
  "data": [
    {
      "id": "8f080b6c-8f5e-48b4-8bb9-603d22579187",
      "latitude": 33.9163948,
      "longitude": -118.3703126,
      "min_circle_radius": 44.8636048555,
      "name": "Wildfire",
      "type": "wildfire",
      "country": "USA",
      "state": "California",
      "city": "Hawthorne",
      "last_updated": "2017-07-31T04:41:23.000Z",
      "properties": {
        "date_effective": "July 26, 2017"
      },
      "geometry": "POLYGON((-118.369827290389 33.9163997021369,-118.369835350314 33.9163206822907,-118.369861746306 33.9162444917131,-118.369905463937 33.9161740583553,-118.369964823133 33.9161120889152,-118.370037542741 33.9160609648236,-118.370120828193 33.9160226507297,-118.370211478903 33.9159986190044,-118.370306011256 33.9159897931602,-118.370400792474 33.9159965123635,-118.37049218022 33.9160185184014,-118.370576662558 33.9160549656043,-118.37065099291 33.916104453343,-118.370712314814 33.9161650798516,-118.370758271698 33.9162345153082,-118.370787097437 33.9163100913656,-118.370797684234 33.9163889036914,-118.370789625196 33.9164679235779,-118.370763229975 33.916544114333,-118.370719512883 33.9166145479786,-118.370660153911 33.9166765177727,-118.370587434178 33.9167276422308,-118.370504148271 33.9167659566478,-118.370413496846 33.9167899886038,-118.370318963626 33.916798814551,-118.370224181521 33.9167920953074,-118.370132793003 33.9167700890919,-118.370048310127 33.9167336416013,-118.369973979551 33.9166841535086,-118.369912657772 33.9166235266335,-118.369866701344 33.9165540908537,-118.36983787632 33.9164785145657,-118.369827290389 33.9163997021369))"
    }
  ]
}

Query Params

types
string

CSV of Airspace Types to include in response.

ignored_types
string

CSV of Airspace Types to ignore in response.

full
boolean

Return full airspace object. If full=false only a subset of an airspace object will be returned. If full=true, each item will be a full airspace object identical to the Airspace by ID endpoint.

geometry
string

Search for airspace intersections in geometry: WKT or GeoJSON

buffer
int32

Distance to buffer geometry parameter in meters

limit
int32

Max number of airspace objects to return (max=100)

offset
int32

Offset of airspace objects to return

geometry_format
string

Return geometry format: WKT or GeoJSON

datetime
date-time

Search for airspace that was active at this time in the past (not available before August 2016). Time format is ISO 8601

Headers

X-API-Key
string
required

Key provided by AirMap.

 

Airspace used in above example call:

{
  "type": "Polygon",
  "coordinates": [
    [
      [
        -118.6578369140625,
        34.11180455556899
      ],
      [
        -118.43261718749999,
        33.694637550483186
      ],
      [
        -117.97393798828125,
        33.62376800118811
      ],
      [
        -117.88330078125,
        33.80197351806589
      ],
      [
        -118.6578369140625,
        34.11180455556899
      ]
    ]
  ]
}
Suggest Edits

Get Airspace by ID

 
gethttps://api.airmap.com/airspace/v2/id
curl -X "GET" "https://api.airmap.com/airspace/v2/{AIRSPACE ID}" \
	-H "X-API-Key: {YOUR API KEY}"
A binary file was returned

You couldn't be authenticated

{
  "status": "success",
  "data": [
    {
      "id": "8f080b6c-8f5e-48b4-8bb9-603d22579187",
      "latitude": 33.9163948,
      "longitude": -118.3703126,
      "min_circle_radius": 44.8636048555,
      "name": "Wildfire",
      "type": "wildfire",
      "specific_type": null,
      "country": "USA",
      "state": "California",
      "city": "Hawthorne",
      "last_updated": "2017-07-31T04:51:23.000Z",
      "properties": {
        "size": null,
        "date_effective": "July 26, 2017",
        "effective_start": null,
        "effective_end": null
      },
      "geometry": {
        "type": "Polygon",
        "coordinates": [
          [
            [
              -118.369827290389,
              33.9163997021369
            ],
            [
              -118.369835350314,
              33.9163206822907
            ],
            [
              -118.369861746306,
              33.9162444917131
            ],
            [
              -118.369905463937,
              33.9161740583553
            ],
            [
              -118.369964823133,
              33.9161120889152
            ],
            [
              -118.370037542741,
              33.9160609648236
            ],
            [
              -118.370120828193,
              33.9160226507297
            ],
            [
              -118.370211478903,
              33.9159986190044
            ],
            [
              -118.370306011256,
              33.9159897931602
            ],
            [
              -118.370400792474,
              33.9159965123635
            ],
            [
              -118.37049218022,
              33.9160185184014
            ],
            [
              -118.370576662558,
              33.9160549656043
            ],
            [
              -118.37065099291,
              33.916104453343
            ],
            [
              -118.370712314814,
              33.9161650798516
            ],
            [
              -118.370758271698,
              33.9162345153082
            ],
            [
              -118.370787097437,
              33.9163100913656
            ],
            [
              -118.370797684234,
              33.9163889036914
            ],
            [
              -118.370789625196,
              33.9164679235779
            ],
            [
              -118.370763229975,
              33.916544114333
            ],
            [
              -118.370719512883,
              33.9166145479786
            ],
            [
              -118.370660153911,
              33.9166765177727
            ],
            [
              -118.370587434178,
              33.9167276422308
            ],
            [
              -118.370504148271,
              33.9167659566478
            ],
            [
              -118.370413496846,
              33.9167899886038
            ],
            [
              -118.370318963626,
              33.916798814551
            ],
            [
              -118.370224181521,
              33.9167920953074
            ],
            [
              -118.370132793003,
              33.9167700890919
            ],
            [
              -118.370048310127,
              33.9167336416013
            ],
            [
              -118.369973979551,
              33.9166841535086
            ],
            [
              -118.369912657772,
              33.9166235266335
            ],
            [
              -118.369866701344,
              33.9165540908537
            ],
            [
              -118.36983787632,
              33.9164785145657
            ],
            [
              -118.369827290389,
              33.9163997021369
            ]
          ]
        ]
      },
      "mid": null,
      "is_managed_geo": false
    }
  ]
}

Path Params

id
string
required

Unique identifier of geometry.

Query Params

geometry_format
string

Return geometry format: wkt or geojson

Headers

X-API-Key
string
required

Key provided by AirMap.

 
Suggest Edits

Airspace Snapshot Download

 

The Airspace Snapshot service enables developers to download all airspace objects for a given country. It is called a "snapshot" service because the data is generated monthly and could be out of date anytime after it is generated. The Airspace Snapshot API will return a link to download the airspace file for a provided country.

The "current" snapshot is generated on the 15th of the month and can be accessed with the Airspace Snapshot Download Current .

The "next" snapshot is generated daily starting on the 5th of the month up until the 15th of the month, at which point it is equivalent to the "current" snapshot and will be no longer be available until the next month. The "next" snapshot is intended to give developers a preview of the upcoming changes that will be generated on the 15th. The "next" snapshot can be accessed with the Airspace Snapshot Download Next

Temporary Advisories Note

The Airspace Snapshot service includes all objects, including temporary advisories like TFRs and wildfires. Developers should use discretion in using the data, since many of the temporary advisories will likely change soon after the generation date. In many cases, it is probably better to use the standard Airspace Search to check for temporary airspace and rely on the airspace snapshot for objects that are not as prone to change - like airports and controlled airspace.

Suggest Edits

Airspace Snapshot Download Current

Download a snapshot of airspace

 
gethttps://api.airmap.com/airspace/v2/snapshot/country_code/current
curl -X "GET" "https://api.airmap.com/airspace/v2/snapshot/USA/current" \
	-H "X-API-Key: {YOUR API KEY}"
A binary file was returned

You couldn't be authenticated

{
  "status": "success",
  "data": {
    "url": "https://link-to-airspace-download/USA.gz",
    "last_updated": "2016-10-24T20:25:02Z"
  }
}

Path Params

country_code
string
required

ISO 3166-1 Alpha-3 Country Code

Headers

X-API-Key
string

Key provided by AirMap.

 
Suggest Edits

Airspace Snapshot Download Next

Download a snapshot of airspace

 
gethttps://api.airmap.com/airspace/v2/snapshot/country_code/next
curl -X "GET" "https://api.airmap.com/airspace/v2/snapshot/USA/next" \
	-H "X-API-Key: {YOUR API KEY}"
A binary file was returned

You couldn't be authenticated

{
  "status": "success",
  "data": {
    "url": "https://link-to-airspace-download/USA.gz",
    "last_updated": "2016-10-24T20:25:02Z"
  }
}

Path Params

country_code
string
required

ISO 3166-1 Alpha-3 Country Code

Headers

X-API-Key
string
required

Key provided by AirMap.

 
Suggest Edits

Airspace Snapshot Countries

Get all ISO 3166-1 Alpha-3 country codes available for airspace snapshot download

 
gethttps://api.airmap.com/airspace/v2/snapshot/country
curl -X "GET" "https://api.airmap.com/airspace/v2/snapshot/country" \
	-H "X-API-Key: {YOUR API KEY}"
A binary file was returned

You couldn't be authenticated

{
  "status": "success",
  "data": [
    "ABW",
    "AFG",
    "AGO",
    "ALB",
    "AND",
    "ARE",
    "ARG",
    "ARM",
    "..."
    "USA",
    "UZB",
    "VEN",
    "VGB",
    "VNM",
    "VUT",
    "WAL",
    "WLF",
    "WSM",
    "YEM",
    "ZAF",
    "ZMB",
    "ZWE"
  ]
}

Headers

X-API-Key
string
required

Key provided by AirMap.

 
 

Status Object

Field
Description

advisories

A list of all airspace objects intersecting with the proposed flight. Includes status color and distance. See Airspace Objects

max_safe_radius

The distance between a flight's takeoff point and the nearest yellow or red zone.

color

"green", "yellow" or "red". Green means no known advisories, yellow means there are known advisories in the area and the operator may require additional authorization or actions to fly in the area, and red means that flight is strictly regulated and probably not safe to fly for the majority of operators.

weather

A weather object containing condition, wind, humidity, visibility, precipitation and temperature.

Advisory Object

Name
Bounds
Required
Description

color

red/yellow/green

yes

green = no issues, yellow = action required to fly, red = known to be unsafe

distance

0, infinite

yes

Distance in meters between flight and this advisory

latitude

-90, 90

yes

Reference point latitude

longitude

-180, 180

yes

Reference point longitude

country

3-digit country code

yes

Country

state

no

State

city

no

City

Requirement Object

Name
Required
Description

id

no

Requirement owner ID

type

yes

Airspace type

name

yes

Airspace name

notice.digital

no

True if D-NAS is accepted

notice.phone

no

Provided if notice can be given by phone

Weather Object

Field
Units
Description

condition

overall weather description like "partly cloudy"

wind

wind object

wind.heading

degrees

direction of wind

wind.speed

km/h

sustained wind speed

wind.gusting

km/h

max wind speed of gusts

humidity

%

relative humidity

visibility

km

range of visibility in meters

precipitation

%

probability of rain

temperature

C

temperature

Suggest Edits

Get Flight Status by Point

Get flight advisories using a point and radius

 
gethttps://api.airmap.com/status/v2/point
curl -X "GET" "https://api.airmap.com/status/v2/point/?latitude=34.016606&longitude=-118.4688775&weather=true&types=airport,controlled_airspace,special_use_airspace,school,tfr" \
	-H "X-API-Key: {YOUR API KEY}"
import requests

url="https://api.airmap.com/status/v2/point/"

params = {
  "latitude": 34.016606,
  "longitude": -118.4688775,
  "weather": "true",
  "types": "airport,controlled_airspace,special_use_airspace,school,tfr",
}

headers = {
  "X-API-Key": "<YOUR API KEY>"
}
    
    
def send_request(url, params, headers):
    # Status
    # GET https://api.airmap.com/status/v2/point/
    try:
        response = requests.get(
            url,
            params,
            headers
        )
        print('Response HTTP Status Code: {status_code}'.format(
            status_code=response.status_code))
        print('Response HTTP Response Body: {content}'.format(
            content=response.content))
    except requests.exceptions.RequestException:
        print('HTTP Request failed')
let coordinate = CLLocationCoordinate2D(latitude: 34.016606, longitude: -118.4688775)

AirMapClient.getFlightPointStatus(coordinate, types: nil, ignoredTypes: nil, radius: 100) { (status, error) in

  if let error = error {
  	print(error.localizedDescription)
  }

  if let status = status {
  	print(status)
  }
}
Coordinate coordinate = new Coordinate(34.016606, -118.4688775);
boolean showWeather = true; //Return weather information
Date date = new Date(); //The current date/time
double buffer = 1000; //1000 meters

List<AirMapLayerType> types = Arrays.asList(AirMapLayerType.AirportsCommercial, AirMapLayerType.ControlledAirspace, AirMapLayerType.SpecialUse, AirMapLayerType.TFR);

AirMap.checkCoordinate(locationToCheck, buffer, types, null, showWeather, date, new Callback<AirMapStatus>() {
            @Override
            public void onSuccess(final AirMapStatus response) {
                if (response.getColor() == AirMapStatus.StatusColor.Red) {
                    Toast.makeText(MainActivity.this, "Not safe to fly!", Toast.LENGTH_SHORT).show();
                }
            }

            @Override
            public void onError(final AirMapException e) {
                Log.v(TAG, "Error getting Status");
                e.printStackTrace();
            }
        });
A binary file was returned

You couldn't be authenticated

{
  "status": "success",
  "data": {
    "max_safe_distance": 0,
    "advisory_color": "yellow",
    "advisories": [
      {
        "id": "87ed8bdc-f140-422e-9802-b4427e440c2e",
        "name": "SANTA MONICA CLASS D",
        "last_updated": "2017-07-18T23:13:56.000Z",
        "latitude": 34.0247549,
        "longitude": -118.446259,
        "distance": 0,
        "type": "controlled_airspace",
        "city": "Los Angeles",
        "state": "California",
        "country": "USA",
        "properties": {
          "type": "d",
          "airspace_class": "d"
        },
        "color": "yellow"
      },
      {
        "id": "d537fb86-2b15-48ec-ae33-4e5771dba7a9",
        "name": "SANTA MONICA MUNI",
        "last_updated": "2017-07-11T17:51:51.000Z",
        "latitude": 34.0158337,
        "longitude": -118.4513058,
        "distance": 1622,
        "type": "airport",
        "city": "Santa Monica",
        "state": "California",
        "country": "USA",
        "properties": {
          "faa": "SMO",
          "iata": "SMO",
          "icao": "KSMO",
          "paved": true,
          "phone": "+13104588591",
          "tower": true,
          "runways": [
            {
              "name": "03",
              "length": 1516,
              "true_bearing": 44.45,
              "runway_threshold_latitude": 34.0109556,
              "runway_threshold_longitude": -118.4570639
            },
            {
              "name": "21",
              "length": 1516,
              "true_bearing": 224.45,
              "runway_threshold_latitude": 34.0206889,
              "runway_threshold_longitude": -118.4455444
            }
          ],
          "elevation": 177,
          "longest_runway": 1516,
          "instrument_approach_procedure": true,
          "use": "public",
          "type": "public"
        },
        "color": "yellow",
        "requirements": {
          "notice": {
            "digital": false,
            "phone": "+13104588591"
          }
        }
      }
    ],
    "weather": {
      "condition": "Mostly Cloudy",
      "icon": "mostly_cloudy_night",
      "wind": {
        "heading": 222,
        "speed": 7,
        "gusting": 0
      },
      "humidity": 0.91,
      "visibility": 13,
      "precipitation": 0,
      "temperature": 18
    }
  }
}

Query Params

latitude
double
required

Latitude in decimal format. Bounds: -90, 90.

longitude
double
required

Longitude in decimal format. Bounds: -180, 180.

types
string

CSV of Airspace Types to include in response.

ignored_types
string

CSV of Airspace Types to exclude in response.

weather
boolean

Include current weather conditions in response.

datetime
date

Date and time for planned flight in ISO 8601 format. Bounds: now, +7 days.

buffer
int32

Buffer size around latitude/longitude in meters

Headers

X-API-Key
string

Key provided by AirMap.

 
Suggest Edits

Get Airspace Status by Path

Get flight advisories using a line path

 
gethttps://api.airmap.com/status/v2/path
curl -X "GET" "https://api.airmap.com/status/v2/path/?latitude=34.016606&longitude=-118.4688775&weather=true&geometry=LINESTRING%28-118.4688775%2034.016606,-118.497462%2034.014587,-118.498631%2034.013591,-118.497076%2034.012222%29&types=airport,controlled_airspace,special_use_airspace,school,tfr" \
	-H "X-API-Key:  {YOUR API KEY}"
import requests

url="https://api.airmap.com/status/v2/path/"

params = {
    "latitude": 33.9425,
    "longitude": -118.4081,
    "geometry" : "LINESTRING(-118.494940 34.016588,-118.497462 34.014587,-118.498631 34.013591,-118.497076 34.012222)",
    "weather": "true",
    "width" : 100,
 }

headers = {
    "X-API-Key": '<YOUR API KEY>'
}


def send_request(url, params, headers):
    # Status
    # GET https://api.airmap.com/status/v2/path/
    try:
        response = requests.get(
            url,
            params,
            headers
        )
        print('Response HTTP Status Code: {status_code}'.format(
            status_code=response.status_code))
        print('Response HTTP Response Body: {content}'.format(
            content=response.content))
    except requests.exceptions.RequestException:
        print('HTTP Request failed')
let coordinate = CLLocationCoordinate2D(latitude: 34.016779, longitude: -118.494698)
let point1 = CLLocationCoordinate2D(latitude: 109.5, longitude: 41.00)
let point2 = CLLocationCoordinate2D(latitude: -102.06, longitude: 40.99)
let point3 = CLLocationCoordinate2D(latitude: -102.03, longitude: 36.99)
let point4 = CLLocationCoordinate2D(latitude: -109.04, longitude: 36.99)

let geometry = [point1, point2, point3, point4]

AirMapClient.getFlightPathStatus(coordinate, types: nil, ignoredTypes: nil, geometry: geometry, width: 1) { (status, error) in
  if let error = error {
  	print(error.localizedDescription)
  }

  if let status = status {
  	print(status)
  }
}
List<Coordinate> coords = new ArrayList<>();
coords.add(new Coordinate(34.016588, -118.494940));
coords.add(new Coordinate(34.014587, -118.497462));
coords.add(new Coordinate(34.013591, -118.498631));
coords.add(new Coordinate(34.012222, -118.497076));
Coordinate takeOffPoint = new Coordinate(34.016606, -118.4688775);
Date now = new Date();
boolean showWeather = true;

List<AirMapLayerType> types = Arrays.asList(AirMapLayerType.AirportsCommercial, AirMapLayerType.ControlledAirspace, AirMapLayerType.SpecialUse, AirMapLayerType.TFR);

AirMap.checkFlightPath(coords, 1, takeOffPoint, types, null, showWeather, now, new AirMapCallback<AirMapStatus>() {
	@Override
        public void onSuccess(AirMapStatus response) {

        }

        @Override
        public void onError(AirMapException e) {
            
        }
});
A binary file was returned

You couldn't be authenticated

{
  "status": "success",
  "data": {
    "advisory_color": "yellow",
    "advisories": [
      {
        "id": "87ed8bdc-f140-422e-9802-b4427e440c2e",
        "name": "SANTA MONICA CLASS D",
        "last_updated": "2017-07-18T23:13:56.000Z",
        "latitude": 34.0247549,
        "longitude": -118.446259,
        "distance": 0,
        "type": "controlled_airspace",
        "city": "Los Angeles",
        "state": "California",
        "country": "USA",
        "properties": {
          "type": "d",
          "airspace_class": "d"
        },
        "color": "yellow"
      },
      {
        "id": "d537fb86-2b15-48ec-ae33-4e5771dba7a9",
        "name": "SANTA MONICA MUNI",
        "last_updated": "2017-07-11T17:51:51.000Z",
        "latitude": 34.0158337,
        "longitude": -118.4513058,
        "distance": 1622,
        "type": "airport",
        "city": "Santa Monica",
        "state": "California",
        "country": "USA",
        "properties": {
          "faa": "SMO",
          "iata": "SMO",
          "icao": "KSMO",
          "paved": true,
          "phone": "+13104588591",
          "tower": true,
          "runways": [
            {
              "name": "03",
              "length": 1516,
              "true_bearing": 44.45,
              "runway_threshold_latitude": 34.0109556,
              "runway_threshold_longitude": -118.4570639
            },
            {
              "name": "21",
              "length": 1516,
              "true_bearing": 224.45,
              "runway_threshold_latitude": 34.0206889,
              "runway_threshold_longitude": -118.4455444
            }
          ],
          "elevation": 177,
          "longest_runway": 1516,
          "instrument_approach_procedure": true,
          "use": "public",
          "type": "public"
        },
        "color": "yellow",
        "requirements": {
          "notice": {
            "digital": false,
            "phone": "+13104588591"
          }
        }
      }
    ],
    "weather": {
      "condition": "Cloudy",
      "icon": "cloudy",
      "wind": {
        "heading": 218,
        "speed": 3,
        "gusting": 0
      },
      "humidity": 0.93,
      "visibility": 13,
      "precipitation": 0,
      "temperature": 18
    }
  }
}

Query Params

latitude
double
required

Latitude in decimal format. Bounds: -90, 90.

longitude
double
required

Longitude in decimal format. Bounds: -180, 180.

types
string

CSV of Airspace Types to include in response.

ignored_types
string

CSV of Airspace Types to exclude in response.

weather
boolean

Include current weather conditions in response.

datetime
date

Date and time for planned flight in ISO 8601 format. Bounds: now, +7 days.

geometry
string
required

List of latitude/longitude of flight as geoJSON or WKT. Must be a linestring.

buffer
int32

Path width in meters. Bounds: 0, 10000.

Headers

X-API-Key
string
required

Key provided by AirMap.

 

Reminder

The starting location (latitude and longitude) must be within the bounds of the provided path and width of path

Example of path before URL encoding:

LINESTRING(-109.05 41.00, -102.06 40.99, -102.03 36.99, -109.04 36.99)

Suggest Edits

Get Airspace Status by Polygon

Get flight advisories using a polygon

 
gethttps://api.airmap.com/status/v2/polygon
curl -X "GET" "https://api.airmap.com/status/v2/polygon/?latitude=34.01645976561245&longitude=-118.49540501832962&weather=true&geometry=POLYGON%28-118.49540501832962%2034.01645976561245,-118.49540501832962%2034.01694220321598,-118.49469959735869%2034.01694220321598,-118.49469959735869%2034.01645976561245,-118.49540501832962%2034.01645976561245%29&types=airport,controlled_airspace,special_use_airspace,school,tfr" \
	-H "X-API-Key: {YOUR API KEY}"
import requests

query = {
  'latitude': 33.9425,
  'longitude': -118.4081,
  'geometry' : "POLYGON(-109.05 41.00, -102.06 40.99, -102.03 36.99, -109.04 36.99, -109.05 41.00)",
  'unique_id': 'example'
}

headers = {
  'X-API-Key': '<YOUR_API_KEY>'
}

r = requests.get('https://api.airmap.com/status/v2/polygon', params = query, headers = headers);
print(r.json())
let coordinate = CLLocationCoordinate2D(latitude: 34.016779, longitude: -118.494698)
let point1 = CLLocationCoordinate2D(latitude: 109.05, longitude: 41.00)
let point2 = CLLocationCoordinate2D(latitude: -102.06, longitude: 40.99)
let point3 = CLLocationCoordinate2D(latitude: -102.03, longitude: 36.99)
let point4 = CLLocationCoordinate2D(latitude: -109.05, longitude: 41.00

let geometry = [point1, point2, point3, point4]

AirMapClient.getFlightPolygonStatus(coordinate, types: nil, ignoredTypes: nil, geometry: geometry) { (status, error) in

  if let error = error {
  	print(error.localizedDescription)
  }

  if let status = status {
  	print(status)
  }
}
A binary file was returned

You couldn't be authenticated

{
  "status": "success",
  "data": {
    "advisory_color": "yellow",
    "advisories": [
      {
        "id": "87ed8bdc-f140-422e-9802-b4427e440c2e",
        "name": "SANTA MONICA CLASS D",
        "last_updated": "2017-07-18T23:13:56.000Z",
        "latitude": 34.0247549,
        "longitude": -118.446259,
        "distance": 0,
        "type": "controlled_airspace",
        "city": "Los Angeles",
        "state": "California",
        "country": "USA",
        "properties": {
          "type": "d",
          "airspace_class": "d"
        },
        "color": "yellow"
      },
      {
        "id": "d537fb86-2b15-48ec-ae33-4e5771dba7a9",
        "name": "SANTA MONICA MUNI",
        "last_updated": "2017-07-11T17:51:51.000Z",
        "latitude": 34.0158337,
        "longitude": -118.4513058,
        "distance": 4065,
        "type": "airport",
        "city": "Santa Monica",
        "state": "California",
        "country": "USA",
        "properties": {
          "faa": "SMO",
          "iata": "SMO",
          "icao": "KSMO",
          "paved": true,
          "phone": "+13104588591",
          "tower": true,
          "runways": [
            {
              "name": "03",
              "length": 1516,
              "true_bearing": 44.45,
              "runway_threshold_latitude": 34.0109556,
              "runway_threshold_longitude": -118.4570639
            },
            {
              "name": "21",
              "length": 1516,
              "true_bearing": 224.45,
              "runway_threshold_latitude": 34.0206889,
              "runway_threshold_longitude": -118.4455444
            }
          ],
          "elevation": 177,
          "longest_runway": 1516,
          "instrument_approach_procedure": true,
          "use": "public",
          "type": "public"
        },
        "color": "yellow",
        "requirements": {
          "notice": {
            "digital": false,
            "phone": "+13104588591"
          }
        }
      }
    ],
    "weather": {
      "condition": "Cloudy",
      "icon": "cloudy",
      "wind": {
        "heading": 222,
        "speed": 3,
        "gusting": 0
      },
      "humidity": 0.95,
      "visibility": 13,
      "precipitation": 0,
      "temperature": 18
    }
  }
}

Query Params

latitude
double
required

latitude in decimal format

longitude
double
required

longitude in decimal format

types
string

CSV of Airspace Types to include in response

ignored_types
string

CSV of Airspace Types to exclude in response

weather
boolean

Include current weather conditions in response

datetime
date

Date and time for planned flight in ISO 8601 format

geometry
string
required

List of latitude/longitude for a Polygon flight as geoJSON or WKT. First and last points must be the same

Headers

X-API-Key
string
required

Key provided by AirMap.

 

Reminder

The starting location (latitude and longitude) must be within the bounds of the provided polygon

Example of polygon before URL encoding:

POLYGON(-109.05 41.00, -102.06 40.99, -102.03 36.99, -109.04 36.99, -109.05 41.00)

 

Get details about a pilot's profile, preferences and provides identity verification (email, phone, etc).

Suggest Edits

Get User Pilot Profile

Get the pilot profile of the current logged in user.

 
gethttps://api.airmap.com/pilot/v2/profile
curl -X "GET" "https://api.airmap.com/pilot/v2/profile" \
	-H "Authorization: Bearer {YOUR ACCESS TOKEN}" \
	-H "X-API-Key: {YOUR API KEY}"
A binary file was returned

You couldn't be authenticated

{
  "status": "success",
  "data": {
    "id": "auth0|abc123",
    "email": "john@example.com",
    "first_name": "John",
    "last_name": "Smith",
    "username": "jsmith",
    "picture_url": "https://s.gravatar.com/avatar/03284b1c1b3901174e3eeda1c721eb2d?s=480&r=pg&d=https%3A%2F%2Fcdn.auth0.com%2Favatars%2Fjo.png",
    "app_metadata": {},
    "created_at": "2017-03-08T04:24:49.684Z",
    "verification_status": {
      "email": true,
      "phone": false
    },
    "statistics": {
      "flight": {
        "total": 17,
        "last_flight_time": "2017-07-27T19:44:38.416Z"
      },
      "aircraft": {
        "total": 2
      }
    },
    "user_metadata": {}
  }
}

Query Params

exclude
string

CSV (no spaces). Properties that are excludable: aircraft, user_metadata, app_metadata, authorized_apps

statistics
boolean

Retrieve basic statistics about the pilot.

Headers

Authorization
string
required

Example: 'Bearer [Token]'

X-API-Key
string
required

Key provided by AirMap.

 

Authorization

API Key Token Result
Yes Yes - Your Profile Full Response
{
    "status": "success",
    "data": {
        "id": "auth0|abc123",
        "email": "r2d2@airmap.com",
        "first_name": "R2D2",
        "last_name": "Skywalker",
        "username": "R2theD2",
        "picture_url": "https://lh3.googleusercontent.com/-XdUIqdMkCWA/AAAAAAAAAAI/AAAAAAAAAAA/4252rscbv5M/photo.jpg",
        "phone": "+15557779999",
        "verification_status": {
            "phone": false,
            "email": true
        },
        "user_metadata": {
            "faa_registration_number": ...,
            ...
        },
        "app_metadata": {
            ...
        },
        "statistics": {
            "flight": {
                "total": 10,
                "last_flight_time": "2016-07-05T10:51:19.000Z"
            },
            "aircraft": {
                "total": 2
            }
        }
    }
}
Suggest Edits

Get Pilot Profile

Get a pilot's profile.

 
gethttps://api.airmap.com/pilot/v2/id
curl -X "GET" "https://api.airmap.com/pilot/v2/{PILOT ID}" \
	-H "Authorization: Bearer {YOUR ACCESS TOKEN}" \
	-H "X-API-Key: {YOUR API KEY}"
A binary file was returned

You couldn't be authenticated

{
  "status": "success",
  "data": {
    "id": "auth0|abc123",
    "email": "john@example.com",
    "first_name": "John",
    "last_name": "Smith",
    "username": "jsmith",
    "picture_url": "https://s.gravatar.com/avatar/03284b1c1b3901174e3eeda1c721eb2d?s=480&r=pg&d=https%3A%2F%2Fcdn.auth0.com%2Favatars%2Fjo.png",
    "app_metadata": {},
    "created_at": "2017-03-08T04:24:49.684Z",
    "verification_status": {
      "email": true,
      "phone": false
    },
    "statistics": {
      "flight": {
        "total": 17,
        "last_flight_time": "2017-07-27T19:44:38.416Z"
      },
      "aircraft": {
        "total": 2
      }
    },
    "user_metadata": {}
  }
}

Path Params

id
string
required

Unique identifier of profile

Query Params

exclude
string

CSV (no spaces). Properties that are excludable: aircraft, user_metadata, app_metadata, authorized_apps

statistics
boolean

Retrieve basic statistics about the pilot.

Headers

Authorization
string

Example: 'Bearer [Token]'

X-API-Key
string
required

Key provided by AirMap.

 

Authorization

API Key Token Result
Yes No Public Response
Yes Yes - Your Profile Full Response
Yes Yes - Someone Else's Profile Public Response
{
    "status": "success",
    "data": {
        "id": "auth0|abc123",
        "email": "r2d2@airmap.com",
        "first_name": "R2D2",
        "last_name": "Skywalker",
        "username": "R2theD2",
        "picture_url": "https://lh3.googleusercontent.com/-XdUIqdMkCWA/AAAAAAAAAAI/AAAAAAAAAAA/4252rscbv5M/photo.jpg",
        "phone": "+15557779999",
        "verification_status": {
            "phone": false,
            "email": true
        },
        "user_metadata": {
            "faa_registration_number": ...,
            ...
        },
        "app_metadata": {
            ...
        },
        "statistics": {
            "flight": {
                "total": 10,
                "last_flight_time": "2016-07-05T10:51:19.000Z"
            },
            "aircraft": {
                "total": 2
            }
        }
    }
}
{
    "status": "success",
    "data": {
        "id": "auth0|abc123",
        "email": "r2d2@airmap.com",
        "first_name": "R2D2",
        "last_name": "Skywalker",
        "username": "R2theD2",
        "picture_url": "https://lh3.googleusercontent.com/-XdUIqdMkCWA/AAAAAAAAAAI/AAAAAAAAAAA/4252rscbv5M/photo.jpg",
        "phone": "+15557779999",
        "verification_status": {
            "phone": false,
            "email": true
        },
        "user_metadata": {
            "faa_registration_number": ...,
            ...
        },
        "app_metadata": {
            ...
        },
        "statistics": {
            "flight": {
                "total": 10,
                "last_flight_time": "2016-07-05T10:51:19.000Z"
                },
            "aircraft": {
                "total": 2
            }
        }
    }
}
 
Public Response:
{
    "status": "success",
    "data": {
        "id": "auth0|abc123",
        "username": "R2theD2",
        "picture_url": "https://lh3.googleusercontent.com/-XdUIqdMkCWA/AAAAAAAAAAI/AAAAAAAAAAA/4252rscbv5M/photo.jpg"
    }
}
Suggest Edits

Update Pilot Profile

Update a pilot's profile.

If a the phone number is changed the validation status will change to false. A verification token can be sent using the /pilot/v2/:id/phone/send_token route.

 
patchhttps://api.airmap.com/pilot/v2/id
curl -X "PATCH" "https://api.airmap.com/pilot/v2/{PILOT ID}" \
	-H "X-API-Key: {YOUR API KEY}" \
	-H "Authorization: Bearer {YOUR ACCESS TOKEN}" \
	-H "Content-Type: application/json; charset=utf-8" \
	-d "{\"username\":\"johnsmith\"}"
A binary file was returned

You couldn't be authenticated

{
  "status": "success",
  "data": {
    "username": "johnsmith"
  }
}

Path Params

id
string
required

unique identifier of user

Body Params

first_name
string

First name

last_name
string

Last name

username
string

Username

phone
string

Phone number in e164 format (+15557779999)

app_metadata
object

Key/Value store for custom user meta data scoped to the application.

 
user_metadata
object

User preferences, etc.

 

Headers

Authorization
string
required

Example: 'Bearer [Token]'

X-API-Key
string

Key provided by AirMap.

 

Authorization

API Key Token Result
Yes No 401
Yes Yes - Your Profile Full Response
Yes Yes - Someone Else's Profile Public Response
Suggest Edits

Send Phone Verification Token

A six digit token will be sent via SMS to the current phone number attached to the pilot's profile. That token can be verified using Verify Phone Token

 
posthttps://api.airmap.com/pilot/v2/id/phone/send_token
curl -X "POST" "https://api.airmap.com/pilot/v2/{PILOT ID}/phone/send_token" \
	-H "X-API-Key: {YOUR API KEY}" \
	-H "Authorization: Bearer {YOUR ACCESS TOKEN}" \
	-H "Content-Type: application/json; charset=utf-8" \
	-d "{}"
A binary file was returned

You couldn't be authenticated

{
  "status": "success",
  "data": null
}

Path Params

id
string
required

User ID from identity service.

Headers

Authorization
string
required

'Bearer [Token]'

X-API-Key
string
required

Key provided by AirMap.

 

Authorization

API Key Token Result
Yes No 401
Yes Yes - Your Profile Allow
Yes Yes - Someone Else's Profile 403
Suggest Edits

Verify Phone Token

 
posthttps://api.airmap.com/pilot/v2/id/phone/verify_token
curl -X "POST" "https://api.airmap.com/pilot/v2/{PILOT ID}/phone/verify_token" \
  -H "X-API-Key: {YOUR API KEY}" \
  -H "Authorization: Bearer {YOUR ACCESS TOKEN}" \
	-H "Content-Type: application/json; charset=utf-8" \
	-d "{\"token\":{VERIFICATION TOKEN}}"
A binary file was returned

You couldn't be authenticated


{
    "status": "success",
    "data": {
        "verified": true   
    }
}

Path Params

id
string
required

User ID from identity service.

Body Params

token
int32
required

Token sent to phone once. If original verification fails, a request to resend verification must be made.

Headers

Authorization
string
required

Example: 'Bearer [Token]'

X-API-Key
string
required

Key provided by AirMap.

 

Failed Verification

If the verification fails another token should be requested via the /pilot/v2/:id/phone/send_token route.

Authorization

API Key Token Result
Yes No 401
Yes Yes - Your Profile Allow
Yes Yes - Someone Else's Profile 403
Suggest Edits

Get Pilot Aircraft

Get details about a pilot's profile, preferences and provides identity verification (email, phone, etc).

 
gethttps://api.airmap.com/pilot/v2/id/:aircraft
curl -X "GET" "https://api.airmap.com/pilot/v2/{PILOT ID}/aircraft" \
	-H "Authorization: Bearer {YOUR ACCESS TOKEN}" \
	-H "X-API-Key: {YOUR API KEY}"
A binary file was returned

You couldn't be authenticated

{
  "status": "success",
  "data": [
    {
      "id": "aircraft|abc123",
      "nickname": "Phantom",
      "created_at": "2017-07-30T21:37:55.269Z",
      "model": {
        "id": "492effbb-2a1d-4458-9dd1-ff41539d8626",
        "name": "Phantom 4 Pro",
        "manufacturer": {
          "id": "2a55b47e-ca49-4b7e-99c7-dee9cd784ec9",
          "name": "DJI"
        }
      }
    }
  ]
}

Path Params

id
string
required

unique identifier of profile

Headers

Authorization
string
required

Example: 'Bearer [Token]'

X-API-Key
string
required

Key provided by AirMap.

 

Authorization

API Key Token Result
Yes No 401
Yes Yes - Your Profile Allow
Yes Yes - Someone Else's Profile 403
Suggest Edits

Add Pilot Aircraft

Get details about a pilot's profile, preferences and provides identity verification (email, phone, etc).

 
posthttps://api.airmap.com/pilot/v2/id/:aircraft
curl -X "POST" "https://api.airmap.com/pilot/v2/{PILOT ID}/aircraft" \
	-H "X-API-Key: {YOUR API KEY}" \
	-H "Authorization: Bearer {YOUR ACCESS TOKEN}" \
	-H "Content-Type: application/json; charset=utf-8" \
	-d "{\"model_id\":\"b3b1c26f-06da-4eae-9390-667c90039175\",\"nickname\":\"Commercial Drone\"}"
A binary file was returned

You couldn't be authenticated

{
  "status": "success",
  "data": {
    "id": "aircraft|abc123",
    "nickname": "Commercial Drone",
    "created_at": "2017-07-31T03:54:49.707Z",
    "model": {
      "id": "b3b1c26f-06da-4eae-9390-667c90039175",
      "name": "Phantom 3",
      "manufacturer": {
        "id": "2a55b47e-ca49-4b7e-99c7-dee9cd784ec9",
        "name": "DJI"
      }
    }
  }
}

Path Params

id
string
required

unique identifier of profile

Body Params

model_id
string
required

Aircraft Model ID

nickname
string
required

Nickname

Headers

Authorization
string
required

Example: 'Bearer [Token]'

X-API-Key
string
required

Key provided by AirMap.

 

Authorization

API Key Token Result
Yes No 401
Yes Yes - Your Profile Allow
Yes Yes - Someone Else's Profile 403
Suggest Edits

Update Pilot Aircraft

Get details about a pilot's profile, preferences and provides identity verification (email, phone, etc).

 
patchhttps://api.airmap.com/pilot/v2/id/:aircraft/aircraft_id
curl -X "PATCH" "https://api.airmap.com/pilot/v2/{PILOT ID}/aircraft/{AIRCRAFT ID}" \
	-H "X-API-Key: {YOUR API KEY}" \
	-H "Authorization: Bearer {YOUR ACCESS TOKEN}" \
	-H "Content-Type: application/json; charset=utf-8" \
	-d "{\"nickname\":\"Party Drone\"}"
A binary file was returned

You couldn't be authenticated

{
  "status": "success",
  "data": {
    "nickname": "Party Drone"
  }
}

Path Params

id
string
required

unique identifier of profile

aircraft_id
string
required

Body Params

nickname
string

Nickname

Headers

Authorization
string
required

Example: 'Bearer [Token]'

X-API-Key
string
required

Key provided by AirMap.

 

Authorization

API Key Token Result
Yes No 401
Yes Yes - Looking up themselves Allow
Yes Yes - Looking up someone else 403
Suggest Edits

Delete Pilot Aircraft

 
deletehttps://api.airmap.com/pilot/v2/id/:aircraft/aircraft_id
curl -X "DELETE" "https://api.airmap.com/pilot/v2/{PILOT ID}/aircraft/{AIRCRAFT ID}" \
	-H "X-API-Key: {YOUR API KEY}" \
	-H "Authorization: Bearer {YOUR ACCESS TOKEN}" \
	-H "Content-Type: application/json; charset=utf-8" \
	-d "{}"
A binary file was returned

You couldn't be authenticated

{
    "status": "success",
    "data": {}
}

Path Params

id
string
required

unique identifier of profile

aircraft_id
string
required

Headers

Authorization
string
required

Example: 'Bearer [Token]'

X-API-Key
string
required

Key provided by AirMap.

 

Authorization

API Key Token Result
Yes No 401
Yes Yes - Your Profile Allow
Yes Yes - Someone Else's Profile 403
Suggest Edits

Vector Tiles

 
gethttps://api.airmap.com/maps/v4/tiles/layers/:z/:x/:y
curl -X "GET" "https://api.airmap.com/maps/v4/tiles/layers/:z/:x/:y" \
	-H "X-API-Key: {YOUR API KEY}"
A binary file was returned

You couldn't be authenticated

Mapbox Vector Tile in Google Protocol Buffer format

Path Params

layers
string
required
z
int32
required
x
int32
required
y
int32
required

Headers

X-API-KEY
string
required

Key provided by AirMap.

 

FORMAT: 1A

Tile API

Serves vector map tiles in the OSM slippy format

Tiles [/maps/v4/tiles/:layers/:z/:x/:y]

Get a Tile [GET]

Given a comma separated list of layers and a Z/X/Y position, return a map tile

  • Parameters

    • layers: airports_recreational,class_b,national_parks (string, required)
      Comma separated list of airspace layers
    • z (integer, required)
      Latitude in decimal format
    • x (integer, required)
      Longitude in decimal format
    • y: (integer, required)
      Search radius in meters (default 20,000m)
  • Response 200

    • Body
      Protocol Buffer in Mapbox Vector Tile format

TileJSON [/maps/v4/tilejson/:layers]

Provide a TileJSON spec map style for use with MapBox GL

List Geometry Nearby [GET]

  • Parameters

    • layers: airports_recreational,class_b,national_parks (string, required)
      Comma separated list of airspace layers
    • token: (string, required)
      Your API key to append to map requests
    • theme: dark (string, optional)
      Option to include a themed base layer. Options available: standard, dark, light, satellite
  • Response 200

    TileJSON response

Suggest Edits

Get Evaluation for Flight Plan

 

Header Auth

 Authentication is required for this endpoint.
gethttps://api.airmap.com/advisory/v1/rules/flight_plan_id/evaluation
curl --request GET \
  --url https://api.airmap.com/advisory/v1/rules/flight_plan_id/evaluation \
  --header 'x-api-key: X-API-KEY'
var request = require("request");

var options = { method: 'GET',
  url: 'https://api.airmap.com/advisory/v1/rules/flight_plan_id/evaluation',
  headers: { 'x-api-key': 'X-API-KEY' } };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("https://api.airmap.com/advisory/v1/rules/flight_plan_id/evaluation")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)
request["x-api-key"] = 'X-API-KEY'

response = http.request(request)
puts response.read_body
var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("GET", "https://api.airmap.com/advisory/v1/rules/flight_plan_id/evaluation");
xhr.setRequestHeader("x-api-key", "X-API-KEY");

xhr.send(data);
import requests

url = "https://api.airmap.com/advisory/v1/rules/flight_plan_id/evaluation"

headers = {'x-api-key': 'X-API-KEY'}

response = requests.request("GET", url, headers=headers)

print(response.text)
A binary file was returned

You couldn't be authenticated

{
  "status": "success",
  "data": {
    "short_text": "All pilots must be registered and have a valid registration number",
    "description": "Pilots must have a valid registration number stored in their profile to fly in this area.",
    "status": "conflicting",
    "flight_features": [
      {
        "flight_feature": "registration_number",
        "status": "conflicting",
        "description": "Does the pilot have a valid registration number?",
        "input_type": "string",
        "measurement_type": "string",
        "measurement_unit": "string",
        "code": "string",
        "airspace_ids": [
          "string"
        ],
        "is_calculated": true
      }
    ],
    "validations": [
      {
        "data": "ABC-123",
        "status": "conflicting",
        "message": "Registration number was successfully validated",
        "input_type": "string",
        "feature": {
          "code": "pilot_registration_id",
          "description": "pilot registration identifier"
        },
        "authority": {
          "name": "FAA"
        }
      }
    ],
    "authorizations": [
      {
        "flight_plan_id": "flight_plan|b6948G6fOXbp5MS2L88bAupGXWel",
        "status": "authorized",
        "managed_airspace_id": "city|D3qZEy",
        "message": "string",
        "created_at": "2017-12-13T22:17:51.951Z",
        "status_updated_at": "2017-12-13T22:17:51.951Z"
      }
    ],
    "failures": [
      "string"
    ]
  }
}

Path Params

flight_plan_id
string
required

ID of flight plan

Headers

X-API-KEY
string
required

AirMap API KEY

Response

200 OK

Flight plan not found

Unspecified error

Suggest Edits

Get Evaluation for Rulesets and Geometry

 

Header Auth

 Authentication is required for this endpoint.
posthttps://api.airmap.com/advisory/v1/evaluation
curl --request POST \
  --url https://api.airmap.com/advisory/v1/evaluation \
  --header 'x-api-key: X-API-KEY'
var request = require("request");

var options = { method: 'POST',
  url: 'https://api.airmap.com/advisory/v1/evaluation',
  headers: { 'x-api-key': 'X-API-KEY' } };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("https://api.airmap.com/advisory/v1/evaluation")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)
request["x-api-key"] = 'X-API-KEY'

response = http.request(request)
puts response.read_body
var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("POST", "https://api.airmap.com/advisory/v1/evaluation");
xhr.setRequestHeader("x-api-key", "X-API-KEY");

xhr.send(data);
import requests

url = "https://api.airmap.com/advisory/v1/evaluation"

headers = {'x-api-key': 'X-API-KEY'}

response = requests.request("POST", url, headers=headers)

print(response.text)
A binary file was returned

You couldn't be authenticated

{
  "status": "success",
  "data": {
    "short_text": "All pilots must be registered and have a valid registration number",
    "description": "Pilots must have a valid registration number stored in their profile to fly in this area.",
    "status": "conflicting",
    "flight_features": [
      {
        "flight_feature": "registration_number",
        "status": "conflicting",
        "description": "Does the pilot have a valid registration number?",
        "input_type": "string",
        "measurement_type": "string",
        "measurement_unit": "string",
        "code": "string",
        "airspace_ids": [
          "string"
        ],
        "is_calculated": true
      }
    ],
    "validations": [
      {
        "data": "ABC-123",
        "status": "conflicting",
        "message": "Registration number was successfully validated",
        "input_type": "string",
        "feature": {
          "code": "pilot_registration_id",
          "description": "pilot registration identifier"
        },
        "authority": {
          "name": "FAA"
        }
      }
    ],
    "authorizations": [
      {
        "flight_plan_id": "flight_plan|b6948G6fOXbp5MS2L88bAupGXWel",
        "status": "authorized",
        "managed_airspace_id": "city|D3qZEy",
        "message": "string",
        "created_at": "2017-12-13T22:17:51.951Z",
        "status_updated_at": "2017-12-13T22:17:51.951Z"
      }
    ],
    "failures": [
      "string"
    ]
  }
}

Body Params

geometry
string
required

GeoJSON or WKT

rulesets
string
required

CSV list of rulesets

flight_features
string

Object containing key-value pairs of each flight feature and its value

Headers

X-API-KEY
string
required

AirMap API KEY

Response

200 OK

Bad request, parameter validation failed

Unspecified error

Suggest Edits

Search for Rulesets

 

Header Auth

 Authentication is required for this endpoint.
posthttps://api.airmap.com/advisory/v1/
curl --request POST \
  --url https://api.airmap.com/advisory/v1/ \
  --header 'x-api-key: X-API-KEY'
var request = require("request");

var options = { method: 'POST',
  url: 'https://api.airmap.com/advisory/v1/',
  headers: { 'x-api-key': 'X-API-KEY' } };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("https://api.airmap.com/advisory/v1/")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)
request["x-api-key"] = 'X-API-KEY'

response = http.request(request)
puts response.read_body
var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("POST", "https://api.airmap.com/advisory/v1/");
xhr.setRequestHeader("x-api-key", "X-API-KEY");

xhr.send(data);
import requests

url = "https://api.airmap.com/advisory/v1/"

headers = {'x-api-key': 'X-API-KEY'}

response = requests.request("POST", url, headers=headers)

print(response.text)
A binary file was returned

You couldn't be authenticated

{
  "status": "success",
  "data": [
    {
      "id": "usa_sec_91",
      "name": "US Restricted and Special Use Airspace",
      "short_name": "Restricted Airspace",
      "selection_type": "required",
      "description": "NOTAMs and TFRs in the USA",
      "default": true,
      "jurisdiction": {
        "id": 17,
        "name": "United States",
        "region": "federal"
      },
      "airspace_types": [
        "country"
      ],
      "flight_features": [
        {
          "flight_feature": "registration_number",
          "status": "conflicting",
          "description": "Does the pilot have a valid registration number?",
          "input_type": "string",
          "measurement_type": "string",
          "measurement_unit": "string",
          "code": "string",
          "airspace_ids": [
            "string"
          ],
          "is_calculated": true
        }
      ],
      "rules": [
        [
          {
            "description": "All pilots must be registered and have a valid registration number",
            "short_text": "pilot_registration_number",
            "display_order": 3,
            "flight_feature": {
              "flight_feature": "registration_number",
              "status": "conflicting",
              "description": "Does the pilot have a valid registration number?",
              "input_type": "string",
              "measurement_type": "string",
              "measurement_unit": "string",
              "code": "string",
              "airspace_ids": [
                "string"
              ],
              "is_calculated": true
            }
          }
        ]
      ]
    }
  ]
}

Headers

X-API-KEY
string
required

AirMap API KEY

Response

200 OK

Ruleset not found

Unspecified error

Suggest Edits

Get Rules for Rulesets

 

Header Auth

 Authentication is required for this endpoint.
gethttps://api.airmap.com/advisory/v1/rule
curl --request GET \
  --url 'https://api.airmap.com/advisory/v1/rule?rulesets=rulesets' \
  --header 'x-api-key: X-API-KEY'
var request = require("request");

var options = { method: 'GET',
  url: 'https://api.airmap.com/advisory/v1/rule',
  qs: { rulesets: 'rulesets' },
  headers: { 'x-api-key': 'X-API-KEY' } };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("https://api.airmap.com/advisory/v1/rule?rulesets=rulesets")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)
request["x-api-key"] = 'X-API-KEY'

response = http.request(request)
puts response.read_body
var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("GET", "https://api.airmap.com/advisory/v1/rule?rulesets=rulesets");
xhr.setRequestHeader("x-api-key", "X-API-KEY");

xhr.send(data);
import requests

url = "https://api.airmap.com/advisory/v1/rule"

querystring = {"rulesets":"rulesets"}

headers = {'x-api-key': 'X-API-KEY'}

response = requests.request("GET", url, headers=headers, params=querystring)

print(response.text)
A binary file was returned

You couldn't be authenticated

{
  "status": "success",
  "data": [
    {
      "id": "usa_sec_91",
      "name": "US Restricted and Special Use Airspace",
      "short_name": "Restricted Airspace",
      "selection_type": "required",
      "description": "NOTAMs and TFRs in the USA",
      "default": true,
      "jurisdiction": {
        "id": 17,
        "name": "United States",
        "region": "federal"
      },
      "airspace_types": [
        "country"
      ],
      "flight_features": [
        {
          "flight_feature": "registration_number",
          "status": "conflicting",
          "description": "Does the pilot have a valid registration number?",
          "input_type": "string",
          "measurement_type": "string",
          "measurement_unit": "string",
          "code": "string",
          "airspace_ids": [
            "string"
          ],
          "is_calculated": true
        }
      ],
      "rules": [
        [
          {
            "description": "All pilots must be registered and have a valid registration number",
            "short_text": "pilot_registration_number",
            "display_order": 3,
            "flight_feature": {
              "flight_feature": "registration_number",
              "status": "conflicting",
              "description": "Does the pilot have a valid registration number?",
              "input_type": "string",
              "measurement_type": "string",
              "measurement_unit": "string",
              "code": "string",
              "airspace_ids": [
                "string"
              ],
              "is_calculated": true
            }
          }
        ]
      ]
    }
  ]
}

Query Params

rulesets
string
required

CSV style list of ruleset ids

Headers

X-API-KEY
string
required

AirMap API KEY

Response

200 OK

Unspecified error

Suggest Edits

Get Rules by ID

 

Header Auth

 Authentication is required for this endpoint.
gethttps://api.airmap.com/advisory/v1/ruleset_id
curl --request GET \
  --url https://api.airmap.com/advisory/v1/ruleset_id \
  --header 'x-api-key: X-API-KEY'
var request = require("request");

var options = { method: 'GET',
  url: 'https://api.airmap.com/advisory/v1/ruleset_id',
  headers: { 'x-api-key': 'X-API-KEY' } };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("https://api.airmap.com/advisory/v1/ruleset_id")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)
request["x-api-key"] = 'X-API-KEY'

response = http.request(request)
puts response.read_body
var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("GET", "https://api.airmap.com/advisory/v1/ruleset_id");
xhr.setRequestHeader("x-api-key", "X-API-KEY");

xhr.send(data);
import requests

url = "https://api.airmap.com/advisory/v1/ruleset_id"

headers = {'x-api-key': 'X-API-KEY'}

response = requests.request("GET", url, headers=headers)

print(response.text)
A binary file was returned

You couldn't be authenticated

{
  "status": "success",
  "data": {
    "id": "usa_sec_91",
    "name": "US Restricted and Special Use Airspace",
    "short_name": "Restricted Airspace",
    "selection_type": "required",
    "description": "NOTAMs and TFRs in the USA",
    "default": true,
    "jurisdiction": {
      "id": 17,
      "name": "United States",
      "region": "federal"
    },
    "airspace_types": [
      "country"
    ],
    "flight_features": [
      {
        "flight_feature": "registration_number",
        "status": "conflicting",
        "description": "Does the pilot have a valid registration number?",
        "input_type": "string",
        "measurement_type": "string",
        "measurement_unit": "string",
        "code": "string",
        "airspace_ids": [
          "string"
        ],
        "is_calculated": true
      }
    ],
    "rules": [
      [
        {
          "description": "All pilots must be registered and have a valid registration number",
          "short_text": "pilot_registration_number",
          "display_order": 3,
          "flight_feature": {
            "flight_feature": "registration_number",
            "status": "conflicting",
            "description": "Does the pilot have a valid registration number?",
            "input_type": "string",
            "measurement_type": "string",
            "measurement_unit": "string",
            "code": "string",
            "airspace_ids": [
              "string"
            ],
            "is_calculated": true
          }
        }
      ]
    ]
  }
}

Path Params

ruleset_id
string
required

ID of ruleset

Headers

X-API-KEY
string
required

AirMap API KEY

Response

200 OK

Ruleset not found

Unspecified error

Suggest Edits

Get Flights

 

Header Auth

 Authentication is required for this endpoint.
gethttps://api.airmap.com/flight/v2/
curl --request GET \
  --url https://api.airmap.com/flight/v2/ \
  --header 'x-api-key: X-API-KEY'
var request = require("request");

var options = { method: 'GET',
  url: 'https://api.airmap.com/flight/v2/',
  headers: { 'x-api-key': 'X-API-KEY' } };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("https://api.airmap.com/flight/v2/")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)
request["x-api-key"] = 'X-API-KEY'

response = http.request(request)
puts response.read_body
var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("GET", "https://api.airmap.com/flight/v2/");
xhr.setRequestHeader("x-api-key", "X-API-KEY");

xhr.send(data);
import requests

url = "https://api.airmap.com/flight/v2/"

headers = {'x-api-key': 'X-API-KEY'}

response = requests.request("GET", url, headers=headers)

print(response.text)
A binary file was returned

You couldn't be authenticated

{
  "status": "success",
  "data": {
    "paging": {
      "limit": 100,
      "total": 100
    },
    "results": [
      {
        "id": "flight|abc123",
        "pilot_id": "auth0|abc123",
        "latitude": 34.016669,
        "longitude": -118.495188,
        "aircraft_id": "aircraft|abc123",
        "created_at": "2017-07-31T04:06:08.369Z",
        "start_time": "2017-07-31T04:06:04.430Z",
        "end_time": "2017-07-31T08:06:04.430Z",
        "country": "USA",
        "state": "California",
        "city": "Santa Monica",
        "public": true,
        "permits": [],
        "geometry": {
          "type": "Polygon",
          "coordinates": [
            [
              [
                -118.495724201202,
                34.0163308186919
              ],
              [
                -118.495724201202,
                34.0173268174058
              ],
              [
                -118.494393825531,
                34.0173268174058
              ],
              [
                -118.494393825531,
                34.0163308186919
              ],
              [
                -118.495724201202,
                34.0163308186919
              ]
            ]
          ]
        },
        "buffer": 0,
        "pilot": {
          "id": "auth0|abc123",
          "picture_url": "https://s.gravatar.com/avatar/03284b1c1b3901174e3eeda1c721eb2d?s=480&r=pg&d=https%3A%2F%2Fcdn.auth0.com%2Favatars%2Fjo.png",
          "username": "jsmith"
        },
        "aircraft": {
          "id": "aircraft|abc123",
          "model": {
            "id": "b3b1c26f-06da-4eae-9390-667c90039175",
            "name": "Phantom 3",
            "manufacturer": {
              "id": "2a55b47e-ca49-4b7e-99c7-dee9cd784ec9",
              "name": "DJI"
            }
          }
        },
        "max_altitude": 100
      }
    ]
  }
}

Query Params

limit
integer

maximum number of flights to return

country
string

3 digit country string - case insensitive

state
string

Case insensitive

pilot_id
string

pilot id, e.g. auth0|pilot123

start_after
date-time

Use to select flights within a specific date range (ISO-8601)

start_before
date-time

Use to select flights within a specific date range (ISO-8601)

end_before
date-time

Use to select flights within a specific date range (ISO-8601)

end_after
date-time

Use to select flights within a specific date range (ISO-8601)

enhance
boolean

If true, response will return pilot and aircraft information

geometry
string

valid GeoJSON or WKT Geometry representing the flight geometry

Headers

X-API-KEY
string
required

AirMap API KEY

Authorization
string

Example: 'Bearer [Token]'

Response

200 OK

Invalid geometry

Unspecified error

Suggest Edits

Get Individual Flight

 

Header Auth

 Authentication is required for this endpoint.
gethttps://api.airmap.com/flight/v2/flight_id
curl --request GET \
  --url https://api.airmap.com/flight/v2/flight_id \
  --header 'x-api-key: X-API-KEY'
var request = require("request");

var options = { method: 'GET',
  url: 'https://api.airmap.com/flight/v2/flight_id',
  headers: { 'x-api-key': 'X-API-KEY' } };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("https://api.airmap.com/flight/v2/flight_id")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)
request["x-api-key"] = 'X-API-KEY'

response = http.request(request)
puts response.read_body
var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("GET", "https://api.airmap.com/flight/v2/flight_id");
xhr.setRequestHeader("x-api-key", "X-API-KEY");

xhr.send(data);
import requests

url = "https://api.airmap.com/flight/v2/flight_id"

headers = {'x-api-key': 'X-API-KEY'}

response = requests.request("GET", url, headers=headers)

print(response.text)
A binary file was returned

You couldn't be authenticated

{
  "status": "success",
  "data": {
    "id": "flight|abc123",
    "pilot_id": "auth0|abc123",
    "latitude": 34.016669,
    "longitude": -118.495188,
    "aircraft_id": "aircraft|abc123",
    "created_at": "2017-07-31T04:06:08.369Z",
    "start_time": "2017-07-31T04:06:04.430Z",
    "end_time": "2017-07-31T08:06:04.430Z",
    "country": "USA",
    "state": "California",
    "city": "Santa Monica",
    "public": true,
    "permits": [],
    "geometry": {
      "type": "Polygon",
      "coordinates": [
        [
          [
            -118.495724201202,
            34.0163308186919
          ],
          [
            -118.495724201202,
            34.0173268174058
          ],
          [
            -118.494393825531,
            34.0173268174058
          ],
          [
            -118.494393825531,
            34.0163308186919
          ],
          [
            -118.495724201202,
            34.0163308186919
          ]
        ]
      ]
    },
    "buffer": 0,
    "pilot": {
      "id": "auth0|abc123",
      "picture_url": "https://s.gravatar.com/avatar/03284b1c1b3901174e3eeda1c721eb2d?s=480&r=pg&d=https%3A%2F%2Fcdn.auth0.com%2Favatars%2Fjo.png",
      "username": "jsmith"
    },
    "aircraft": {
      "id": "aircraft|abc123",
      "model": {
        "id": "b3b1c26f-06da-4eae-9390-667c90039175",
        "name": "Phantom 3",
        "manufacturer": {
          "id": "2a55b47e-ca49-4b7e-99c7-dee9cd784ec9",
          "name": "DJI"
        }
      }
    },
    "max_altitude": 100
  }
}

Path Params

flight_id
string
required

search by a specific flight id, e.g. flight|123

Query Params

enhance
boolean

Enhances the flight, pilot, and aircraft information.

Headers

X-API-KEY
string
required

AirMap API KEY

Authorization
string

Example: 'Bearer [Token]'

Response

200 OK

Invalid geometry

Flight not found

Unspecified error

Suggest Edits

Delete Flight

 

Header Auth

 Authentication is required for this endpoint.
deletehttps://api.airmap.com/flight/v2/flight_id
curl --request DELETE \
  --url https://api.airmap.com/flight/v2/flight_id \
  --header 'authorization: Authorization' \
  --header 'x-api-key: X-API-KEY'
var request = require("request");

var options = { method: 'DELETE',
  url: 'https://api.airmap.com/flight/v2/flight_id',
  headers: 
   { authorization: 'Authorization',
     'x-api-key': 'X-API-KEY' } };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("https://api.airmap.com/flight/v2/flight_id")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Delete.new(url)
request["x-api-key"] = 'X-API-KEY'
request["authorization"] = 'Authorization'

response = http.request(request)
puts response.read_body
var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("DELETE", "https://api.airmap.com/flight/v2/flight_id");
xhr.setRequestHeader("x-api-key", "X-API-KEY");
xhr.setRequestHeader("authorization", "Authorization");

xhr.send(data);
import requests

url = "https://api.airmap.com/flight/v2/flight_id"

headers = {
    'x-api-key': "X-API-KEY",
    'authorization': "Authorization"
    }

response = requests.request("DELETE", url, headers=headers)

print(response.text)
A binary file was returned

You couldn't be authenticated

{
  "status": "success"
}

Path Params

flight_id
string
required

id of flight to delete

Headers

X-API-KEY
string
required

AirMap API KEY

Authorization
string
required

Example: 'Bearer [Token]'

Response

200 OK

Bad request, parameter validation failed

Unspecified error

Suggest Edits

Delete Flight

 

Header Auth

 Authentication is required for this endpoint.
posthttps://api.airmap.com/flight/v2/flight_id/delete
curl --request POST \
  --url https://api.airmap.com/flight/v2/flight_id/delete \
  --header 'authorization: Authorization' \
  --header 'x-api-key: X-API-KEY'
var request = require("request");

var options = { method: 'POST',
  url: 'https://api.airmap.com/flight/v2/flight_id/delete',
  headers: 
   { authorization: 'Authorization',
     'x-api-key': 'X-API-KEY' } };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("https://api.airmap.com/flight/v2/flight_id/delete")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)
request["x-api-key"] = 'X-API-KEY'
request["authorization"] = 'Authorization'

response = http.request(request)
puts response.read_body
var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("POST", "https://api.airmap.com/flight/v2/flight_id/delete");
xhr.setRequestHeader("x-api-key", "X-API-KEY");
xhr.setRequestHeader("authorization", "Authorization");

xhr.send(data);
import requests

url = "https://api.airmap.com/flight/v2/flight_id/delete"

headers = {
    'x-api-key': "X-API-KEY",
    'authorization': "Authorization"
    }

response = requests.request("POST", url, headers=headers)

print(response.text)
A binary file was returned

You couldn't be authenticated

{
  "status": "success"
}

Path Params

flight_id
string
required

id of flight to delete

Headers

X-API-KEY
string
required

AirMap API KEY

Authorization
string
required

Example: 'Bearer [Token]'

Response

200 OK

Bad request, parameter validation failed

Flight not found

Unspecified error

Suggest Edits

End Flight

 

Header Auth

 Authentication is required for this endpoint.
posthttps://api.airmap.com/flight/v2/flight_id/end
curl --request POST \
  --url https://api.airmap.com/flight/v2/flight_id/end \
  --header 'authorization: Authorization' \
  --header 'x-api-key: X-API-KEY'
var request = require("request");

var options = { method: 'POST',
  url: 'https://api.airmap.com/flight/v2/flight_id/end',
  headers: 
   { authorization: 'Authorization',
     'x-api-key': 'X-API-KEY' } };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("https://api.airmap.com/flight/v2/flight_id/end")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)
request["x-api-key"] = 'X-API-KEY'
request["authorization"] = 'Authorization'

response = http.request(request)
puts response.read_body
var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("POST", "https://api.airmap.com/flight/v2/flight_id/end");
xhr.setRequestHeader("x-api-key", "X-API-KEY");
xhr.setRequestHeader("authorization", "Authorization");

xhr.send(data);
import requests

url = "https://api.airmap.com/flight/v2/flight_id/end"

headers = {
    'x-api-key': "X-API-KEY",
    'authorization': "Authorization"
    }

response = requests.request("POST", url, headers=headers)

print(response.text)
A binary file was returned

You couldn't be authenticated

{
  "status": "success",
  "data": {
    "end_time": "2017-12-14T04:47:48.682Z"
  }
}

Path Params

flight_id
string
required

id of flight to end

Headers

X-API-KEY
string
required

AirMap API KEY

Authorization
string
required

Example: 'Bearer [Token]'

Response

200 OK

Bad request, parameter validation failed

Flight not found

Error ending flight

Suggest Edits

Start Flight Communications

 

Header Auth

 Authentication is required for this endpoint.
posthttps://api.airmap.com/flight/v2/flight_id/start-comm
curl --request POST \
  --url https://api.airmap.com/flight/v2/flight_id/start-comm \
  --header 'authorization: Authorization' \
  --header 'x-api-key: X-API-KEY'
var request = require("request");

var options = { method: 'POST',
  url: 'https://api.airmap.com/flight/v2/flight_id/start-comm',
  headers: 
   { authorization: 'Authorization',
     'x-api-key': 'X-API-KEY' } };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("https://api.airmap.com/flight/v2/flight_id/start-comm")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)
request["x-api-key"] = 'X-API-KEY'
request["authorization"] = 'Authorization'

response = http.request(request)
puts response.read_body
var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("POST", "https://api.airmap.com/flight/v2/flight_id/start-comm");
xhr.setRequestHeader("x-api-key", "X-API-KEY");
xhr.setRequestHeader("authorization", "Authorization");

xhr.send(data);
import requests

url = "https://api.airmap.com/flight/v2/flight_id/start-comm"

headers = {
    'x-api-key': "X-API-KEY",
    'authorization': "Authorization"
    }

response = requests.request("POST", url, headers=headers)

print(response.text)
A binary file was returned

You couldn't be authenticated

{
  "status": "success",
  "data": {
    "key": "string"
  }
}

Path Params

flight_id
string
required

id of flight

Headers

X-API-KEY
string
required

AirMap API KEY

Authorization
string
required

Example: 'Bearer [Token]'

Response

200 OK

Bad request, parameter validation failed

Flight not found

Error ending flight

Suggest Edits

End Flight Communications

 

Header Auth

 Authentication is required for this endpoint.
posthttps://api.airmap.com/flight/v2/flight_id/end-comm
curl --request POST \
  --url https://api.airmap.com/flight/v2/flight_id/end-comm \
  --header 'authorization: Authorization' \
  --header 'x-api-key: X-API-KEY'
var request = require("request");

var options = { method: 'POST',
  url: 'https://api.airmap.com/flight/v2/flight_id/end-comm',
  headers: 
   { authorization: 'Authorization',
     'x-api-key': 'X-API-KEY' } };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("https://api.airmap.com/flight/v2/flight_id/end-comm")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)
request["x-api-key"] = 'X-API-KEY'
request["authorization"] = 'Authorization'

response = http.request(request)
puts response.read_body
var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("POST", "https://api.airmap.com/flight/v2/flight_id/end-comm");
xhr.setRequestHeader("x-api-key", "X-API-KEY");
xhr.setRequestHeader("authorization", "Authorization");

xhr.send(data);
import requests

url = "https://api.airmap.com/flight/v2/flight_id/end-comm"

headers = {
    'x-api-key': "X-API-KEY",
    'authorization': "Authorization"
    }

response = requests.request("POST", url, headers=headers)

print(response.text)
A binary file was returned

You couldn't be authenticated

{
  "status": "success",
  "data": {
    "key": "string"
  }
}

Path Params

flight_id
string
required

id of flight

Headers

X-API-KEY
string
required

AirMap API KEY

Authorization
string
required

Example: 'Bearer [Token]'

Response

200 OK

Bad request, parameter validation failed

Flight does not belong to user

Flight not found

Error ending flight

Suggest Edits

Create Flight by Point

 

Header Auth

 Authentication is required for this endpoint.
posthttps://api.airmap.com/flight/v2/point
curl --request POST \
  --url https://api.airmap.com/flight/v2/point \
  --header 'authorization: Authorization' \
  --header 'x-api-key: X-API-KEY'
var request = require("request");

var options = { method: 'POST',
  url: 'https://api.airmap.com/flight/v2/point',
  headers: 
   { authorization: 'Authorization',
     'x-api-key': 'X-API-KEY' } };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("https://api.airmap.com/flight/v2/point")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)
request["x-api-key"] = 'X-API-KEY'
request["authorization"] = 'Authorization'

response = http.request(request)
puts response.read_body
var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("POST", "https://api.airmap.com/flight/v2/point");
xhr.setRequestHeader("x-api-key", "X-API-KEY");
xhr.setRequestHeader("authorization", "Authorization");

xhr.send(data);
import requests

url = "https://api.airmap.com/flight/v2/point"

headers = {
    'x-api-key': "X-API-KEY",
    'authorization': "Authorization"
    }

response = requests.request("POST", url, headers=headers)

print(response.text)
A binary file was returned

You couldn't be authenticated

{
  "status": "success",
  "data": {
    "id": "flight|abc123",
    "pilot_id": "auth0|abc123",
    "latitude": 34.0382223095064,
    "longitude": -118.45424652099608,
    "aircraft_id": "aircraft|abc123",
    "start_time": "2017-07-31T04:23:24.123Z",
    "end_time": "2017-07-31T08:23:24.123Z",
    "country": "USA",
    "state": "California",
    "city": "Los Angeles",
    "public": true,
    "notify": true,
    "buffer": 100,
    "geometry": {
      "type": "Polygon",
      "coordinates": [
        [
          [
            -118.45334748129736,
            34.0382223095064
          ],
          [
            -118.45336475609307,
            34.03804691556207
          ],
          [
            -118.4534159166195,
            34.03787826190866
          ],
          [
            -118.45349899680633,
            34.037722829811486
          ],
          [
            -118.45361080392856,
            34.03758659243888
          ],
          [
            -118.45374704130116,
            34.037474785316654
          ],
          [
            -118.45390247339834,
            34.03739170512983
          ],
          [
            -118.45407112705175,
            34.03734054460339
          ],
          [
            -118.45424652099608,
            34.03732326980767
          ],
          [
            -118.45442191494041,
            34.03734054460339
          ],
          [
            -118.45459056859382,
            34.03739170512983
          ],
          [
            -118.454746000691,
            34.037474785316654
          ],
          [
            -118.4548822380636,
            34.03758659243888
          ],
          [
            -118.45499404518583,
            34.037722829811486
          ],
          [
            -118.45507712537265,
            34.03787826190866
          ],
          [
            -118.4551282858991,
            34.03804691556207
          ],
          [
            -118.4551455606948,
            34.0382223095064
          ],
          [
            -118.4551282858991,
            34.038397703450734
          ],
          [
            -118.45507712537265,
            34.038566357104145
          ],
          [
            -118.45499404518583,
            34.03872178920132
          ],
          [
            -118.4548822380636,
            34.03885802657393
          ],
          [
            -118.454746000691,
            34.03896983369615
          ],
          [
            -118.45459056859382,
            34.039052913882976
          ],
          [
            -118.45442191494041,
            34.039104074409416
          ],
          [
            -118.45424652099608,
            34.03912134920513
          ],
          [
            -118.45407112705175,
            34.039104074409416
          ],
          [
            -118.45390247339834,
            34.039052913882976
          ],
          [
            -118.45374704130116,
            34.03896983369615
          ],
          [
            -118.45361080392856,
            34.03885802657393
          ],
          [
            -118.45349899680633,
            34.03872178920132
          ],
          [
            -118.4534159166195,
            34.038566357104145
          ],
          [
            -118.45336475609307,
            34.038397703450734
          ],
          [
            -118.45334748129736,
            34.0382223095064
          ]
        ]
      ]
    },
    "created_at": "2017-07-31T04:23:25.982Z",
    "permits": [],
    "max_altitude": 100,
    "statuses": []
  }
}

Body Params

status
string
data
object
 
data.latitude
float

Latitude in decimal format (FLOAT). Bounds: -90, 90.

data.longitude
float

Longitude in decimal format (FLOAT). Bounds: -180, 180..

data.max_altitude
float

Max altitude above ground in meters. Bounds: (0, 121]

data.aircraft_id
uuid

Aircraft associated with the flight.

data.start_time
date-time

Takeoff date and time in ISO 8601 format. Bounds: now, +7 days.

data.end_time
date-time

Landing date and time in ISO 8601 format. Bounds: > start_time, <= 4 hours from start_time.

data.public
boolean

Make flight public.

data.notify
boolean

Give digital notice.

data.buffer
integer

Buffer size around takeoff point in meters. Bounds: 0, 2000

data.geometry
string

GeoJSON or WKT

Headers

X-API-KEY
string
required

AirMap API KEY

Authorization
string
required

Example: 'Bearer [Token]'

Response

200 OK

Bad request, parameter validation failed

Unauthorized

Unspecified error

Suggest Edits

Create Flight by Path

 

Header Auth

 Authentication is required for this endpoint.
posthttps://api.airmap.com/flight/v2/path
curl --request POST \
  --url https://api.airmap.com/flight/v2/path \
  --header 'authorization: Authorization' \
  --header 'x-api-key: X-API-KEY'
var request = require("request");

var options = { method: 'POST',
  url: 'https://api.airmap.com/flight/v2/path',
  headers: 
   { authorization: 'Authorization',
     'x-api-key': 'X-API-KEY' } };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("https://api.airmap.com/flight/v2/path")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)
request["x-api-key"] = 'X-API-KEY'
request["authorization"] = 'Authorization'

response = http.request(request)
puts response.read_body
var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("POST", "https://api.airmap.com/flight/v2/path");
xhr.setRequestHeader("x-api-key", "X-API-KEY");
xhr.setRequestHeader("authorization", "Authorization");

xhr.send(data);
import requests

url = "https://api.airmap.com/flight/v2/path"

headers = {
    'x-api-key': "X-API-KEY",
    'authorization': "Authorization"
    }

response = requests.request("POST", url, headers=headers)

print(response.text)
A binary file was returned

You couldn't be authenticated

{
  "status": "success",
  "data": {
    "id": "flight|abc123",
    "pilot_id": "auth0|abc123",
    "latitude": 34.01666874813674,
    "longitude": -118.49518775939943,
    "aircraft_id": "aircraft|abc123",
    "start_time": "2017-07-31T04:31:17.214Z",
    "end_time": "2017-07-31T08:31:17.214Z",
    "country": "USA",
    "state": "California",
    "city": "Santa Monica",
    "public": true,
    "notify": true,
    "buffer": 0,
    "geometry": {
      "coordinates": [
        [
          -118.4951877593994,
          34.01666874813674
        ],
        [
          -118.4951984882355,
          34.01639306895385
        ],
        [
          -118.5012817382812,
          34.01191982678013
        ],
        [
          -118.5024189949036,
          34.0136273347064
        ],
        [
          -118.4996294975281,
          34.01542373826737
        ],
        [
          -118.4966897964478,
          34.01782481238052
        ],
        [
          -118.4952735900879,
          34.01686439088474
        ]
      ],
      "type": "LineString"
    },
    "created_at": "2017-07-31T04:31:19.636Z",
    "permits": [],
    "max_altitude": 100,
    "statuses": []
  }
}

Body Params

latitude
float
required

Latitude in decimal format (FLOAT). Bounds: -90, 90.

longitude
float
required

Longitude in decimal format (FLOAT). Bounds: -180, 180..

max_altitude
float

Max altitude above ground in meters. Bounds: (0, 121]

aircraft_id
uuid

Aircraft associated with the flight.

start_time
date-time

Takeoff date and time in ISO 8601 format. Bounds: now, +7 days.

end_time
date-time

Landing date and time in ISO 8601 format. Bounds: > start_time, <= 4 hours from start_time.

public
boolean

Make flight public.

notify
boolean

Give digital notice.

buffer
integer

Buffer size around takeoff point in meters. Bounds: 0, 2000

geometry
string
required

GeoJSON or WKT

Headers

X-API-KEY
string
required

AirMap API KEY

Authorization
string
required

Example: 'Bearer [Token]'

Response

200 OK

Bad request, parameter validation failed

Unauthorized

Unspecified error

Suggest Edits

Create Flight by Polygon

 

Header Auth

 Authentication is required for this endpoint.
posthttps://api.airmap.com/flight/v2/polygon
curl --request POST \
  --url https://api.airmap.com/flight/v2/polygon \
  --header 'authorization: Authorization' \
  --header 'x-api-key: X-API-KEY'
var request = require("request");

var options = { method: 'POST',
  url: 'https://api.airmap.com/flight/v2/polygon',
  headers: 
   { authorization: 'Authorization',
     'x-api-key': 'X-API-KEY' } };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("https://api.airmap.com/flight/v2/polygon")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)
request["x-api-key"] = 'X-API-KEY'
request["authorization"] = 'Authorization'

response = http.request(request)
puts response.read_body
var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("POST", "https://api.airmap.com/flight/v2/polygon");
xhr.setRequestHeader("x-api-key", "X-API-KEY");
xhr.setRequestHeader("authorization", "Authorization");

xhr.send(data);
import requests

url = "https://api.airmap.com/flight/v2/polygon"

headers = {
    'x-api-key': "X-API-KEY",
    'authorization': "Authorization"
    }

response = requests.request("POST", url, headers=headers)

print(response.text)
A binary file was returned

You couldn't be authenticated

{
  "status": "success",
  "data": {
    "id": "flight|abc123",
    "pilot_id": "auth0|abc123",
    "latitude": 34.01666874813674,
    "longitude": -118.49518775939943,
    "aircraft_id": "aircraft|abc123",
    "start_time": "2017-07-31T04:06:04.430Z",
    "end_time": "2017-07-31T08:06:04.430Z",
    "country": "USA",
    "state": "California",
    "city": "Santa Monica",
    "public": true,
    "notify": true,
    "buffer": 0,
    "geometry": {
      "coordinates": [
        [
          [
            -118.4957242012024,
            34.01633081869188
          ],
          [
            -118.4957242012024,
            34.01732681740577
          ],
          [
            -118.494393825531,
            34.01732681740577
          ],
          [
            -118.494393825531,
            34.01633081869188
          ],
          [
            -118.4957242012024,
            34.01633081869188
          ]
        ]
      ],
      "type": "Polygon"
    },
    "created_at": "2017-07-31T04:06:08.369Z",
    "permits": [],
    "max_altitude": 100,
    "statuses": []
  }
}

Body Params

latitude
float
required

Latitude in decimal format (FLOAT). Bounds: -90, 90.

longitude
float
required

Longitude in decimal format (FLOAT). Bounds: -180, 180..

max_altitude
float

Max altitude above ground in meters. Bounds: (0, 121]

aircraft_id
uuid

Aircraft associated with the flight.

start_time
date-time

Takeoff date and time in ISO 8601 format. Bounds: now, +7 days.

end_time
date-time

Landing date and time in ISO 8601 format. Bounds: > start_time, <= 4 hours from start_time.

public
boolean

Make flight public.

notify
boolean

Give digital notice.

buffer
integer

Buffer size around takeoff point in meters. Bounds: 0, 2000

geometry
string
required

GeoJSON or WKT

Headers

X-API-KEY
string
required

AirMap API KEY

Authorization
string
required

Example: 'Bearer [Token]'

Response

200 OK

Bad request, parameter validation failed

Unauthorized

Unspecified error

Suggest Edits

Create Flight Plan

 

Header Auth

 Authentication is required for this endpoint.
posthttps://api.airmap.com/flight/v2/plan
curl --request POST \
  --url https://api.airmap.com/flight/v2/plan \
  --header 'authorization: Authorization' \
  --header 'x-api-key: X-API-KEY'
var request = require("request");

var options = { method: 'POST',
  url: 'https://api.airmap.com/flight/v2/plan',
  headers: 
   { authorization: 'Authorization',
     'x-api-key': 'X-API-KEY' } };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("https://api.airmap.com/flight/v2/plan")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)
request["x-api-key"] = 'X-API-KEY'
request["authorization"] = 'Authorization'

response = http.request(request)
puts response.read_body
var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("POST", "https://api.airmap.com/flight/v2/plan");
xhr.setRequestHeader("x-api-key", "X-API-KEY");
xhr.setRequestHeader("authorization", "Authorization");

xhr.send(data);
import requests

url = "https://api.airmap.com/flight/v2/plan"

headers = {
    'x-api-key': "X-API-KEY",
    'authorization': "Authorization"
    }

response = requests.request("POST", url, headers=headers)

print(response.text)
A binary file was returned

You couldn't be authenticated

{
  "status": "success",
  "data": {
    "rulesets": [
      "usa_part_107"
    ],
    "start_time": "now",
    "end_time": "2018-01-01T12:00:00-08:00",
    "max_altitude_agl": 60.96,
    "takeoff_latitude": "33.85505651142062",
    "takeoff_longitude": "-118.37099075317383",
    "buffer": "1",
    "geometry": {
      "type": "Polygon",
      "coordinates": [
        [
          [
            -118.37099075317383,
            33.85505651142062
          ],
          [
            -118.37305068969727,
            33.85502978214579
          ],
          [
            -118.37347984313963,
            33.854673391015496
          ],
          [
            -118.37306141853333,
            33.85231226221667
          ],
          [
            -118.37193489074707,
            33.85174201755203
          ],
          [
            -118.36997151374815,
            33.85176874785573
          ],
          [
            -118.36995005607605,
            33.8528112231754
          ],
          [
            -118.37099075317383,
            33.85505651142062
          ]
        ]
      ]
    },
    "pilot_id": "auth0|591dea1006732e54be4b875f",
    "id": "flight_plan|Dv5oxg8FXL7PQCylRO0piJn0LMq"
  }
}

Body Params

pilot_id
string
required

The pilot associated with the flight.

aircraft_id
string

The aircraft associated with the flight.

start_time
date-time
required

Start time of flight in ISO 8601 format (cannot be in the past).

end_time
date-time
required

End time of flight in ISO 8601 format (must be after start_time).

takeoff_latitude
number

Latitude of take off location in decimal format.

takeoff_longitude
number

Longitude of take off location in decimal format

min_altitude_agl
number

Minimum altitude in meters Above Ground Level.

max_altitude_agl
number
required

Maximum altitude in meters Above Ground Level.

buffer
float

Buffer size around takeoff point in meters. Bounds 0, 2000

geometry
string
required

GeoJSON or WKT

rulesets
array of strings

List of rulesets.

flight_features
string

Object containing key-value pairs of each flight feature and its value

Headers

X-API-KEY
string
required

AirMap API KEY

Authorization
string
required

Example: 'Bearer [Token]'

Response

200 OK

Bad request, parameter validation failed

Unauthorized

Unspecified error

Suggest Edits

Search Flight Plan by ID

 

Header Auth

 Authentication is required for this endpoint.
gethttps://api.airmap.com/flight/v2/plan/flight_plan_id
curl --request GET \
  --url https://api.airmap.com/flight/v2/plan/flight_plan_id \
  --header 'authorization: Authorization' \
  --header 'x-api-key: X-API-KEY'
var request = require("request");

var options = { method: 'GET',
  url: 'https://api.airmap.com/flight/v2/plan/flight_plan_id',
  headers: 
   { authorization: 'Authorization',
     'x-api-key': 'X-API-KEY' } };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("https://api.airmap.com/flight/v2/plan/flight_plan_id")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)
request["x-api-key"] = 'X-API-KEY'
request["authorization"] = 'Authorization'

response = http.request(request)
puts response.read_body
var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("GET", "https://api.airmap.com/flight/v2/plan/flight_plan_id");
xhr.setRequestHeader("x-api-key", "X-API-KEY");
xhr.setRequestHeader("authorization", "Authorization");

xhr.send(data);
import requests

url = "https://api.airmap.com/flight/v2/plan/flight_plan_id"

headers = {
    'x-api-key': "X-API-KEY",
    'authorization': "Authorization"
    }

response = requests.request("GET", url, headers=headers)

print(response.text)
A binary file was returned

You couldn't be authenticated

{
  "status": "success",
  "data": {
    "rulesets": [
      "usa_part_107"
    ],
    "start_time": "now",
    "end_time": "2018-01-01T12:00:00-08:00",
    "max_altitude_agl": 60.96,
    "takeoff_latitude": "33.85505651142062",
    "takeoff_longitude": "-118.37099075317383",
    "buffer": "1",
    "geometry": {
      "type": "Polygon",
      "coordinates": [
        [
          [
            -118.37099075317383,
            33.85505651142062
          ],
          [
            -118.37305068969727,
            33.85502978214579
          ],
          [
            -118.37347984313963,
            33.854673391015496
          ],
          [
            -118.37306141853333,
            33.85231226221667
          ],
          [
            -118.37193489074707,
            33.85174201755203
          ],
          [
            -118.36997151374815,
            33.85176874785573
          ],
          [
            -118.36995005607605,
            33.8528112231754
          ],
          [
            -118.37099075317383,
            33.85505651142062
          ]
        ]
      ]
    },
    "pilot_id": "auth0|591dea1006732e54be4b875f",
    "id": "flight_plan|Dv5oxg8FXL7PQCylRO0piJn0LMq"
  }
}

Path Params

flight_plan_id
string
required

search by a specific flight id, e.g. flight|123

Headers

X-API-KEY
string
required

AirMap API KEY

Authorization
string
required

Example: 'Bearer [Token]'

Response

200 OK

Unauthorized

Flight plan not found

Unspecified error

Suggest Edits

Update Flight Plan

 

Header Auth

 Authentication is required for this endpoint.
patchhttps://api.airmap.com/flight/v2/plan/flight_plan_id
curl --request PATCH \
  --url https://api.airmap.com/flight/v2/plan/flight_plan_id \
  --header 'authorization: Authorization' \
  --header 'x-api-key: X-API-KEY'
var request = require("request");

var options = { method: 'PATCH',
  url: 'https://api.airmap.com/flight/v2/plan/flight_plan_id',
  headers: 
   { authorization: 'Authorization',
     'x-api-key': 'X-API-KEY' } };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("https://api.airmap.com/flight/v2/plan/flight_plan_id")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Patch.new(url)
request["x-api-key"] = 'X-API-KEY'
request["authorization"] = 'Authorization'

response = http.request(request)
puts response.read_body
var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("PATCH", "https://api.airmap.com/flight/v2/plan/flight_plan_id");
xhr.setRequestHeader("x-api-key", "X-API-KEY");
xhr.setRequestHeader("authorization", "Authorization");

xhr.send(data);
import requests

url = "https://api.airmap.com/flight/v2/plan/flight_plan_id"

headers = {
    'x-api-key': "X-API-KEY",
    'authorization': "Authorization"
    }

response = requests.request("PATCH", url, headers=headers)

print(response.text)
A binary file was returned

You couldn't be authenticated

{
  "status": "success",
  "data": {
    "rulesets": [
      "usa_part_107"
    ],
    "start_time": "now",
    "end_time": "2018-01-01T12:00:00-08:00",
    "max_altitude_agl": 60.96,
    "takeoff_latitude": "33.85505651142062",
    "takeoff_longitude": "-118.37099075317383",
    "buffer": "1",
    "geometry": {
      "type": "Polygon",
      "coordinates": [
        [
          [
            -118.37099075317383,
            33.85505651142062
          ],
          [
            -118.37305068969727,
            33.85502978214579
          ],
          [
            -118.37347984313963,
            33.854673391015496
          ],
          [
            -118.37306141853333,
            33.85231226221667
          ],
          [
            -118.37193489074707,
            33.85174201755203
          ],
          [
            -118.36997151374815,
            33.85176874785573
          ],
          [
            -118.36995005607605,
            33.8528112231754
          ],
          [
            -118.37099075317383,
            33.85505651142062
          ]
        ]
      ]
    },
    "pilot_id": "auth0|591dea1006732e54be4b875f",
    "id": "flight_plan|Dv5oxg8FXL7PQCylRO0piJn0LMq"
  }
}

Path Params

flight_plan_id
string
required

the id of the plan to update

Body Params

pilot_id
string

The pilot associated with the flight.

aircraft_id
string

The aircraft associated with the flight.

start_time
date-time

Start time of flight in ISO 8601 format (cannot be in the past).

end_time
date-time

End time of flight in ISO 8601 format (must be after start_time).

takeoff_latitude
number

Latitude of take off location in decimal format.

takeoff_longitude
number

Longitude of take off location in decimal format

min_altitude_agl
number

Minimum altitude in meters Above Ground Level.

max_altitude_agl
number

Maximum altitude in meters Above Ground Level.

buffer
float

Buffer size around takeoff point in meters. Bounds 0, 2000

geometry
string

GeoJSON or WKT

rulesets
array of strings

List of rulesets.

flight_features
string

Object containing key-value pairs of each flight feature and its value

Headers

X-API-KEY
string
required

AirMap API KEY

Authorization
string
required

Example: 'Bearer [Token]'

Response

200 OK

Bad request, parameter validation failed

Unauthorized

Unspecified error

Suggest Edits

Delete Flight Plan

 

Header Auth

 Authentication is required for this endpoint.
deletehttps://api.airmap.com/flight/v2/plan/flight_plan_id
curl --request DELETE \
  --url https://api.airmap.com/flight/v2/plan/flight_plan_id \
  --header 'authorization: Authorization' \
  --header 'x-api-key: X-API-KEY'
var request = require("request");

var options = { method: 'DELETE',
  url: 'https://api.airmap.com/flight/v2/plan/flight_plan_id',
  headers: 
   { authorization: 'Authorization',
     'x-api-key': 'X-API-KEY' } };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("https://api.airmap.com/flight/v2/plan/flight_plan_id")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Delete.new(url)
request["x-api-key"] = 'X-API-KEY'
request["authorization"] = 'Authorization'

response = http.request(request)
puts response.read_body
var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("DELETE", "https://api.airmap.com/flight/v2/plan/flight_plan_id");
xhr.setRequestHeader("x-api-key", "X-API-KEY");
xhr.setRequestHeader("authorization", "Authorization");

xhr.send(data);
import requests

url = "https://api.airmap.com/flight/v2/plan/flight_plan_id"

headers = {
    'x-api-key': "X-API-KEY",
    'authorization': "Authorization"
    }

response = requests.request("DELETE", url, headers=headers)

print(response.text)
A binary file was returned

You couldn't be authenticated

{
  "status": "success"
}

Path Params

flight_plan_id
string
required

the id of the plan to delete

Headers

X-API-KEY
string
required

AirMap API KEY

Authorization
string
required

Example: 'Bearer [Token]'

Response

200 OK

Bad request, parameter validation failed

Unauthorized

Unspecified error

Suggest Edits

Get Flight Briefing

 

Header Auth

 Authentication is required for this endpoint.
gethttps://api.airmap.com/flight/v2/plan/flight_plan_id/briefing
curl --request GET \
  --url https://api.airmap.com/flight/v2/plan/flight_plan_id/briefing \
  --header 'authorization: Authorization' \
  --header 'x-api-key: X-API-KEY'
var request = require("request");

var options = { method: 'GET',
  url: 'https://api.airmap.com/flight/v2/plan/flight_plan_id/briefing',
  headers: 
   { authorization: 'Authorization',
     'x-api-key': 'X-API-KEY' } };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("https://api.airmap.com/flight/v2/plan/flight_plan_id/briefing")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)
request["x-api-key"] = 'X-API-KEY'
request["authorization"] = 'Authorization'

response = http.request(request)
puts response.read_body
var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("GET", "https://api.airmap.com/flight/v2/plan/flight_plan_id/briefing");
xhr.setRequestHeader("x-api-key", "X-API-KEY");
xhr.setRequestHeader("authorization", "Authorization");

xhr.send(data);
import requests

url = "https://api.airmap.com/flight/v2/plan/flight_plan_id/briefing"

headers = {
    'x-api-key': "X-API-KEY",
    'authorization': "Authorization"
    }

response = requests.request("GET", url, headers=headers)

print(response.text)
A binary file was returned

You couldn't be authenticated

{
  "status": "success",
  "data": {
    "airspace": {
      "color": "orange",
      "advisories": [
        {
          "id": "4684250",
          "name": "HAWTHORNE CLASS D requires FAA authorization, permissible below 400 ft",
          "last_updated": null,
          "latitude": 33.8583459,
          "longitude": -118.375023,
          "distance": 0,
          "type": "controlled_airspace",
          "city": "Redondo Beach",
          "state": "California",
          "country": "USA",
          "rule_id": 5069,
          "ruleset_id": "usa_part_107",
          "properties": {
            "url": "https://www.faa.gov/uas/request_waiver/",
            "ceiling": 400,
            "airport_id": "HHR",
            "airport_name": "Jack Northrop Fld/Hawthorne Muni",
            "airspace_classification": "D",
            "type": "d"
          },
          "color": "orange",
          "requirements": {
            "notice": {
              "phone": null,
              "digital": false
            }
          }
        }
      ]
    },
    "rulesets": [
      {
        "id": "usa_part_107",
        "rules": [
          {
            "short_text": "Do not fly in Class D controlled airspace without ATC authorization",
            "description": "Operations in Class B, C, D and E airspace are allowed with the required ATC permission. ",
            "status": "conflicting",
            "flight_features": [
              {
                "flight_feature": "flight_geo_intersect",
                "status": "conflicting",
                "description": "your flight is within Class D airspace",
                "input_type": null,
                "measurement_type": null,
                "measurement_unit": null
              }
            ]
          }
        ]
      }
    ],
    "validations": [],
    "authorizations": [],
    "failures": [],
    "created_at": "2017-10-03T00:12:39.077Z"
  }
}

Path Params

flight_plan_id
string
required

search by a specific flight id, e.g. flight|123

Headers

X-API-KEY
string
required

AirMap API KEY

Authorization
string
required

Example: 'Bearer [Token]'

Response

200 OK

Unauthorized

Flight plan not found

Unspecified error

Suggest Edits

Submit Flight Plan

 

Header Auth

 Authentication is required for this endpoint.
posthttps://api.airmap.com/flight/v2/plan/flight_plan_id/submit
curl --request POST \
  --url https://api.airmap.com/flight/v2/plan/flight_plan_id/submit \
  --header 'authorization: Authorization' \
  --header 'x-api-key: X-API-KEY'
var request = require("request");

var options = { method: 'POST',
  url: 'https://api.airmap.com/flight/v2/plan/flight_plan_id/submit',
  headers: 
   { authorization: 'Authorization',
     'x-api-key': 'X-API-KEY' } };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("https://api.airmap.com/flight/v2/plan/flight_plan_id/submit")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)
request["x-api-key"] = 'X-API-KEY'
request["authorization"] = 'Authorization'

response = http.request(request)
puts response.read_body
var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("POST", "https://api.airmap.com/flight/v2/plan/flight_plan_id/submit");
xhr.setRequestHeader("x-api-key", "X-API-KEY");
xhr.setRequestHeader("authorization", "Authorization");

xhr.send(data);
import requests

url = "https://api.airmap.com/flight/v2/plan/flight_plan_id/submit"

headers = {
    'x-api-key': "X-API-KEY",
    'authorization': "Authorization"
    }

response = requests.request("POST", url, headers=headers)

print(response.text)
A binary file was returned

You couldn't be authenticated

{
  "status": "success",
  "data": {
    "aircraft_id": null,
    "flight_id": "flight|7ODwZZ5tawKovYclPOMyRhpY8nae",
    "start_time": "2017-10-11T03:28:07.375Z",
    "end_time": "2017-10-11T04:28:06.000Z",
    "buffer": 1,
    "max_altitude_agl": 60.96,
    "min_altitude_agl": 0,
    "target_altitude_agl": 0,
    "takeoff_latitude": 33.855057,
    "takeoff_longitude": -118.370991,
    "flight_features": {},
    "rulesets": [
      "usa_part_107"
    ],
    "id": "flight_plan|Q5R6JpxCB7wbxPha3KM6ahNlaWz0",
    "pilot_id": "auth0|591dea1006732e54be4b875f",
    "created_at": "2017-10-11T03:28:07.374Z",
    "deleted": false,
    "geometry": {
      "type": "Polygon",
      "coordinates": [
        [
          [
            -118.370990753174,
            33.8550565114206
          ],
          [
            -118.373050689697,
            33.8550297821458
          ],
          [
            -118.37347984314,
            33.8546733910155
          ],
          [
            -118.373061418533,
            33.8523122622167
          ],
          [
            -118.371934890747,
            33.851742017552
          ],
          [
            -118.369971513748,
            33.8517687478557
          ],
          [
            -118.369950056076,
            33.8528112231754
          ],
          [
            -118.370990753174,
            33.8550565114206
          ]
        ]
      ]
    }
  }
}

Path Params

flight_plan_id
string
required

a flight id, e.g. flight|123

Headers

X-API-KEY
string
required

AirMap API KEY

Authorization
string
required

Example: 'Bearer [Token]'

Response

200 OK

Unauthorized

Flight plan not found

Unspecified error

 
Suggest Edits

Get Advisories by Flight Plan

 

Header Auth

 Authentication is required for this endpoint.
gethttps://api.airmap.com/advisory/v1/airspace/flight_plan_id
curl --request GET \
  --url https://api.airmap.com/advisory/v1/airspace/flight_plan_id \
  --header 'x-api-key: X-API-KEY'
var request = require("request");

var options = { method: 'GET',
  url: 'https://api.airmap.com/advisory/v1/airspace/flight_plan_id',
  headers: { 'x-api-key': 'X-API-KEY' } };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("https://api.airmap.com/advisory/v1/airspace/flight_plan_id")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)
request["x-api-key"] = 'X-API-KEY'

response = http.request(request)
puts response.read_body
var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("GET", "https://api.airmap.com/advisory/v1/airspace/flight_plan_id");
xhr.setRequestHeader("x-api-key", "X-API-KEY");

xhr.send(data);
import requests

url = "https://api.airmap.com/advisory/v1/airspace/flight_plan_id"

headers = {'x-api-key': 'X-API-KEY'}

response = requests.request("GET", url, headers=headers)

print(response.text)
A binary file was returned

You couldn't be authenticated

{
  "status": "success",
  "data": [
    {
      "id": 2343,
      "name": "HAWTHORNE CLASS D",
      "last_updated": "2017-12-14T05:10:26.000Z",
      "longitude": -118.375023,
      "latitude": 33.8583459,
      "distance": 757,
      "type": "controlled_airspace",
      "city": "Inglewood",
      "state": "California",
      "country": "USA",
      "rule_id": 5609,
      "ruleset_id": "usa_part_107",
      "properties": {
        "type": "d"
      },
      "color": "red",
      "requirements": {
        "notice": {
          "phone": 1239994576,
          "digital": true
        }
      }
    }
  ]
}

Path Params

flight_plan_id
string
required

ID of flight plan

Query Params

start
date-time

Limits the advisories returned to a specific date range. Use with "end". ISO-8601 format.

end
date-time

Limits the advisories returned to a specific date range. Use with "start". ISO-8601 format.

Headers

X-API-KEY
string
required

AirMap API KEY

Response

200 OK

Invalid geometry

Flight plan not found

Unspecified error

Suggest Edits

Get Advisories by Rulesets and Geometry

 

Header Auth

 Authentication is required for this endpoint.
posthttps://api.airmap.com/advisory/v1/airspace
curl --request POST \
  --url https://api.airmap.com/advisory/v1/airspace \
  --header 'x-api-key: X-API-KEY'
var request = require("request");

var options = { method: 'POST',
  url: 'https://api.airmap.com/advisory/v1/airspace',
  headers: { 'x-api-key': 'X-API-KEY' } };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("https://api.airmap.com/advisory/v1/airspace")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)
request["x-api-key"] = 'X-API-KEY'

response = http.request(request)
puts response.read_body
var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("POST", "https://api.airmap.com/advisory/v1/airspace");
xhr.setRequestHeader("x-api-key", "X-API-KEY");

xhr.send(data);
import requests

url = "https://api.airmap.com/advisory/v1/airspace"

headers = {'x-api-key': 'X-API-KEY'}

response = requests.request("POST", url, headers=headers)

print(response.text)
A binary file was returned

You couldn't be authenticated

{
  "status": "success",
  "data": [
    {
      "id": 2343,
      "name": "HAWTHORNE CLASS D",
      "last_updated": "2017-12-14T05:10:26.002Z",
      "longitude": -118.375023,
      "latitude": 33.8583459,
      "distance": 757,
      "type": "controlled_airspace",
      "city": "Inglewood",
      "state": "California",
      "country": "USA",
      "rule_id": 5609,
      "ruleset_id": "usa_part_107",
      "properties": {
        "type": "d"
      },
      "color": "red",
      "requirements": {
        "notice": {
          "phone": 1239994576,
          "digital": true
        }
      }
    }
  ]
}

Body Params

geometry
string
required

GeoJSON and WKT

rulesets
string
required

CSV list of rulesets

flight_features
string

Object containing key-value pairs of each flight feature and its value

start
date-time

Limits the advisories returned to a specific date range. Use with "end". ISO-8601 format.

end
date-time

Limits the advisories returned to a specific date range. Use with "start". ISO-8601 format.

Headers

X-API-KEY
string
required

AirMap API KEY

Response

200 OK

Invalid geometry

Flight plan not found

Unspecified error

 
Suggest Edits

Get Weather Conditions

 

Header Auth

 Authentication is required for this endpoint.
gethttps://api.airmap.com/advisory/v1/weather/
curl --request GET \
  --url 'https://api.airmap.com/advisory/v1/weather/?longitude=longitude&latitude=latitude' \
  --header 'x-api-key: X-API-KEY'
var request = require("request");

var options = { method: 'GET',
  url: 'https://api.airmap.com/advisory/v1/weather/',
  qs: 
   { longitude: 'longitude',
     latitude: 'latitude' },
  headers: { 'x-api-key': 'X-API-KEY' } };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("https://api.airmap.com/advisory/v1/weather/?longitude=longitude&latitude=latitude")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)
request["x-api-key"] = 'X-API-KEY'

response = http.request(request)
puts response.read_body
var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("GET", "https://api.airmap.com/advisory/v1/weather/?longitude=longitude&latitude=latitude");
xhr.setRequestHeader("x-api-key", "X-API-KEY");

xhr.send(data);
import requests

url = "https://api.airmap.com/advisory/v1/weather/"

querystring = {"longitude":"longitude","latitude":"latitude"}

headers = {'x-api-key': 'X-API-KEY'}

response = requests.request("GET", url, headers=headers, params=querystring)

print(response.text)
A binary file was returned

You couldn't be authenticated

{
  "status": "success",
  "data": {
    "attribution": "Powered by Dark Sky",
    "attribution_uri": "https://darksky.net/poweredby/",
    "weather": [
      {
        "condition": "Clear",
        "icon": "clear-day",
        "wind": {
          "heading": 199,
          "speed": 5.41
        },
        "humidity": 5.41,
        "visibility": 16.09,
        "precipitation": 0,
        "temperature": 25.62,
        "timezone": "America/Los Angeles",
        "time": "2017-12-14T05:10:26.005Z",
        "dew_point": 10.56,
        "mslp": 1009.57
      }
    ]
  }
}

Query Params

longitude
float
required

minimum -180, maximum 180

latitude
float
required

minimum -90, maximum 90

start
date-time

Start time for pulling weather data by hour within a time period. Use with "end". ISO-8601 format.

end
date-time

End time for pulling weather data by hour within a time period. Use with "start". ISO-8601 format.

Headers

X-API-KEY
string
required

AirMap API KEY

Response

200 OK

Unspecified error