Official VATSWIM API launch announcement
System Wide Information Management (SWIM) for VATSIM
Release Date: January 16, 2026
Version: 1.0.0
Status: Production Ready
VATSWIM (System Wide Information Management) is a centralized real-time data exchange hub that provides unified access to flight information across the entire VATSIM network. SWIM serves as a single source of truth for flight data, enabling consistent information sharing between all VATSIM systems, tools, and services.
Base URL: https://perti.vatcscc.org/api/swim/v1
Visit https://perti.vatcscc.org/swim-keys and log in with your VATSIM account to create an API key. Self-service tiers available:
| Tier | Rate Limit | WebSocket Connections | Best For |
| Public | 100 req/min | 5 | Personal projects, web apps |
| Developer | 300 req/min | 50 | Development, testing, prototypes |
Include your API key in the Authorization header:
curl -H "Authorization: Bearer YOUR_API_KEY" \
https://perti.vatcscc.org/api/swim/v1/flights
Full API documentation: https://perti.vatcscc.org/docs/swim/
SWIM enables real-time fleet tracking, schedule integration, and operational data exchange for virtual airline operations.
Key Capabilities:
Recommended Endpoints:
GET /flights?callsign=DAL # All Delta callsigns
GET /flights?airline_icao=AAL # All American Airlines flights
GET /tmi/controlled?dest=KJFK # TMI-controlled flights to JFK
POST /ingest/adl # Push OOOI times (Partner tier required)
WebSocket Events:
Subscribe to departure/arrival events for your fleet:
{
"action": "subscribe",
"filters": { "callsign_prefix": "DAL" }
}
Integration Example:
from swim_client import SwimClient
client = SwimClient(api_key="swim_par_yourkey")
Get all active flights for your airline
flights = client.get_flights(callsign="UAL")
Push actual departure time from ACARS
client.ingest_adl({
"gufi": "VAT-20260116-UAL123-KJFK-KLAX",
"off_utc": "2026-01-16T15:30:00Z"
})
Request Partner Tier: Contact vATCSCC for Partner tier access with write capabilities.
Build flight tracking applications, ATC tools, statistics dashboards, or integrate SWIM data into existing software.
Key Capabilities:
Recommended Endpoints:
GET /flights # All active flights (paginated)
GET /flights?dest_icao=KJFK # Arrivals to JFK
GET /flights?artcc=ZNY # Flights in NY Center airspace
GET /positions # GeoJSON positions for mapping
GET /flight/{gufi} # Single flight by GUFI
WebSocket Real-Time Streaming:
const ws = new WebSocket('wss://perti.vatcscc.org/api/swim/v1/ws');
ws.onopen = () => {
ws.send(JSON.stringify({
action: 'auth',
api_key: 'swim_dev_yourkey'
}));
ws.send(JSON.stringify({
action: 'subscribe',
events: ['flight.departed', 'flight.arrived', 'flight.positions'],
filters: { airport: 'KJFK' }
}));
};
ws.onmessage = (event) => {
const data = JSON.parse(event.data);
console.log('Event:', data.event, data.payload);
};
Available SDKs:
pip install vatsim-swim-clientnpm install @vatsim/swim-clientVATSIM.SWIM.Clientorg.vatsim:swim-clientSWIM provides authoritative flight data for traffic management, demand analysis, and operational coordination.
Key Capabilities:
Recommended Endpoints:
GET /flights?artcc=ZDC # All flights in DC Center
GET /flights?fp_dest_artcc=ZNY # Flights destined to NY Center
GET /tmi/programs # Active ground stops and GDPs
GET /tmi/controlled # All TMI-controlled flights
GET /flights?phase=departing # Departing flights
TMI Data Available:
gs_held, gs_release_utc)edct_utc)ctd_utc, cta_utc)delay_minutes, delay_status)is_exempt, exempt_reason)Example: Monitor Arrival Demand
# Get all inbound flights to Atlanta
atl_arrivals = client.get_flights(dest_icao="KATL", phase="enroute")
Group by ETA hour for demand analysis
for flight in atl_arrivals:
eta = flight.get('eta_runway_utc')
# Build demand chart...
Access flight tracking data, check TMI status, and build personal flight tools.
Key Capabilities:
Recommended Endpoints:
GET /flight/{gufi} # Your specific flight
GET /flights?callsign=N12345 # Search by callsign
GET /tmi/programs # Check active ground stops
GET /positions?bbox=... # Flights in geographic area
Example: Check Your Flight Status
# Find your flight
curl -H "Authorization: Bearer swim_pub_yourkey" \
"https://perti.vatcscc.org/api/swim/v1/flights?callsign=N172SP"
Check for ground stops at your destination
curl -H "Authorization: Bearer swim_pub_yourkey" \
"https://perti.vatcscc.org/api/swim/v1/tmi/programs?airport=KJFK"
System-tier access for core VATSIM infrastructure with full read/write capabilities.
Key Capabilities:
Ingest Endpoints:
POST /ingest/adl # Flight data updates
POST /ingest/track # Position updates (batch)
POST /ingest/metering # Metering/sequencing data
Data Authority:
Contact vATCSCC for System tier credentials and integration support.
| Method | Endpoint | Description |
| GET | /flights | List flights with filtering |
| GET | /flight/{gufi} | Get single flight by GUFI |
| GET | /positions | GeoJSON flight positions |
| GET | /tmi/programs | Active TMI programs |
| GET | /tmi/controlled | TMI-controlled flights |
| POST | /ingest/adl | Ingest flight data (Partner+) |
| POST | /ingest/track | Ingest position data (System) |
| Parameter | Example | Description |
callsign | DAL | Filter by callsign (wildcards supported) |
dest_icao | KJFK | Filter by destination airport |
dept_icao | KLAX | Filter by departure airport |
artcc | ZNY | Filter by current ARTCC |
fp_dest_artcc | ZDC | Filter by destination ARTCC |
phase | enroute | Filter by flight phase |
page | 1 | Pagination page number |
per_page | 100 | Results per page (max 1000) |
format | fixm | Use FIXM field naming |
| Event | Description |
flight.created | New flight detected |
flight.departed | Flight has taken off |
flight.arrived | Flight has landed |
flight.positions | Position update batch |
flight.deleted | Flight removed from system |
tmi.issued | Ground stop or GDP issued |
tmi.released | Ground stop or GDP released |
system.heartbeat | Server keepalive (30s interval) |
Contact:
| Tier | Requests/Minute | WebSocket Connections | Write Access |
| Public | 30 | 5 | No |
| Developer | 100 | 50 | No |
| Partner | 1,000 | 500 | Limited |
| System | 10,000 | 10,000 | Full |
1. Cache responses - Flight data updates every 15 seconds; no need to poll faster
2. Use WebSocket - For real-time needs, subscribe to events instead of polling
3. Batch requests - Use pagination efficiently; request only needed fields
4. Handle rate limits - Implement exponential backoff on 429 responses
5. Use filters - Always filter by airport/ARTCC/callsign to reduce data transfer
| Status | Meaning |
| 400 | Bad request (invalid parameters) |
| 401 | Unauthorized (invalid/missing API key) |
| 403 | Forbidden (insufficient permissions) |
| 404 | Not found |
| 429 | Rate limit exceeded |
| 500 | Server error |
VATSWIM is provided by vATCSCC for the VATSIM community. For flight simulation use only.*