Traffic API V1
This API is used to receive the air traffic data collected by the network of INVOLI receivers or other sources, which are feeding the INVOLI.live server.
The traffic REST API is on the endpoint:
https://api.involi.live/v1/traffic
Authorization is granted via a bearer token in the HTTP header.
Example: Authorization: bearer <token>
The token must be requested from the authentication server with your client id and client secret.
Sources
The API provides aircraft data from multiple sources. A list of available sources can be obtained by making a GET request on https://api.involi.live/v1/traffic/sources. The response contains the ID of each source alongside a human-readable description.
Example Response:
[
{
"id": "986e94de-4a20-42ad-ab10-1206cb7e2846",
"label": "ADS-B"
"description": "ADS-B data from INVOLI receivers" },
{
"id": "a1f0dd50-04d8-410c-87e6-b8bd1771b5d9",
"label: "UAT"
"description": "UAT data from INVOLI receivers" } ]
Field | Type | Unit | Description |
---|---|---|---|
id |
string |
ID of the data source |
|
label | string | Label of the data source | |
description (optional) |
string |
Description of the data source |
Request
An HTTP GET request on the endpoint returns a full snapshot of current air traffic.
It is also possible to send a POST request with a JSON body containing settings to narrow down the data. All settings in this JSON are optional.
Examples of request body with source selection or with all settings:
{
"selectedTrafficSourceIds": [
"986e94de-4a20-42ad-ab10-1206cb7e2846"
]
}
{
"boundingBox": { "southLatitude": 48.0, "northLatitude": 51.0, "westLongitude": 6.0, "eastLongitude": 7.0 }, "upperAltitude": 10000, "lowerAltitude": 0,
"selectedTrafficSourceIds": [
"986e94de-4a20-42ad-ab10-1206cb7e2846"
]
}
Field | Type | Unit | Description |
---|---|---|---|
boundingBox.southLatitude | float | ° | South latitude limit |
boundingBox.northLatitude | float | ° | North latitude limit |
boundingBox.westLongitude | float | ° | West longitude limit |
boundingBox.eastLongitude | float | ° | East longitude limit |
upperAltitude |
float |
m |
Upper limit on aircraft altitude |
lowerAltitude |
float |
m |
Lower limit on aircraft altitude |
selectedTrafficSourceIds | string array | List of source IDs to get traffic from (see Sources above) ; if not provided all available sources are included |
Altitude corresponds to elevation above WGS84 reference ellipsoid.
Warning: if request options are used, aircraft without known altitude will not be returned.
Data format
The API returns a list of aircraft and (optionally) adsb records.
The response data is always compressed and cannot be requested in plain format. Attempting to do so will result in a "406 Not Acceptable" error. Supported encoding: gzip, deflate.
Example aircraft record:
{
"aircraft": {
"ids": {
"icao": "3006b5",
"iid": "e1399607-ad09-46c3-9854-337bfa27d378"
},
"latitude": 48.51804571636652,
"longitude": 13.047421242285054,
"position_timestamp": [
1711100527,
277885249
],
"wgs84_altitude": 9372.6,
"barometric_altitude": 9144,
"ground_speed": 195.19201354382324,
"vertical_speed": 0,
"ground_status": "airborne",
"timestamp": [
1711100527,
652503876
],
"course": 299.8759926916894,
"aircraft_type": "large_plane",
"call_sign": "DLA97F",
"source_id": "dc19dbbd-186a-4dad-9593-342461e20309"
},
"adsb": {
"gva": 2,
"nac_p": 9,
"nac_v": 1,
"nic": 8,
"q_bit": true,
"rebroadcast": false,
"sda": 2,
"sil": 3
}
}
Aircraft Fields Description:
Field | Type | Unit | Description |
---|---|---|---|
source_id | string | ID of the source | |
ids.iid | string | Internal aircraft ID | |
ids.icao | string | ICAO |
|
ids.tisb_site_id | int | Site ID for TIS-B messages | |
ids.track | string | Track ID only for source: MLAT Mode A/C |
|
ids.serial_number | string | LEMAN tracker serial number only for sources: Remote ID Broadcast, Remote ID Network |
|
ids.uas_id | string | UAS ID only for sources: Remote ID Broadcast, Remote ID Network |
|
ids.wifi_mac | string | MAC address of the broadcasting device only for source: Remote ID Broadcast |
|
aircraft_type | string | enum | Type of the aircraft, for example, small_plane (see full list below). |
latitude | float | ° | |
longitude | float | ° | |
position_timestamp | array | [s, ns] |
Timestamp of the last position update (latitude and longitude). |
wgs84_altitude | float | m | Elevation above WGS84 reference ellipsoid |
barometric_altitude | float | m | Air pressure in terms of altitude in the Internal Standard Atmosphere |
call_sign | string | Call sign advertised by the aircraft | |
registration (*) |
string | Official registration of the aircraft. | |
squawk | string | 4-digit transponder squawk | |
course (**) |
float | ° | Aircraft tracking over ground. Degrees from North |
heading (***) |
float | ° | Aircraft orientation (nose). Degrees from North |
ground_speed | float | m/s | The horizontal speed of the aircraft relative to the ground |
ground_status | string | enum | - airborne - on_ground - unknown |
timestamp | array | [s, ns] | Original message timestamp indicating reception time, set in the receiver (separated in seconds and nanoseconds) |
vertical_speed | float | m/s | The vertical component of the aircraft's speed. The vertical speed is positive when gaining altitude (going up) and negative when losing altitude. |
All fields are optional except ids and source_id. This is because not all information is available depending on the source. |
(*) - Often the registration field is not present, because it is not transmitted by the airplane
(**), (***) - These two information elements are not always the same, even if they look similar. The heading is the direction in which the airplane nose is pointing and is often not included. Instead, the course is used.
(****) Due to the characteristic of the Internet, it can sometimes happen, that the later message without position arrive at our server before earlier message with the new position. We do not discard such messages and in this case the “timestamp” is earlier than “position_timestamp”.
Aircraft Types:
- unknown
- small_plane
- large_plane
- helicopter
- paraglider
- parachute
- balloon
- drone
- ground_obstacle
- ground_vehicle
- ground_operator
ADS-B Fields Description (only available for ADSB sources):
Field | Type | Unit | Description |
---|---|---|---|
adsb_version | integer | ADS-B version | |
nac_p | integer | Navigation accuracy category (position) | |
nac_v | integer | Navigation accuracy category (velocity) | |
nic | integer | Navigation integrity category | |
sil | integer | Surveillance integrity level | |
sda | integer | System design assurance | |
q_bit | boolean | Atitude quantization bit | |
gva | integer | Geometric vertical accuracy | |
rebroadcast | boolean | true if this is a rebroadcast ADS-B message |
Restrictions
The INVOLI server receives and responds to the requests for a given client ID. The recommended rate is 1 request per 1 second. If the number of requests increases, the server will reply with status code 429: "Too many requests". If multiple servers or clients need to access an API, each should have its unique client ID.