For the complete documentation index, see llms.txt. This page is also available as Markdown.

Flights

List Flights

GET /flights/load/page:{page}/from:{from}/to:{to}/aircraft:{aircraftId}/pilot:{pilotId}/base:{baseId}/flight_type:{typeId}/.json

Retrieve a paginated list of flight records with optional filters.

Path Parameters

All filter parameters are optional — use empty string to skip a filter.

Parameter
Type
Description

page

number

Page number (starts at 1)

from

string

Start date filter (YYYY-MM-DD)

to

string

End date filter (YYYY-MM-DD)

aircraft

string

Aircraft ID filter

pilot

string

Pilot user ID filter

base

string

Base ID filter

flight_type

string

Flight type ID filter

limit

number

Records per page (optional, default 20, max 20000)

Example

GET /flights/load/page:1/from:2025-01-01/to:2025-03-31/aircraft:/pilot:/base:/flight_type:/.json

Response

{
  "flights": [
    {
      "Flight": {
        "id": "5678",
        "date": "2025-03-10",
        "draft": false,
        "callsign": "EC-ABC",
        "departure_airport": "LEMD",
        "landing_airport": "LEBL",
        "offblocks_time": "08:00:00",
        "takeoff_time": "08:15:00",
        "landing_time": "09:15:00",
        "onblocks_time": "09:25:00",
        "block_time": "5100",
        "flight_time": "3600",
        "rules": "VFR",
        "landings": "1",
        "engine_starts": "1",
        "pax": "2",
        "oil": "0.5",
        "fuel": "45",
        "cargo": "0",
        "night_flight_time": "0",
        "ifr_flight_time": "0"
      },
      "Base": {
        "id": "5",
        "name": "Madrid Base"
      },
      "Aircraft": {
        "id": "45",
        "registration": "EC-ABC",
        "multiengine": false,
        "multipilot": false,
        "simulator": false,
        "AircraftModel": {
          "name": "C172",
          "icao": "C172",
          "AircraftManufacturer": { "name": "Cessna" }
        }
      },
      "FlightType": {
        "id": "1",
        "name": "Training",
        "color": "#3498db",
        "pic_flight_time": "pic",
        "sic_flight_time": "none",
        "supervisor_flight_time": "none"
      },
      "Pic": {
        "id": "123",
        "user_group_id": "110",
        "UserDetail": {
          "name": "John",
          "surname": "Doe",
          "id": "123"
        }
      },
      "Sic": null
    }
  ],
  "paginate": {
    "page": 1,
    "current": 1,
    "count": 156,
    "prevPage": false,
    "nextPage": true,
    "pageCount": 7,
    "limit": 25
  },
  "time": "1.23"
}

Pagination

Field
Type
Description

page

number

Requested page

current

number

Current page

count

number

Total number of records

prevPage

boolean

Whether a previous page exists

nextPage

boolean

Whether a next page exists

pageCount

number

Total number of pages

limit

number

Records per page

Time Fields

Flight times (block_time, flight_time, night_flight_time, ifr_flight_time) are returned in seconds.

Timezone

The clock fields offblocks_time, takeoff_time, landing_time, onblocks_time and the flight date are expressed in the company's flight timezone. This is CompanySetting.flight_timezone_id when set, otherwise the company timezone (CompanyDetail.timezone_id) — see Company Settings. This applies both to the times returned here and to the wall-clock times you submit when creating or editing a flight. Schedules and trainings use the company timezone regardless.


View Flight

GET /flights/view/{id}.json

Retrieve full details for a single flight, including crew, airports, audit trail, and permissions.

Users with user_group_id > 170 may only view flights they are involved in (creator, PIC, SIC, supervisor, or owner of the aircraft). Otherwise returns 403 Forbidden.

Path Parameters

Parameter
Type
Description

id

string

Flight ID

Response

Permission Flags

Field
Type
Description

canConfirm

boolean

User can confirm/approve this flight

canEdit

boolean

User can edit this flight

canCreate

boolean

User can create new flights

canDelete

boolean

User can delete this flight


Cancel Flight

POST /flights/cancel.json

Cancel (soft-delete) a flight record. The flight is marked as deleted and a cancel entry is added to its change history. There is no date restriction — a flight can be cancelled at any time, including flights dated in the past.

Request Body

Field
Type
Required
Description

id

string

Yes

Flight ID to cancel

reason

string

Yes

Reason for cancellation

text

string

No

Free-text note stored with the cancellation

notify

string

No

"true" to notify the other crew (in-app message + WhatsApp where available)

Authorization

The caller must satisfy at least one of the following, otherwise the request returns 400 Not authorized:

  • Has the Flight.create, Flight.edit, or Flight.confirm company permission, or

  • Is a crew member of the flight — the PIC (pic_id), SIC (sic_id), or Supervisor (supervisor_id), or

  • Is the user who created the flight (user_id).

Company Administrators, Operations Managers, and Compliance & Safety Managers hold these permissions by default. Note that the front-end only surfaces the Cancel action for draft flights; the endpoint itself does not restrict by draft/confirmed state.


Confirm Flight

POST /flights/confirm/{id}.json

Confirm a draft flight (marks it LANDED, updates aircraft books, billing, and duty records). The flight must already have a block time, aircraft, and PIC. Requires the Flight.confirm company permission; when require_flight_password is enabled on the company, a pass field with the caller's password is also required.

Overlap check

Confirmation is blocked when the flight's block times overlap another confirmed (non-draft, non-deleted) flight on the same aircraft. The response is 400 with the usual message, plus a conflicts array naming the blocking flight(s) so a client can link to them:

Field
Type
Description

id

string

Blocking flight ID

callsign

string | null

Blocking flight callsign, when set

date

string

Flight date (YYYY-MM-DD)

offblocks_time

integer

Off-blocks time, unix seconds

onblocks_time

integer

On-blocks time, unix seconds

link

string | null

Relative URL to the flight — populated only for flights in the caller's own company; null otherwise

The conflicts field is additive: clients that don't read it see the same message/code as before. Up to 20 blocking flights are returned, ordered by off-blocks time.


Export Flights (XLS)

The server-side xls:1 export has been removed. The logbook Excel file is now generated client-side by the NEO web app: it pulls the flights from the List Flights endpoint above (using the limit parameter to fetch all matching rows) and builds the XLSX in the browser.


Flight Types

GET /flight_types.json

List all flight types configured for the company.

Response


Bases

GET /bases/index.json

List all operational bases.

Response

Last updated