SDKs

Official SDKs are generated from the OpenAPI 3.1 spec, so every field in the docs exists as a typed property. Community clients are maintained by people who needed a language we didn't cover — we're glad, not territorial.

Node.js / TypeScript

@openflight/sdk

Official

Node 18+. ESM and CJS builds.

Retries, rate-limit awareness and typed responses out of the box. The webhook verifier is included — do not write your own HMAC check at 11pm, use the one that's already tested.

// npm install @openflight/sdk
import OpenFlight from "@openflight/sdk";

const of = new OpenFlight({ apiKey: process.env.OPENFLIGHT_KEY });

const board = await of.flights.search({ origin: "KAUS", status: "delayed" });
for (const f of board) {
  console.log(f.id, f.departure.delay_minutes);
}

Python

openflight

Official

Python 3.9+. Depends on httpx.

Synchronous client with an async twin (AsyncClient). Pydantic models for every response.

# pip install openflight
import os, openflight

client = openflight.Client(api_key=os.environ["OPENFLIGHT_KEY"])

flight = client.flights.get("OF1502")
pred = client.predictions.delay(flight_id="OF1502")

print(pred.minutes, pred.confidence)  # → 12 0.83

Go

openflight-go

Official

Go 1.22+. Every method takes a context.Context, as is right and proper.

// go get github.com/openflight/openflight-go
import of "github.com/openflight/openflight-go"

client := of.NewClient(of.WithAPIKey(os.Getenv("OPENFLIGHT_KEY")))

flight, err := client.Flights.Get(ctx, "OF1502")
if err != nil { log.Fatal(err) }
fmt.Println(flight.Status, flight.Departure.Gate)

Swift

OpenFlightSwift

Official

Swift 5.9+, iOS 16+ / macOS 13+. Full async/await since 2.0.

Included because two of our biggest customers are iOS-first. If you're not shipping an Apple app, skip to the community section.

// Swift Package Manager: .package(url: "https://github.com/openflight/openflight-swift", from: "2.0.0")
let client = OpenFlightClient(apiKey: ProcessInfo.processInfo.environment["OPENFLIGHT_KEY"]!)

let flight = try await client.flights.get(id: "OF1502")
print(flight.status, flight.departure.gate ?? "—")

Community SDKs

openflight-php

Community

PHP 8.1+. Maintained by Tomasz W., who also maintains the webhook signature check that caught two of our spec typos.

// composer require openflight/php-client
$client = \OpenFlight\Client::fromEnv();

$board = $client->flights()->search(['origin' => 'KAUS', 'status' => 'delayed']);

foreach ($board as $flight) {
    echo $flight->id, ' ', $flight->departure->delay_minutes, PHP_EOL;
}

More community clients

Community
LanguagePackageMaintainerNotes
Rubyopenflight-rb@flyingcatCovers REST; GraphQL via separate gem
.NETOpenFlight.DotNet@meridian-devNuGet, targets .NET 8
Rustopenflight-rs@henningTokio async, generated from the spec
Elixiropenflight_ex@pipeline-dreamsStatus + webhooks only

Missing your language? The OpenAPI spec is downloadable from the dashboard — most of the community clients above started as a one-evening openapi-generator run that grew on people.

Versioning

Official SDKs track the API major version: SDK 3.x talks to /v3. When v4 eventually arrives (nothing announced, stop asking, Viktor), v3 SDKs will keep working against a compatibility window for at least six months. Community SDKs version independently — pin what you trust. Release notes for everything live in the changelog.