# VATSIM API
> VATSIM, the Virtual Air Traffic Simulation Network, as an API — the largest online flight-simulation network, where tens of thousands of virtual pilots and air-traffic controllers fly and control in real time on flight simulators. This API exposes the live VATSIM network feed. /v1/pilots returns the pilots currently flying online, each with their live position (latitude, longitude, altitude, ground speed, heading), transponder, aircraft type and filed flight plan (departure, arrival, route, cruise altitude, flight rules); filter by airport (matching the departure or arrival ICAO, e.g. airport=EGLL) or by callsign prefix. /v1/controllers returns the air-traffic controllers currently online, each with callsign, radio frequency, facility (Delivery, Ground, Tower, Approach/Departure, Center), rating and logon time; filter by airport prefix (e.g. airport=KLAX matches KLAX_TWR, KLAX_APP), with an observers=true option. /v1/stats returns the network status — total connected clients and the number of pilots, controllers and ATIS positions online, with the snapshot timestamp. The network snapshot updates roughly every 15 seconds. Ideal for flight-simulation tools, live online-ATC and traffic maps, event and staffing dashboards, and community bots. Data from VATSIM (free to use; please credit VATSIM). This is the live virtual flight-simulation network — distinct from real-world ADS-B flight tracking.

## Authentication
All requests require your oanor API key in the `x-oanor-key` header. Get one at https://www.oanor.com/developer/keys.

```bash
curl -H "x-oanor-key: oanor_live_…" "https://api.oanor.com/vatsim-api/..."
```

## Pricing
- **Free** (Free) — 2,150 calls/Mo, 2 req/s
- **Starter** ($6/Mo) — 46,500 calls/Mo, 5 req/s
- **Pro** ($17/Mo) — 205,000 calls/Mo, 12 req/s
- **Mega** ($46/Mo) — 720,000 calls/Mo, 35 req/s

## Endpoints

### Network

#### `GET /v1/controllers` — Online air-traffic controllers

**Parameters:**
- `airport` (query, optional, string) — Filter by airport prefix, e.g. KLAX
- `limit` (query, optional, string) — Max results (1-500)

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/vatsim-api/v1/controllers"
```

**Response:**
```json
{
    "data": {
        "count": 100,
        "airport": null,
        "matched": 111,
        "controllers": [
            {
                "cid": 1828727,
                "name": "1828727",
                "logon": "2026-06-01T06:53:09.9318906Z",
                "rating": 3,
                "callsign": "JFK_TWR",
                "facility": "Tower",
                "frequency": "119.100"
            },
            {
                "cid": 1381105,
                "name": "1381105",
                "logon": "2026-06-01T09:33:05.1129226Z",
                "rating": 3,
                "callsign": "WSSS_1_TWR",
                "facility": "Tower",
                "frequency": "118.600"
            },
            {
                "cid": 1904583,
                "name": "Emmett B",
                "logon": "2026-06-01T11:12:04.3368513Z",
                "rating": 2,
                "callsign": "BDL_GND",
                "facility": "Ground",
                "frequency": "121.900"
            },
            {
                "cid": 1925301,
                "name": "Khalil",
                "logon": "2026-06-01T11:31:33.4966701Z",
                "rating": 3,
                "callsign": "OJAI_TWR",
                "facility": "Tower",
                "frequency": "119.800"
            },
            {
                "cid": 1774241,
                "name": "Weston Koenig",
                "logon": "2026-06-01T11:43:22.8802799Z",
                "rating": 2,
                "calls
…(truncated, see openapi.json for full schema)
```

#### `GET /v1/pilots` — Online pilots (position + flight plan)

**Parameters:**
- `airport` (query, optional, string) — Filter by departure/arrival ICAO, e.g. EGLL Example: `EGLL`
- `callsign` (query, optional, string) — Filter by callsign prefix
- `limit` (query, optional, string) — Max results (1-500)

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/vatsim-api/v1/pilots?airport=EGLL"
```

**Response:**
```json
{
    "data": {
        "count": 50,
        "pilots": [
            {
                "cid": 1305324,
                "name": "1305324",
                "logon": "2026-06-01T05:52:16.8613347Z",
                "arrival": "CYYC",
                "heading": 234,
                "aircraft": "B77W",
                "callsign": "ACA851",
                "latitude": 52.60728,
                "alternate": "CYEG",
                "departure": "EGLL",
                "longitude": -108.99119,
                "altitude_ft": 38017,
                "transponder": "2000",
                "flight_rules": "I",
                "cruise_altitude": "34000",
                "groundspeed_kts": 492
            },
            {
                "cid": 1337627,
                "name": "1337627",
                "logon": "2026-06-01T06:31:26.7399928Z",
                "arrival": "EGLL",
                "heading": 339,
                "aircraft": "A388",
                "callsign": "BAW56",
                "latitude": 44.44593,
                "alternate": "EGPH",
                "departure": "FAOR",
                "longitude": 4.83149,
                "altitude_ft": 38984,
                "transponder": "2000",
                "flight_rules": "I",
                "cruise_altitude": "33000",
                "groundspeed_kts": 452
            },
            {
                "cid": 1988782,
                "name": "Matthew Adams EGLL",
                "logon": "2026-06-01T08:02:45.2131393Z",
          
…(truncated, see openapi.json for full schema)
```

#### `GET /v1/stats` — Network status & online counts

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/vatsim-api/v1/stats"
```

**Response:**
```json
{
    "data": {
        "updated": "2026-06-01T16:22:58.1501855Z",
        "atis_online": 121,
        "pilots_online": 1599,
        "connected_clients": 1876,
        "controllers_online": 156
    },
    "meta": {
        "timestamp": "2026-06-01T16:23:22.891Z",
        "request_id": "1923e9e8-0c83-4c9e-823c-50faf105f3db"
    },
    "status": "ok",
    "message": "Stats retrieved",
    "success": true
}
```

### Meta

#### `GET /v1/meta` — Usage notes

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/vatsim-api/v1/meta"
```

**Response:**
```json
{
    "data": {
        "note": "Live data from VATSIM, the largest online flight-simulation network of virtual pilots and air-traffic controllers. /v1/pilots = the pilots currently flying online, each with live position (lat/lon, altitude, ground speed, heading), aircraft and flight plan (departure, arrival, route, cruise altitude); filter by airport (departure or arrival ICAO, e.g. airport=EDDF) or by callsign prefix. /v1/controllers = the air-traffic controllers currently online, each with callsign, frequency, facility (Tower, Approach, Center, …) and rating; filter by airport prefix (e.g. airport=EGLL matches EGLL_TWR, EGLL_APP), and set observers=true to include observers. /v1/stats = the network status — total connected clients and the counts of pilots, controllers and ATIS online, with the snapshot timestamp. This is the live flight-simulation network — distinct from real-world ADS-B flight tracking. Data from VATSIM (free; please credit VATSIM). Snapshots update about every 15 seconds. Ideal for flight-sim tools, online-ATC maps and community dashboards.",
        "source": "VATSIM — Virtual Air Traffic Simulation Network (data.vatsim.net)",
        "endpoints": [
            "/v1/pilots",
            "/v1/controllers",
            "/v1/stats",
            "/v1/meta"
        ]
    },
    "meta": {
        "timestamp": "2026-06-01T16:23:22.978Z",
        "request_id": "4ce5586b-2391-40a9-badf-affa1b55ca11"
    },
    "status": "ok",
    "message": "Meta retriev
…(truncated, see openapi.json for full schema)
```


---
Marketplace page: https://www.oanor.com/api/vatsim-api
OpenAPI spec: https://www.oanor.com/api/vatsim-api/openapi.json
