Getting started with Laminar

Laminar Data Hub APIs are a part of a commercial cloud platform that provides organizations with a single source of enhanced, fused and validated aviation data. These APIs offer best-in-class flight, NOTAM, aeronautical and weather data through a set of easy-to-use REST and streaming APIs.

The APIs also provide Temporary Flight Restrictions (TFRs) and Significant Meteorological Information (SIGMETs) that are used to improve situational awareness by displaying them on applications or maps.

In this document, we’ll show you how to get started with these APIs.

Get a trial account

If you do not already have an account, sign up today for a free trial.

Request structure

Here’s the request structure for Laminar Data Hub APIs.

Supported protocols

Laminar Data Hub APIs are mostly REST GET APIs that return data using industry-standard XML formats such as FIXM, IWXXM, AIXM, GML, GEOJson, and/or JSON. The data type response depends on the type of data that’s returned. There are several APIs that use POST requests.

Authenticating

Each service invocation is authenticated using the user_key value that was assigned to your account.

Use the following steps to acquire a user_key:

  1. log in to developer.laminardata.aero

  2. On the home page, there’s a section labeled Welcome to the Laminar Data User Portal

  3. In that section, you’ll see Application Name and the access key for the application

  4. Copy the access key

  5. Pass the access key in the user_key parameter as part of the request

REST URI structure

All URIs follow a common pattern:

  • Base URI: https://api.laminardata.aero

  • Version: For example: /v1

  • Required API path parameters per API: For example: /airlines/AAL/flights

  • User key query parameter (GET requests): For example: ?user_key=YOUR_USER_KEY

  • Optional query parameters, (GET requests): &status=AIRBORNE

Note that most REST calls use a GET verb.

Here’s what a complete request looks like:

https://api.laminardata.aero/v1/airlines/AAL/flights?user_key=YOUR_USER_KEY&status=AIRBORNE

Header Values

Some APIs return different response types depending on the value of the header settings. For example, the Flights Arrivals by Aerodrome API can return XML or JSON.

Specify the response type in the header of the API. For example:

curl -X GET --header Accept: application/json
https://api.laminardata.aero/v1/aerodromes/EGLL/arrivals?user_key=USER_KEY

Or:

curl -X GET --header Accept: application/xml
https://api.laminardata.aero/v1/aerodromes/EGLL/arrivals?user_key=USER_KEY

Alternatively, you can specify a format parameter to the request:

curl -X GET https://api.laminardata.aero/v1/aerodromes/EGLL/arrivals?user_key=USER_KEY&format=json

In addition, some APIs such as the NOTAM APIs can return compressed data. To request a compressed response from the NOTAM APIs, add the header Accept-Encoding: gzip to your request. If you do that, the service will confirm that responses are compressed by including the response header Content-Encoding: gzip.

Navigating Laminar Data Hub APIs

Some of the Laminar Data Hub APIs are restricted to customers who have passed an additional approval process. These include:

  • Route Segments

  • Aerodromes

  • Airspaces

  • Designated Points

  • Navaids

  • Regulations

  • Flight Detail By GUFI

To request access, fill out the Restricted API Access Request Form.

Laminar Data Hub APIs follow RESTful principles, allowing for accessible and intuitive navigation across the data.

The topmost path parameter is typically used to group different types of data for a type of entity. For example, /aerodromes/ is used as a top-level path parameter to return information for an aerodrome.

Examples include:

  • /aerodromes/KJFK/departures is used for flights departing JFK

  • /aerodromes/KJFK/arrivals is used for flights arriving in JFK

  • /aerodromes/KJFK/notams is used for JFK NOTAMs

APIs return lists with links that allow you to navigate programmatically to the details that interest you.

For example, the following ICAO Prefix List API returns a list of links:

https://api.laminardata.aero/v1/icao-prefixes?user_key=YOUR_USER_KEY

Note that in the above example, we’ve left out some XML namespacing to make the example more concise.

In this case, ICAO Prefixes represent large airspaces, often spanning numerous countries. ICAO Prefix E represents western Europe. To investigate further into the data, you can follow the xlink:href to the ICAO Prefix Detail API.

https://api.laminardata.aero/v1/icao-prefixes/E?user_key=YOUR_USER_KEY

This yields a response that provides more details about ICAO Prefix E:

To retrieve a list with all ICAO FIRs that start with E, use this call:

https://api.laminardata.aero/v1/icao-prefixes/E/firs?user_key=YOUR_USER_KEY

The response contains a number of links, each representing an FIR within ICAO Prefix E:

To retrieve a list containing API URLs for the EBBU FIR, use this call:

https://api.laminardata.aero/v1/icao-prefixes/E/firs/EBBU?user_key=YOUR_USER_KEY

This returns a feature member for EBBU, which contains additional APIs for that FIR:

To see all the NOTAMs for EBBU, make the following call:

https://api.laminardata.aero/v1/icao-prefixes/E/firs/EBBU/notams?user_key=YOUR_USER_KEY

Response structure and options

After a successful call, the API returns an HTTP status code of 200 with the appropriate response. The format of the response varies depending upon the API, but typically is in an industry-standard XML format appropriate for that data set. Here are some examples:

See the various APIs for more details.

Error handling

Errors produce an HTML response that includes details about the error. Here are some typical HTTP error codes:

401 (Authorization Required)

The request sent wasn’t authorized by the system. For example, the user_key doesn’t have permission to request the specific data.

403 (Forbidden)

Authorization failed because valid credentials weren’t provided. This is usually because of a usage limit for an application has been exceeded or the application doesn’t have permission to use the API.

404 (Not Found)

The requested item wasn’t found, or the endpoint doesn’t exist.

500 level errors (Internal Server Error)

This is due to an unexpected server-side failure. If you encounter this, please contact our helpdesk for assistance. The response body includes a unique identifier that we can use to help locate the problem.

Here’s an example of an HTML error body:

<!DOCTYPE html><html><head><title>Authentication Failed</title><body style="text-align:center;"><h1>Error 403 - Authentication Failed</h1><p>The following APIs are restricted to customers who have passed an approval process: Route Segments, Aerodromes, Airspaces, Designated Points, Navaids, Regulations & Flight Detail By GUFI. Please check your API request & API Key on our <a href="https://developer.laminardata.aero">developer portal</a>. To request access, please fill out the form <a href="https://developer.laminardata.aero/support/auth">here</a>.</p><hr>Snowflake Software</body></html>

Version Policy

When new versions of an API are published, the version path parameter will be updated for that set of APIs. For example:

https://api.laminardata.aero/v2/icao-prefixes/{icao.prefix}/firs/{fir.icao}/airspaces

Resources

Laminar Data Hub APIs provide machine-readable NOTAMs (Notice to Airmen or Notice to Air Missions) that are spatially enriched to give visibility into issues that impact a flight.

Fill out the Restricted API Access Request Form for access to restricted APIs.

Contact us to learn more about Laminar Data Hub.