Connect with AviNet: Your Guide to API Keys
API keys enable secure connections between applications and AviNet. Whether you're using flight tracking apps, electronic flight bags, or flight planning tools, API keys will make it possible to integrate your favourite aviation tools with AviNet, once configured correctly. Get in touch if you'd like to see or build an integration we don't yet have.
What are API Keys?
If you're using AviNet directly, you log in with your email and password to upload flights and interact with the platform. But what about when you want your favourite flight tracking app to automatically upload flights for you? This is where API keys come in.
Think of API keys as special access passes you create for your trusted applications. Just like having a membership card for your flying club, each app gets its own unique pass to interact with your AviNet account. These passes let apps perform specific actions (like uploading flights) while keeping your account secure. You're always in control - you can see which apps are using their passes, and you can revoke access from any app instantly without affecting the others.
The Journey to Integration
As our community has grown, we've seen the incredible ways pilots use AviNet alongside their other aviation tools. From flight tracking to flight planning, each tool plays its unique part in our flying adventures. By introducing API keys, we're taking the next natural step in making these tools work together seamlessly, creating an even more connected aviation community.

Real-World Examples
PureTrack (integrated now)
We're excited to announce that PureTrack , a popular flight-tracking application, already integrates with AviNet. PureTrack users can share their flights directly to AviNet with a single tap. This is just the beginning of how API keys will help connect the aviation apps you use daily.
PureTrack is a web-based platform that consolidates data from various tracking systems, providing real-time location information for aircraft, vehicles, boats, and individuals. It integrates data from multiple sources, including SPOT, Garmin inReach, FLARM, ADS-B, and numerous mobile applications, displaying all tracked entities on a single map.

SkyDemon (our main goal)
Imagine finishing a flight in SkyDemon (one of the most widely used electronic flight bag applications / VFR flight-planning and navigation software in the UK and Europe) and seeing a simple "Send to AviNet" button. One tap and your flight is shared with your aviation community. While this integration isn't built yet, it's exactly the seamless experience API keys will enable. This is our vision for the future of AviNet - where your favourite aviation apps will work together effortlessly.
Others
Other apps on our radar include OzRunways , SmartPPR , EasyVFR , Aircraft Info Desk , AvPlan EFB and of course Garmin Pilot and ForeFlight .
Getting Started
Ready to try it out? Here's how to get started:
- Log into AviNet
- Tap on "More" options
- Navigate to the API Keys section
- Create a new API key with a descriptive name
- Store your API key securely - you'll only see it once!
- Copy your stored API key into the service you wish to integrate with (such as PureTrack).
- Optional: if you're familiar with programming, you can try it out on your local PC. Otherwise, get in touch if you want to see a particular integration we don't yet have.

Best Practices
Your API keys are powerful tools, so it's important to use them wisely. Here are some key things to keep in mind:
- Keep Keys Private: Your API keys are like passwords - they should never be shared or posted publicly. Each key has full access to upload flights to your AviNet account.
- One Key, One Purpose: Create separate API keys for different integrations. This way, if you need to revoke access for one integration, others won't be affected.
- Key Expiry: API keys expire after 1 year. We will be changing this to never expire, for convenience. You can monitor the usage of your keys on your API Keys page. If you see any unusual activity, simply revoke access and create a new one.
- Key Rotation: If you suspect a key has been compromised, you can revoke it and create a new one at any time. Your other keys will continue working normally.
Looking Forward
API keys are more than just a technical feature - they're about building bridges between your favourite aviation tools. We're currently testing our API with more selected partners, and we're excited about the possibilities this opens up for the aviation community.
Want to integrate with AviNet? Have ideas for cool integrations? We'd love to hear from you! Get in touch with us at support@avinet.app to learn more about our API documentation and integration process.
If you want to dig into the technical details, read on.
Technical Integration
Are you developing an aviation app and want to integrate with AviNet? Here's everything you need to know about using our flight upload endpoint.
Using cURL
curl -X POST https://api.avinet.app/api/flights/upload \
-H "x-api-key: {user's API key}" \
-F "file=@flight1.gpx" \ # Required, must match fileExtension
-F "file=@flight2.gpx" \ # Optional, multiple files are sorted chronologically
-F "fileExtension=gpx" \ # Required (Options: gpx, kml, onflight, igc)
-F "name=Exploring the Isle of Wight" \ # Optional, max 100 characters
-F "registration=G-JSAK" \ # Optional, max 50 characters
-F "description=This was beautiful, glad we started early." # Optional, max 2000 characters
Using JavaScript
const formData = new FormData();
// Required: Add flight file(s) - they will be sorted chronologically
flightFiles.forEach(file => {
formData.append('file', file); // Must match fileExtension
});
// Required: Specify the file format
formData.append('fileExtension', 'gpx'); // Options: gpx, kml, onflight, igc
// Optional: Add flight metadata
formData.append('name', 'Exploring the Isle of Wight'); // max 100 characters
formData.append('registration', 'G-JSAK'); // max 50 characters
formData.append('description', 'This was beautiful, glad we started early.'); // max 2000 characters
const response = await fetch('https://api.avinet.app/api/flights/upload', {
method: 'POST',
headers: {
'x-api-key': userApiKey,
},
body: formData
});
const result = await response.json();
Response Schema
{
id: string; // UUID
userId: string; // Owner of the flight
pilotId?: string; // Optional pilot ID
name?: string; // Optional flight name (max 100 chars)
description?: string; // Optional description (max 2000 chars)
registration?: string; // Optional aircraft registration (max 50 chars)
weather?: string; // Optional weather conditions (max 256 chars)
isPrivate?: boolean; // Optional privacy setting
createdAt: Date; // Creation timestamp
updatedAt: Date; // Last update timestamp
privateCharts?: boolean; // Optional private charts setting
passengers?: string[] // Optional list of passengers
}