Flight Briefing
Generate a preflight briefing for an origin–destination ICAO pair. The endpoint assembles METAR, TAF, NOTAMs, and optional PIREPs, then returns either structured JSON or render-ready text.
This briefing is assistive — it does not replace official dispatch release or authority publications. Show a visible disclaimer in user-facing apps.
Enterprise AI endpoints (including this briefing) run on IBM Granite infrastructure.
Request
Requirements
x-api-key on every request (direct subscription). Learn more →https://data.skylinkapi.com/v3/briefing/flight| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
origin | string | Yes | - | Origin ICAO airport code, e.g. KJFK |
destination | string | Yes | - | Destination ICAO airport code, e.g. EGLL |
include_weather | boolean | No | true | Include METAR/TAF |
include_notams | boolean | No | true | Include active NOTAMs |
include_pireps | boolean | No | false | Include recent PIREPs along the route (higher latency) |
format | string | No | json | json, markdown, plain_text, or html |
Response
Structured JSON (format=json)
{
"origin": "KJFK",
"destination": "EGLL",
"summary": "VFR at KJFK, MVFR at EGLL with light rain.",
"critical_restrictions": [],
"origin_briefing": {
"icao": "KJFK",
"weather": {
"metar_raw": "KJFK 151856Z 31008KT 10SM FEW250 08/M06 A3012 RMK AO2 SLP204",
"taf_raw": "TAF KJFK 151730Z 1518/1624 30010KT P6SM FEW250"
},
"notams": []
},
"destination_briefing": {
"icao": "EGLL",
"weather": {
"metar_raw": "EGLL 151850Z 22012KT 4000 -RA BKN030 07/05 Q1009",
"taf_raw": "TAF EGLL 151658Z 1518/1624 22012KT 6000 -RA BKN030"
},
"notams": []
},
"pireps": []
}Text/markup (format=markdown|plain_text|html)
{
"origin": "KJFK",
"destination": "EGLL",
"briefing": "# Flight Briefing\n\n- Route: KJFK -> EGLL\n- Weather: ..."
}Core fields
| Field | Type | Format | Description |
|---|---|---|---|
origin | string | all | Origin ICAO |
destination | string | all | Destination ICAO |
summary | string | json | AI-generated operational summary |
critical_restrictions | string[] | json | High-priority constraints |
origin_briefing | object | json | Per-airport section for origin |
destination_briefing | object | json | Per-airport section for destination |
pireps | array | json | Route-relevant PIREPs when enabled |
briefing | string | text/html | Render-ready content |
Client types
"""Flight briefing models for /briefing/flight."""from __future__ import annotationsfrom dataclasses import dataclass, fieldfrom typing import Any@dataclassclass FlightBriefingRequest: origin: str destination: str include_weather: bool = True include_notams: bool = True include_pireps: bool = False format: str = "json"@dataclassclass FlightBriefingStructuredResponse: origin: str destination: str summary: str critical_restrictions: list[str] = field(default_factory=list) origin_briefing: dict[str, Any] = field(default_factory=dict) destination_briefing: dict[str, Any] = field(default_factory=dict) pireps: list[Any] = field(default_factory=list)@dataclassclass FlightBriefingTextResponse: origin: str destination: str briefing: strIntegration
import osimport requestsBASE = "https://data.skylinkapi.com/v3"HEADERS = { "x-api-key": os.getenv("SKYLINK_API_KEY", "YOUR_API_KEY")}def fetch_flight_briefing(origin: str, destination: str) -> dict: """Generate an AI-powered briefing for a route.""" r = requests.get( f"{BASE}/briefing/flight", headers=HEADERS, params={ "origin": origin, "destination": destination, "include_weather": "true", "include_notams": "true", "include_pireps": "false", "format": "json", }, timeout=(10, 25), ) r.raise_for_status() return r.json()if __name__ == "__main__": import json briefing = fetch_flight_briefing("KJFK", "KLAX") print(json.dumps(briefing, indent=2, default=str)[:4000])Implementation notes
Latency trade-off. include_pireps=true adds a spatial lookup step and increases response time. Keep it off for fast-refresh UI modes.
Operational disclaimer. The AI summary is assistive, not authoritative flight dispatch documentation.
Error responses
422 - invalid ICAO or unsupported format
{
"detail": [
{
"type": "string_pattern_mismatch",
"loc": ["query", "format"],
"msg": "String should match pattern '^(json|markdown|plain_text|html)$'"
}
]
}Your SkyLink licence key, for keys bought direct from skylinkapi.com.
In: header
Query Parameters
Origin ICAO airport code (e.g. KJFK)
4 <= length <= 4Destination ICAO airport code (e.g. EGLL)
4 <= length <= 4Include METAR/TAF weather data
trueInclude NOTAMs
trueInclude PIREPs (pilot reports)
falseOutput format: 'json' (structured), 'markdown', 'plain_text', or 'html'
"json"^(json|markdown|plain_text|html)$Response Body
application/json
application/json
curl -X GET "https://data.skylinkapi.com/v3/briefing/flight?origin=stri&destination=stri"{
"origin": "KJFK",
"destination": "EGLL",
"summary": "VFR conditions at KJFK with clear skies and light winds. EGLL is MVFR with broken clouds at 3,000 feet and visibility 4 statute miles in light rain. No critical restrictions at either airport. Expect minor delays at EGLL due to wet runway conditions.",
"critical_restrictions": [],
"origin_briefing": {
"icao": "KJFK",
"weather": {
"metar_raw": "KJFK 151856Z 31008KT 10SM FEW250 08/M06 A3012 RMK AO2 SLP204",
"taf_raw": "TAF KJFK 151730Z 1518/1624 31010KT P6SM FEW250",
"conditions": "VFR. Visibility 10 statute miles. Few clouds at 25,000 feet. Wind from 310 degrees at 8 knots. Temperature 8°C, dewpoint -6°C. Altimeter 30.12 inHg."
},
"notams": [
{
"title": "Taxiway B closed",
"description": "Taxiway B between A and C is closed for maintenance. Use Taxiway D as alternate. Valid until Feb 20 at 18:00 UTC.",
"affected": "TWY B",
"notam_id": "01/234"
}
]
},
"destination_briefing": {
"icao": "EGLL",
"weather": {
"metar_raw": "EGLL 151850Z AUTO 24012KT 4000 -RA BKN030 06/04 Q1023",
"taf_raw": "TAF EGLL 151700Z 1518/1624 24015KT 5000 -RA BKN025",
"conditions": "MVFR. Visibility 4,000 meters (2.5 statute miles) in light rain. Broken clouds at 3,000 feet. Wind from 240 degrees at 12 knots. Temperature 6°C, dewpoint 4°C. Altimeter 1023 hPa."
},
"notams": []
},
"data_included": [
"metar",
"taf",
"notams"
],
"disclaimer": "This briefing is AI-generated and for informational purposes only. Always verify with official sources before flight operations."
}{
"detail": [
{
"loc": [
"string"
],
"msg": "string",
"type": "string",
"input": null,
"ctx": {}
}
]
}