Flight briefing pack
POST /v1/briefing
RAIM, NOTAMs, weather and airspace for one flight in one call. The same flight object goes to the RAIM route check, the NOTAMs along the route, the weather along the route and the airspace the flight enters (see Airspace), or to the parts you name in parts, and the answer leads with one summary built from them. Each part counts as one request of its own service, recorded as POST /v1/briefing (raim), (notams), (weather) and (airspace): today the RAIM part is counted like POST /v1/raim/route, and the NOTAM, weather and airspace parts are Beta and not counted. With RAIM in it the pack stands on its RAIM route check: when that check fails, the pack answers with its error. When any other part fails, its part says so and the rest of the pack stands.
Request: the flight object (see Flight object) and these options. Anything else is refused with 400 unknown_field; for finer control call the route endpoints.
parts: the parts to run, any ofraim,notams,weatherandairspace. Default: all four.window_minutes(default 0): for the RAIM part, how far the departure may slip each side, as onPOST /v1/raim/route.profile: the RAIM profile, as onPOST /v1/raim/route.alternates: for the weather part, alternate aerodromes (ICAO codes), up to 10, with METAR and TAF at the destination ETA.format:full(default) orcompact. Compact keeps what a crew acts on: each part's summary, the RAIM dispatch verdict, outages and departure window, every NOTAM with its full text and its place on the route (without geometry, area or the raw message), the weather hazards without their tracks, and the airspace entered with its limits and where the aircraft is inside (the near ones counted, the TFRs without a shape named). It is made for poor connections, such as a tablet on a satellite link over an ocean.known: the etags of the parts you already hold,{"raim": "...", "notams": "...", "weather": "...", "airspace": "..."}. A part whose etag still matches comes back as{"etag": "...", "unchanged": true}, so a refresh en route carries only what changed. The etag ignores when an answer was computed.
{
"route": "KMSP DWN6.ABR J158 RAP MBW KSFO",
"departure": "2026-10-14T23:00:00Z",
"speed_kt": 450,
"cruise_fl": 370,
"window_minutes": 60,
"format": "compact",
"known": { "notams": "9f2c1d0e4b7a6c35" }
}
Response (a refresh where the NOTAMs had not changed):
{
"summary": "RAIM: RAIM is available along the whole route for the planned departure 23:00Z and for every departure from 22:00Z to 15 Oct 00:00Z. NOTAMs: 82 NOTAMs along the route, in force 14 Oct 23:00Z to 15 Oct 02:11Z: 19 crossing the corridor, 57 abeam, 6 at the route's aerodromes, 0 FIR-wide. Weather: 1436 NM, 14 23:00Z to 15 02:11Z. 1 hazard(s) affect the flight.",
"raim": { "etag": "3fa1c2d9e07b6a51", "summary": "RAIM is available along the whole route ...", "dispatch": { "ok": true }, "availability_pct": 100 },
"notams": { "etag": "9f2c1d0e4b7a6c35", "unchanged": true },
"weather": { "etag": "77b0e2a19c4d5f08", "summary": "1436 NM, 14 23:00Z to 15 02:11Z ...", "hazards": [], "aerodromes": [] },
"generated_at": "2026-10-14T21:05:12Z"
}
Each part is its route endpoint's answer (in full, or in the compact form) with etag added. For a route string, resolved_route comes once at the top, not in each part. A part that failed is {"etag": "...", "status": 503, "error": "...", "message": "..."}, and the summary says it is not available right now.