Live UAV operations
The Live UAV Operations API enables real-time tracking of UAVs by allowing the publication of live telemetry data, including position, altitude, velocity, and status. Additionally, the API provides the ability to retrieve nearby airborne traffic.
Typically, you can poll using GET and push data using POST as frequently as every 5 seconds, providing a balanced trade-off between latency and situational awareness. If necessary, the minimum polling and push interval can be reduced to 1 second for real-time responsiveness.
1. Publish UAV
Endpoint: POST /v1/uav
Description:Publishes one or many UAV position to the SafeSky platform. Optionally, it's returning a list of nearby aircraft for each UAV position within a default radius of 10000 meters. This response will not include the UAV you have posted.
Use case: Submit one or multiple UAV positions and receive nearby air traffic in a single API call.
Request Headers:
Content-Type:application/jsonx-api-key:<your_api_key>
Note:
- UAVs that you have published in this POST are excluded from the response.
- If your UAV is equipped with an ADS-B, FLARM, or ADS-L transponder, you must populate the
icao24field with the transponder's hexadecimal code. For more details, see the SafeSky FAQ.
Request Body:
| Field | Type | Required | Description |
|---|---|---|---|
id |
string |
Yes | Unique identifier for the UAV. |
last_update |
long |
Yes | The time of the event in seconds since epoch at UTC-0. |
latitude |
double |
Yes | Latitude in decimal degrees (4 decimal precision). |
longitude |
double |
Yes | Longitude in decimal degrees (4 decimal precision). |
altitude |
int |
Yes | Altitude of the UAV in AMSL meters. Use -9999 if altitude is unknown |
ground_speed |
int |
Yes | Ground speed of the UAV in meters per second. |
course |
int |
Yes | Direction of travel in degrees clockwise relative to true north. |
status |
string |
Yes | Current status of the UAV (INACTIVE, AIRBORNE, GROUNDED). |
Query Parameters:
| Parameter | Type | Required | Description | Default |
|---|---|---|---|---|
alt_min |
int |
No | Filter all aircraft below the given altitude in AMSL meters. Zero means 'unused'. | 0 |
alt_max |
int |
No | Filter all aircraft above the given altitude in AMSL meters. Zero means 'unused'. | 0 |
return_nearby_traffic |
boolean |
No | Return information about aircraft traffic within proximity of the UAV positions. | false |
Additional query Parameters when show_nearby_traffic = true:
| Parameter | Type | Required | Description | Default |
|---|---|---|---|---|
rad |
int |
No | Radius distance in meters from all UAV reference point (maximum: 20000 meters). | 10000 |
return_grounded_traffic |
boolean |
No | Include grounded beacons. | false |
Response:
- 201 CREATED: UAV published successfully; returns a list of nearby aircraft.
- 400 BAD REQUEST: Invalid parameters or failed authentication.
Example 1: POST Request to submit 1 UAV position:
POST /v1/uav?altitude_min=1000&altitude_max=3000&radius=15000&return_nearby_traffic=true
Content-Type: application/json
[
{
"id": "UAV123",
"status": "AIRBORNE",
"altitude": 180,
"course": 250,
"ground_speed": 24,
"latitude": 50.69378,
"longitude": 4.39201,
"call_sign": "FlyingFrog"
}
]
Example 2: POST Request to submit multiple UAV position:
POST /v1/uav?altitude_min=1000&altitude_max=3000&radius=15000&return_nearby_traffic=true
Content-Type: application/json
[
{
"id": "UAV1",
"altitude": 180,
"latitude": 50.69378,
"longitude": 4.39201
},
{
"id": "UAV2",
"altitude": 180,
"latitude": 50.7,
"longitude": 4.2
},
{
"id": "UAV3",
"altitude": 180,
"latitude": 50.8,
"longitude": 4.1
},
{
"id": "UAV4",
"altitude": 180,
"latitude": 58.97969734871041,
"longitude": 5.754451051174314
}
]
Example Response:
[
{
"latitude": 48.86584,
"longitude": 2.63723,
"beacon_type": "JET",
"call_sign": "IBE06CK",
"transponder_type": "ADS-B",
"last_update": 1733412793,
"altitude": 10554,
"vertical_rate": 2,
"accuracy": 0,
"altitude_accuracy": 0,
"course": 205,
"ground_speed": 237,
"turn_rate": 0.0,
"status": "AIRBORNE",
"id": "3423C3"
},
{
"latitude": 48.95459,
"longitude": 2.44153,
"beacon_type": "JET",
"call_sign": "NJE419F",
"transponder_type": "ADS-B",
"last_update": 1733412793,
"altitude": 0,
"vertical_rate": 0,
"accuracy": 0,
"altitude_accuracy": 0,
"course": 292,
"ground_speed": 0,
"turn_rate": 0.0,
"status": "GROUNDED",
"id": "494105"
}
]
2. Get Nearby Aircraft
Endpoint: GET /v1//uav
Description:
Retrieve a list of airborne aircraft traffic either within a specificcircular radius andaround altitudea rangereference frompoint, theor givenwithin latitudea andviewport longitude.rectangle (bounding box).
By default, the radius-based search radius isuses 1000010,000 meters, with a maximum of 2000020,000 meters. Altitude filters apply in both modes.
Use case:
Continuously fetch nearby traffic to visualise aircraft movements on a live or moving map.
Request Headers:
x-api-key:<your_api_key>
NoteNotes:
- If you have published
UAvsUAVstoviathethis API, theywillmaybeappearpart ofin theresponse.responsedepending on the filters.
- Search mode selection:
- Use
viewportto retrieve traffic inside a map bounding box (recommended for map-based UIs). - Otherwise, use
lat+lngwithradfor a circular proximity search.
- Use
Query Parameters:
| Parameter | Type | Required | Description | Default |
|---|---|---|---|---|
lat |
double |
Latitude in decimal degrees (4 decimal precision). Required for radius search. | 0 |
|
lng |
double |
Longitude in decimal degrees (4 decimal precision). Required for radius search. | 0 |
|
viewport |
string |
No | Bounding box to retrieve traffic, formatted as lat_min,lng_min,lat_max,lng_max (4 decimal precision is sufficient). |
— |
alt_min |
int |
No | Filter 0 means |
0 |
alt_max |
int |
No | Filter 0 means |
0 |
rad |
int |
No | Radius in meters from the reference point (viewport is not provided. |
10000 |
show_grounded |
|
No | GROUNDED true. |
false |
Response:
- 200 OK: Returns a list of nearby aircraft.
- 400 BAD REQUEST: Invalid parameters or failed authentication.
Example Request1: Radius-based request:
GET /v1/uav?latitude=lat=48.8588&longitude=lng=2.2943&altitude_min=alt_min=1000&altitude_max=alt_max=3000&radius=rad=15000
Example 2: Viewport-based request
GET /v1/uav?viewport=43.1035,-2.0821,47.9943,15.3216&alt_min=0&alt_max=5000&show_grounded=true
Example Response
[
{
"latitude": Similar48.86584,
response"longitude": as2.63723,
Get"beacon_type": Nearby"JET",
Aircraft"call_sign": will"IBE06CK",
be"transponder_type": returned.
"ADS-B",
"last_update": 1733412793,
"altitude": 10554,
"course": 205,
"ground_speed": 237,
"status": "AIRBORNE",
"id": "3423C3"
}
]
