Pular para o conteúdo principal

Private API v1

Base URL: https://your-tenant.airspace.example/api/v1

Authentication: API key via X-API-Key header (see API Keys)

Overview​

The Private API v1 provides CRUD access to your airline's operational data, limited to the permissions of the key's creator (see Authorization). All endpoints return JSON and follow REST conventions. Responses use Laravel's standard pagination envelope with data, links, and meta keys.

Authentication​

Include your API key in every request using the X-API-Key header:

GET /api/v1/flights HTTP/1.1
Host: your-tenant.airspace.example
X-API-Key: ask_your_key_here

Requests without a valid key receive a 401 Unauthorized response.

The key is also accepted as a bearer token (Authorization: Bearer ask_your_key_here), which is how MCP clients authenticate.

Authorization​

Every request acts as the user who created the API key, and is limited to that user's permissions — the same permissions the backoffice screens and the MCP server check. A key created by a staff member can do what that staff member can do; a key created by a pilot can only do what that pilot can do in the app. If the creator's account is deleted, the key stops working (401).

A request outside those permissions receives 403 Forbidden.

EndpointsReadCreate, update, delete
Airlines, airports and their briefing data (runways, stands, services, threats, operational notes, alternates), aircraft, fleets, sub-fleets, schedules, downloads and liveries, ranks, licenses and renewal conditions, networks, countries, airspacesAny keyThe matching staff permission (airport briefing data needs edit on airports; networks need the system settings permission)
Company NOTAMsAny key; only the NOTAMs currently in effect, unless the user may view NOTAMsThe matching staff permission
DocumentsAny key; only the documents the user's rank, licenses and role open to them, unless the user may edit documentsThe matching staff permission
Charter missions and their legsCharter staff see every mission; anyone else sees the open missions on the contracts board plus the missions assigned to themapply, claim, forfeit and leg book act for the key's user, with the same eligibility rules as the contracts board
Flights and flight eventsStaff who may see flights see all; anyone else only their ownThe matching staff permission
BookingsStaff who may see bookings see all; anyone else only their ownThe matching staff permission — pilots book and cancel on the booking page, where the booking rules and cancellation cost apply
UsersStaff who may see pilots see all; anyone else only their own accountThe matching staff permission
MessagesStaff see all; anyone else only their ownStaff
Spotter photos, rank applications, exam assignments, examsStaff with the matching permission see all; anyone else only their ownThe matching staff permission
Everything else: maintenance checks, MEL items and definitions, technical logbook, hour adjustments, FDM, load and payload profiles, passenger names, speech packs, voice profiles, VOCC triggers, restrictions, exam pools and templates, ferry flights, repositioning bounties, positions, system settings, Discord integrations, charter customers, fleet performance configsThe matching staff permissionThe matching staff permission

Exam question pools include their questions and answer keys only for users who may edit pools. Pilot performance endpoints apply each pilot's privacy settings as seen by the key's user.

Pagination​

All list endpoints return paginated results. Control pagination with query parameters:

ParameterDefaultMaxDescription
per_page25100Number of items per page
page1--Page number

Filtering​

Filter list results by passing filter[field]=value query parameters. Only fields listed as filterable for each endpoint are accepted; others are silently ignored.

GET /api/v1/flights?filter[status]=acceptedSystem&filter[user_id]=42

Sorting​

Sort results with the sort and sort_dir query parameters. Only fields listed as sortable for each endpoint are accepted.

GET /api/v1/flights?sort=created_at&sort_dir=desc
ParameterValuesDefault
sortField name--
sort_dirasc, descasc

Core Endpoints​

Airlines​

Manage airline definitions (name, ICAO/IATA codes, callsign, branding assets).

MethodPathDescription
GET/airlinesList all airlines
GET/airlines/{id}Get a single airline
POST/airlinesCreate an airline
PUT/airlines/{id}Update an airline
DELETE/airlines/{id}Delete an airline

Filterable fields: name, icao, iata, active

Sortable fields: name, icao, created_at

Airports​

Manage airport definitions including geographic coordinates, navigation data, and operational flags.

MethodPathDescription
GET/airportsList all airports
GET/airports/{id}Get a single airport
POST/airportsCreate an airport
PUT/airports/{id}Update an airport
DELETE/airports/{id}Delete an airport

Filterable fields: icao, iata, name, country_id, active

Sortable fields: icao, name, country_id, created_at

Airport Runways (nested)​

MethodPathDescription
GET/airports/{airportId}/runwaysList runways
GET/airports/{airportId}/runways/{id}Get a runway
POST/airports/{airportId}/runwaysCreate a runway
PUT/airports/{airportId}/runways/{id}Update a runway
DELETE/airports/{airportId}/runways/{id}Delete a runway

Filterable fields: designator, active, preferred, ils

Sortable fields: designator, created_at

Airport Stands (nested)​

MethodPathDescription
GET/airports/{airportId}/standsList stands
GET/airports/{airportId}/stands/{id}Get a stand
POST/airports/{airportId}/standsCreate a stand
PUT/airports/{airportId}/stands/{id}Update a stand
DELETE/airports/{airportId}/stands/{id}Delete a stand

Filterable fields: apron_name, stand

JSON array fields (multi-select): fleet_ids, subfleet_ids, airline_ids, origin_country_ids, origin_airport_ids, destination_country_ids, destination_airport_ids

Sortable fields: apron_name, stand, created_at

Airport Services (nested)​

MethodPathDescription
GET/airports/{airportId}/servicesList services
GET/airports/{airportId}/services/{id}Get a service
POST/airports/{airportId}/servicesCreate a service
PUT/airports/{airportId}/services/{id}Update a service
DELETE/airports/{airportId}/services/{id}Delete a service

The type field accepts: fuel_gas, fuel_jet, ground_handling, technician, ground_power, air_starter, catering, cleaning, wheelchair_assistance.

Airport Threats (nested)​

MethodPathDescription
GET/airports/{airportId}/threatsList threats
GET/airports/{airportId}/threats/{id}Get a threat
POST/airports/{airportId}/threatsCreate a threat
PUT/airports/{airportId}/threats/{id}Update a threat
DELETE/airports/{airportId}/threats/{id}Delete a threat

The type field accepts: obstacles, general_aviation, terrain, slope_irregular, wildlife, runway_incursion, window.

Airport Operational Notes (nested)​

MethodPathDescription
GET/airports/{airportId}/operational-notesList operational notes
GET/airports/{airportId}/operational-notes/{id}Get an operational note
POST/airports/{airportId}/operational-notesCreate an operational note
PUT/airports/{airportId}/operational-notes/{id}Update an operational note
DELETE/airports/{airportId}/operational-notes/{id}Delete an operational note

The category field accepts: caution, attention, operation. The context field accepts: general, arrival, departure.

Airport Alternates (nested)​

MethodPathDescription
GET/airports/{airportId}/alternatesList alternates
GET/airports/{airportId}/alternates/{id}Get an alternate
POST/airports/{airportId}/alternatesCreate an alternate
PUT/airports/{airportId}/alternates/{id}Update an alternate
DELETE/airports/{airportId}/alternates/{id}Delete an alternate

Filterable fields: alternate_airport_id, fleet_id, subfleet_id

Aircraft​

Manage individual aircraft registrations, performance profiles, and operational state.

MethodPathDescription
GET/aircraftList all aircraft
GET/aircraft/{id}Get a single aircraft
POST/aircraftCreate an aircraft
PUT/aircraft/{id}Update an aircraft
DELETE/aircraft/{id}Soft-delete an aircraft

Filterable fields: registration, aircraft_sub_fleet_id, status, airport_id

Sortable fields: registration, created_at

Notable response fields: airport_stand_id -- the aircraft's current parking stand (nullable, set automatically when flights complete). fuel_factor -- the SimBrief fuel factor code, P## or M## (default P00); any other value is rejected. acdata -- SimBrief flight-plan aircraft data, which may include engines (max 12 characters) for approximated aircraft types.

observação

Aircraft use soft deletion. Deleted aircraft are no longer returned by the API but remain in the database.

Aircraft Maintenance Checks (nested)​

MethodPathDescription
GET/aircraft/{aircraftId}/maintenance-checksList maintenance checks
GET/aircraft/{aircraftId}/maintenance-checks/{id}Get a maintenance check
POST/aircraft/{aircraftId}/maintenance-checksCreate a maintenance check
PUT/aircraft/{aircraftId}/maintenance-checks/{id}Update a maintenance check
DELETE/aircraft/{aircraftId}/maintenance-checks/{id}Delete a maintenance check

The status field accepts: ok, repositioning, pending_at_base, in_maintenance, overdue.

Aircraft MEL Items (nested)​

MethodPathDescription
GET/aircraft/{aircraftId}/mel-itemsList MEL items
GET/aircraft/{aircraftId}/mel-items/{id}Get a MEL item
POST/aircraft/{aircraftId}/mel-itemsCreate a MEL item
PUT/aircraft/{aircraftId}/mel-items/{id}Update a MEL item
DELETE/aircraft/{aircraftId}/mel-items/{id}Delete a MEL item

The repair_category field accepts: A, B, C, D.

Aircraft Hour Adjustments (nested)​

MethodPathDescription
GET/aircraft/{aircraftId}/hour-adjustmentsList hour adjustments
GET/aircraft/{aircraftId}/hour-adjustments/{id}Get an hour adjustment
POST/aircraft/{aircraftId}/hour-adjustmentsCreate an hour adjustment
PUT/aircraft/{aircraftId}/hour-adjustments/{id}Update an hour adjustment
DELETE/aircraft/{aircraftId}/hour-adjustments/{id}Delete an hour adjustment

Aircraft Fleets​

Manage aircraft fleet groupings (e.g., "Boeing 737 Family").

MethodPathDescription
GET/aircraft-fleetsList all fleets
GET/aircraft-fleets/{id}Get a single fleet
POST/aircraft-fleetsCreate a fleet
PUT/aircraft-fleets/{id}Update a fleet
DELETE/aircraft-fleets/{id}Soft-delete a fleet

Filterable fields: name, icao_code

Sortable fields: name, icao_code, created_at

Aircraft Sub-Fleets​

Manage aircraft sub-fleet variants within a fleet (e.g., "B737-800" within Boeing 737 Family).

MethodPathDescription
GET/aircraft-sub-fleetsList all sub-fleets
GET/aircraft-sub-fleets/{id}Get a single sub-fleet
POST/aircraft-sub-fleetsCreate a sub-fleet
PUT/aircraft-sub-fleets/{id}Update a sub-fleet
DELETE/aircraft-sub-fleets/{id}Soft-delete a sub-fleet

Filterable fields: name, aircraft_fleet_id

Sortable fields: name, created_at

Liveries​

Manage aircraft livery files available for download by pilots.

MethodPathDescription
GET/liveriesList all liveries
GET/liveries/{id}Get a single livery
POST/liveriesCreate a livery
PUT/liveries/{id}Update a livery
DELETE/liveries/{id}Delete a livery

Filterable fields: name, airline_id

Sortable fields: name, created_at

The simulator field accepts: msfs_2020, msfs_2024, xplane_11, xplane_12, p3d, fsx.

Operations Endpoints​

Flights​

Full lifecycle management for pilot flight records (PIREPs).

MethodPathDescription
GET/flightsList all flights
GET/flights/{id}Get a single flight
POST/flightsCreate a flight
PUT/flights/{id}Update a flight
DELETE/flights/{id}Delete a flight

Filterable fields: user_id, booking_id, status, aircraft_id, departure_airport_id, arrival_airport_id

Sortable fields: created_at, departure_time, arrival_time, status

Notable response fields: departure_stand_id, arrival_stand_id -- parking stands copied from the associated booking at flight creation (nullable). departure_runway, arrival_runway, departure_stand, arrival_stand -- the runway and stand the aircraft actually used, derived from its ACARS position stream at finalize (nullable; null until the flight finalizes, and still null after finalize if the pilot's client never reported runway/stand telemetry).

Flight Events (nested)​

MethodPathDescription
GET/flights/{flightId}/eventsList flight events
GET/flights/{flightId}/events/{id}Get a flight event
POST/flights/{flightId}/eventsCreate a flight event
PUT/flights/{flightId}/events/{id}Update a flight event
DELETE/flights/{flightId}/events/{id}Delete a flight event

Telemetry Points (nested)​

MethodPathDescription
GET/flights/{flightId}/telemetry-pointsList telemetry points
GET/flights/{flightId}/telemetry-points/{id}Get a telemetry point
POST/flights/{flightId}/telemetry-pointsCreate a telemetry point
PUT/flights/{flightId}/telemetry-points/{id}Update a telemetry point
DELETE/flights/{flightId}/telemetry-points/{id}Delete a telemetry point

Schedules​

Manage airline schedules (route definitions available for booking).

MethodPathDescription
GET/schedulesList all schedules
GET/schedules/{id}Get a single schedule
POST/schedulesCreate a schedule
PUT/schedules/{id}Update a schedule
DELETE/schedules/{id}Delete a schedule

Filterable fields: airline_id, departure_airport_id, arrival_airport_id, aircraft_fleet_id, active

Sortable fields: flight_number, created_at

Bookings​

Manage pilot flight bookings (reservations for schedules or charter flights).

MethodPathDescription
GET/bookingsList all bookings
GET/bookings/{id}Get a single booking
POST/bookingsCreate a booking
PUT/bookings/{id}Update a booking
DELETE/bookings/{id}Soft-delete a booking

Filterable fields: user_id, schedule_id, aircraft_id, status

Sortable fields: created_at, booked_at

Notable response fields: departure_stand_id, arrival_stand_id -- the pre-assigned departure and arrival parking stands (nullable, set automatically at booking creation).

observação

Bookings use soft deletion. Deleted bookings are no longer returned by the API but remain in the database.

Ferry Flights​

Manage aircraft repositioning ferry flights.

MethodPathDescription
GET/ferry-flightsList all ferry flights
GET/ferry-flights/{id}Get a single ferry flight
POST/ferry-flightsCreate a ferry flight
PUT/ferry-flights/{id}Update a ferry flight
DELETE/ferry-flights/{id}Delete a ferry flight

Filterable fields: status, aircraft_id

Sortable fields: created_at

Ferry Legs (nested)​

MethodPathDescription
GET/ferry-flights/{ferryFlightId}/legsList ferry legs
GET/ferry-flights/{ferryFlightId}/legs/{id}Get a ferry leg
POST/ferry-flights/{ferryFlightId}/legsCreate a ferry leg
PUT/ferry-flights/{ferryFlightId}/legs/{id}Update a ferry leg
DELETE/ferry-flights/{ferryFlightId}/legs/{id}Delete a ferry leg

Repositioning Bounties​

Manage bounties offered for repositioning aircraft to desired locations.

MethodPathDescription
GET/repositioning-bountiesList all bounties
GET/repositioning-bounties/{id}Get a single bounty
POST/repositioning-bountiesCreate a bounty
PUT/repositioning-bounties/{id}Update a bounty
DELETE/repositioning-bounties/{id}Delete a bounty

Filterable fields: airport_id, aircraft_id, status

Sortable fields: created_at, expires_at

Crew Endpoints​

Users​

Manage airline crew members (pilots). Sensitive fields such as passwords and tokens are never returned in API responses.

MethodPathDescription
GET/usersList all users
GET/users/{id}Get a single user
POST/usersCreate a user
PUT/users/{id}Update a user
DELETE/users/{id}Soft-delete a user

Filterable fields: name, email, rank_id, status, callsign

Sortable fields: name, email, created_at, callsign

User responses include a licenses array containing the pilot's current license assignments:

{
"id": 42,
"name": "Jane Smith",
"email": "[email protected]",
"callsign": "JS001",
"status": "active",
"licenses": [
{
"id": 1,
"name": "A320 Type Rating",
"slug": "a320-type-rating",
"status": "active",
"issued_at": "2025-01-15T00:00:00.000000Z",
"expires_at": "2026-01-15T00:00:00.000000Z",
"last_renewed_at": "2025-01-15T00:00:00.000000Z",
"renewal_opted_out": false
}
]
}

The renewal_opted_out field is true when the pilot has disabled automatic renewal for that license — the license will expire naturally at the end of its current term without being eligible for the daily renewal job.

Ranks​

Manage pilot ranks and their progression requirements.

MethodPathDescription
GET/ranksList all ranks
GET/ranks/{id}Get a single rank
POST/ranksCreate a rank
PUT/ranks/{id}Update a rank
DELETE/ranks/{id}Delete a rank

Filterable fields: name, level

Sortable fields: name, level, created_at

Rank Applications (nested)​

Manage rank promotion applications submitted by users.

MethodPathDescription
GET/ranks/{rankId}/applicationsList applications for a rank
GET/ranks/{rankId}/applications/{id}Get a single application
POST/ranks/{rankId}/applicationsCreate an application
PUT/ranks/{rankId}/applications/{id}Update an application
DELETE/ranks/{rankId}/applications/{id}Delete an application

Filterable fields: user_id, status

Sortable fields: created_at, status

Licenses​

Manage pilot licenses and type ratings.

MethodPathDescription
GET/licensesList all licenses
GET/licenses/{id}Get a single license
POST/licensesCreate a license
PUT/licenses/{id}Update a license
DELETE/licenses/{id}Delete a license

Filterable fields: name, active

Sortable fields: name, created_at

Renewal Conditions (nested)​

Manage the conditions required for license renewals.

MethodPathDescription
GET/licenses/{licenseId}/renewal-conditionsList renewal conditions
GET/licenses/{licenseId}/renewal-conditions/{id}Get a renewal condition
POST/licenses/{licenseId}/renewal-conditionsCreate a renewal condition
PUT/licenses/{licenseId}/renewal-conditions/{id}Update a renewal condition
DELETE/licenses/{licenseId}/renewal-conditions/{id}Delete a renewal condition

Filterable fields: type, active

Sortable fields: sort_order, created_at

Positions​

Manage flight position reports (telemetry snapshots during active flights).

MethodPathDescription
GET/positionsList all positions
GET/positions/{id}Get a single position
POST/positionsCreate a position
PUT/positions/{id}Update a position
DELETE/positions/{id}Delete a position

Filterable fields: name, active

Sortable fields: name, sort_order, created_at

Exam Endpoints​

Question Pools​

Manage exam question pools — collections of reusable questions grouped by topic.

MethodPathDescription
GET/exam-question-poolsList all question pools
GET/exam-question-pools/{id}Get a single pool (includes question count)
POST/exam-question-poolsCreate a question pool
PUT/exam-question-pools/{id}Update a question pool
DELETE/exam-question-pools/{id}Delete a question pool

Filterable fields: name, active

Sortable fields: name, created_at

Pool Questions (nested, shallow)​

Manage questions within a question pool. Uses shallow routing — list and create are nested under the pool, while show, update, and delete use the question ID directly.

MethodPathDescription
GET/exam-question-pools/{poolId}/questionsList questions in a pool
POST/exam-question-pools/{poolId}/questionsCreate a question
GET/questions/{id}Get a single question
PUT/questions/{id}Update a question
DELETE/questions/{id}Delete a question

Filterable fields: type, active

The type field accepts: multiple_choice, true_false, free_text.

Store and update accept a nested choices array. Each choice has text (string) and is_correct (boolean). On update, include id to update an existing choice; omit id to create a new one. Choices not included in the array are deleted.

Exam Templates​

Manage exam templates — blueprints defining which pools to draw from, time limits, pass thresholds, and attempt limits.

MethodPathDescription
GET/exam-templatesList all templates
GET/exam-templates/{id}Get a single template (includes pool configuration)
POST/exam-templatesCreate a template
PUT/exam-templates/{id}Update a template
DELETE/exam-templates/{id}Delete a template

Filterable fields: name, active

Sortable fields: name, created_at

Store and update accept a pools array with exam_question_pool_id (integer) and question_count (integer). When provided on update, the existing pool configuration is replaced entirely.

Exam Assignments​

Manage exam assignments linking pilots to exam templates. Store uses ExamService for idempotent creation — duplicate assignments for the same user, template, and entity are returned rather than re-created.

MethodPathDescription
GET/exam-assignmentsList all assignments
GET/exam-assignments/{id}Get a single assignment (includes user, template, exams)
POST/exam-assignmentsCreate an assignment
DELETE/exam-assignments/{id}Delete an assignment

Filterable fields: user_id, exam_template_id, status

Sortable fields: created_at, status

The status field accepts: pending, in_progress, passed, failed.

observação

Exam assignments do not support updates via the API. Status transitions are managed automatically by the exam lifecycle (starting, submitting, grading).

Exams (read-only)​

Access exam instances (individual attempts). Exams are created automatically when a pilot starts an assignment and cannot be created or modified via the API.

MethodPathDescription
GET/examsList all exams
GET/exams/{id}Get a single exam

Filterable fields: user_id, exam_assignment_id, status, passed

Sortable fields: created_at, started_at, score

The status field accepts: in_progress, submitted, pending_review, graded, expired.

Maintenance Endpoints​

Maintenance Check Definitions​

Manage scheduled maintenance check definitions (A/B/C/D checks) that apply to aircraft based on airline, fleet, or subfleet scope.

MethodPathDescription
GET/maintenance-check-definitionsList all check definitions
GET/maintenance-check-definitions/{id}Get a single check definition
POST/maintenance-check-definitionsCreate a check definition
PUT/maintenance-check-definitions/{id}Update a check definition
DELETE/maintenance-check-definitions/{id}Delete a check definition

Filterable fields: name, check_type, fleet_id, active

Sortable fields: name, created_at

The check_type field accepts: A, B, C, D. Check definitions can include interval thresholds for flight hours, cycles, and calendar days that trigger the maintenance lifecycle.

MEL Definitions​

Manage Minimum Equipment List definitions that simulate equipment defects and their operational impact on dispatch.

MethodPathDescription
GET/mel-definitionsList all MEL definitions
GET/mel-definitions/{id}Get a single MEL definition
POST/mel-definitionsCreate a MEL definition
PUT/mel-definitions/{id}Update a MEL definition
DELETE/mel-definitions/{id}Delete a MEL definition

Filterable fields: title, repair_category, fleet_id, active

Sortable fields: title, repair_category, created_at

The repair_category field accepts: A, B, C, D. MEL definitions include ATA chapter codes (ata_chapter, ata_section, ata_subsection), equipment quantities, procedures, and a generation chance (0-100%) for probabilistic defect creation on booking. ata_subsection is alphanumeric (max 4 chars) and supports the TTL MEL letter-suffix format such as 01B, producing computed codes like 30-21-01B. The subsection is only included in ata_code when ata_section is also set. The response includes computed ata_code and ata_chapter_name fields, and penalties when the relationship is loaded.

MEL Definition Penalties (nested)​

Manage dispatch parameter penalties attached to a MEL definition. These penalties affect SimBrief flight planning when an MEL item is active.

MethodPathDescription
GET/mel-definitions/{melDefinitionId}/penaltiesList penalties
GET/mel-definitions/{melDefinitionId}/penalties/{id}Get a single penalty
POST/mel-definitions/{melDefinitionId}/penaltiesCreate a penalty
PUT/mel-definitions/{melDefinitionId}/penalties/{id}Update a penalty
DELETE/mel-definitions/{melDefinitionId}/penalties/{id}Delete a penalty

The dispatch_param field accepts: ceiling, fuel_factor, etops_rule, max_fuel, mtow_penalty, mlw_penalty, mel_fuel.

Technical Logbook Entries​

Access the unified audit log for all maintenance and MEL events on aircraft.

MethodPathDescription
GET/technical-logbook-entriesList all entries
GET/technical-logbook-entries/{id}Get a single entry
POST/technical-logbook-entriesCreate an entry
PUT/technical-logbook-entries/{id}Update an entry
DELETE/technical-logbook-entries/{id}Delete an entry

Filterable fields: aircraft_id, entry_type

Sortable fields: created_at

The entry_type field accepts: mel_activated, mel_rectified, manual, maintenance_completed, aircraft_grounded, aircraft_returned, hours_adjusted.

Communications & Documents Endpoints​

Company NOTAMs​

Manage company-wide notices and announcements (NOTAMs). Supports soft deletion.

MethodPathDescription
GET/company-notamsList all company NOTAMs
GET/company-notams/{id}Get a single NOTAM
POST/company-notamsCreate a NOTAM
PUT/company-notams/{id}Update a NOTAM
DELETE/company-notams/{id}Soft-delete a NOTAM

Filterable fields: title, is_active

Sortable fields: title, created_at

Documents​

Manage the hierarchical document library (manuals, SOPs, company policies).

MethodPathDescription
GET/documentsList all documents
GET/documents/{id}Get a single document
POST/documentsCreate a document
PUT/documents/{id}Update a document
DELETE/documents/{id}Delete a document

Filterable fields: title, visibility, is_auto_generated

Sortable fields: title, sort_order, created_at

The visibility field accepts one of: public, staff, rank, license. When visibility is set to rank or license, provide the corresponding rank_id or license_id to control access.

Messages​

Manage in-app messages between staff, dispatchers, and pilots.

MethodPathDescription
GET/messagesList all messages
GET/messages/{id}Get a single message
POST/messagesCreate a message
PUT/messages/{id}Update a message
DELETE/messages/{id}Delete a message

Filterable fields: user_id, type, sender_role

Sortable fields: created_at, sent_at

The type field accepts: chat, acars. The sender_role field accepts: system, occ, dispatcher, crew_scheduling, airline_staff, user.

Discord Integrations​

Manage Discord server integrations for automated notifications.

MethodPathDescription
GET/discord-integrationsList all integrations
GET/discord-integrations/{id}Get a single integration
POST/discord-integrationsCreate an integration
PUT/discord-integrations/{id}Update an integration
DELETE/discord-integrations/{id}Delete an integration

Filterable fields: guild_id, is_active

Sortable fields: created_at

observação

The access_token and refresh_token fields are never included in API responses for security reasons.

Networks​

Manage flight simulation network definitions (VATSIM, IVAO, etc.).

MethodPathDescription
GET/networksList all networks
GET/networks/{id}Get a single network
POST/networksCreate a network
PUT/networks/{id}Update a network
DELETE/networks/{id}Delete a network

Filterable fields: name

Sortable fields: name, created_at

System & Config Endpoints​

System Settings​

Manage system configuration key-value pairs that control airline behavior (landing rate targets, booking costs, repositioning settings, etc.).

MethodPathDescription
GET/system-settingsList all settings
GET/system-settings/{id}Get a single setting
POST/system-settingsCreate a setting
PUT/system-settings/{id}Update a setting
DELETE/system-settings/{id}Delete a setting

Filterable fields: key, module

Sortable fields: key, module, created_at

The key field must be a valid system setting key enum value. The module field is auto-populated from the key when not provided.

Fleet Performance Configs​

Manage fleet-level performance configurations defining flap settings, autobrake, and reverse thrust parameters.

MethodPathDescription
GET/fleet-performance-configsList all configs
GET/fleet-performance-configs/{id}Get a single config
POST/fleet-performance-configsCreate a config
PUT/fleet-performance-configs/{id}Update a config
DELETE/fleet-performance-configs/{id}Delete a config

Filterable fields: fleet_id

Sortable fields: created_at

Restrictions​

Manage dispatch and booking restrictions. The rules relationship is automatically included in all responses.

MethodPathDescription
GET/restrictionsList all restrictions (with rules)
GET/restrictions/{id}Get a single restriction (with rules)
POST/restrictionsCreate a restriction
PUT/restrictions/{id}Update a restriction
DELETE/restrictions/{id}Delete a restriction

Filterable fields: name, type, active

Sortable fields: name, created_at

The type field accepts: dispatch, booking.

Restriction Rules (nested)​

Manage rules within a specific restriction.

MethodPathDescription
GET/restrictions/{id}/rulesList rules for a restriction
GET/restrictions/{id}/rules/{ruleId}Get a single rule
POST/restrictions/{id}/rulesCreate a rule
PUT/restrictions/{id}/rules/{ruleId}Update a rule
DELETE/restrictions/{id}/rules/{ruleId}Delete a rule

The rule_type field accepts: dispatch_param, require_license, require_rank. The dispatch_param field accepts: ceiling, fuel_factor, etops_rule, max_fuel, mtow_penalty, mlw_penalty, mel_fuel.

Spotter Photos​

Manage spotter photo submissions and their approval workflow.

MethodPathDescription
GET/spotter-photosList all photos
GET/spotter-photos/{id}Get a single photo
POST/spotter-photosCreate a photo
PUT/spotter-photos/{id}Update a photo
DELETE/spotter-photos/{id}Delete a photo

Filterable fields: user_id, spottable_type, spottable_id, status

Sortable fields: created_at

The status field accepts: pending, approved, rejected.

Countries (read-only)​

Reference data for countries. Only GET operations are available; POST, PUT, and DELETE return 405 Method Not Allowed.

MethodPathDescription
GET/countriesList all countries
GET/countries/{id}Get a single country

Filterable fields: name, a2

Sortable fields: name, a2

Airspaces (read-only)​

Reference data for airspaces. Only GET operations are available; POST, PUT, and DELETE return 405 Method Not Allowed.

MethodPathDescription
GET/airspacesList all airspaces
GET/airspaces/{id}Get a single airspace

Filterable fields: name, icao_code

Sortable fields: name

FDM & Speech/VOCC Endpoints​

FDM Profiles​

Manage Flight Data Monitoring profiles and their trigger rules. Each profile contains a set of triggers that define monitoring conditions applied during flights.

MethodPathDescription
GET/fdm-profilesList all FDM profiles
GET/fdm-profiles/{id}Get a single FDM profile
POST/fdm-profilesCreate an FDM profile
PUT/fdm-profiles/{id}Update an FDM profile
DELETE/fdm-profiles/{id}Delete an FDM profile

Filterable fields: name, active

Sortable fields: name, created_at

observação

FDM profile responses include the nested triggers array when fetched via index or show.

FDM Triggers (nested)​

MethodPathDescription
GET/fdm-profiles/{profileId}/triggersList triggers for a profile
GET/fdm-profiles/{profileId}/triggers/{id}Get a single trigger
POST/fdm-profiles/{profileId}/triggersCreate a trigger
PUT/fdm-profiles/{profileId}/triggers/{id}Update a trigger
DELETE/fdm-profiles/{profileId}/triggers/{id}Delete a trigger

Key fields:

FieldTypeDescription
templateenumFDM template type (e.g. landing_rate, overspeed_warning, stall_warning)
operatorenumComparison operator (>, <, =, !=, between, change_to, duration_of)
event_typeenumEvent severity (information, warning, violation)
valueJSONThreshold value(s) for the trigger
conditionsJSONAdditional conditions for trigger activation
pointsintegerPoints awarded or deducted when triggered

Speech Packs​

Manage speech announcement packs containing templates for in-flight audio announcements.

MethodPathDescription
GET/speech-packsList all speech packs
GET/speech-packs/{id}Get a single speech pack
POST/speech-packsCreate a speech pack
PUT/speech-packs/{id}Update a speech pack
DELETE/speech-packs/{id}Delete a speech pack

Filterable fields: name, active

Sortable fields: name, created_at

observação

Speech pack responses include the nested templates array when fetched via index or show.

Speech Templates (nested)​

MethodPathDescription
GET/speech-packs/{packId}/templatesList templates for a pack
GET/speech-packs/{packId}/templates/{id}Get a single template
POST/speech-packs/{packId}/templatesCreate a template
PUT/speech-packs/{packId}/templates/{id}Update a template
DELETE/speech-packs/{packId}/templates/{id}Delete a template

Key fields:

FieldTypeDescription
trigger_phaseenumFlight phase that activates the template (e.g. gate_departure, cruise, final_approach)
voice_roleenumVoice actor role (captain, flight_attendant)
typeenumTemplate type (text for TTS, audio for uploaded files)
templatestringText template with placeholders (e.g. {{callsign}})
apply_pa_effectbooleanWhether to apply PA system audio effect

Speech Fragments (nested, read-only)​

Speech fragments are cached TTS audio segments generated from templates. They are linked to a speech pack through the voice profiles used in its templates.

MethodPathDescription
GET/speech-packs/{packId}/fragmentsList fragments for a pack
GET/speech-packs/{packId}/fragments/{id}Get a single fragment

Key fields:

FieldTypeDescription
voice_profile_idintegerAssociated voice profile
textstringThe text that was synthesized
statusenumFragment status (pending, generating, ready, failed)
duration_msintegerAudio duration in milliseconds
s3_pathstringStorage path to the generated audio file

Voice Profiles​

Manage ElevenLabs voice profiles used for text-to-speech generation.

MethodPathDescription
GET/voice-profilesList all voice profiles
GET/voice-profiles/{id}Get a single voice profile
POST/voice-profilesCreate a voice profile
PUT/voice-profiles/{id}Update a voice profile
DELETE/voice-profiles/{id}Delete a voice profile

Filterable fields: name, speech_language_id, active

Sortable fields: name, created_at

Key fields:

FieldTypeDescription
elevenlabs_voice_idstringElevenLabs voice identifier
elevenlabs_model_idstringElevenLabs model (default: eleven_turbo_v2_5)
stabilitydecimalVoice stability (0.00--1.00)
similarity_boostdecimalVoice clarity/similarity (0.00--1.00)
styledecimalStyle exaggeration (0.00--1.00)
speeddecimalSpeech speed multiplier (0.50--2.00)
use_speaker_boostbooleanEnable speaker clarity boost

VOCC Triggers​

Manage vOCC (Virtual Operations Control Centre) trigger log entries that record when dispatch interactions are activated during flights.

MethodPathDescription
GET/vocc-triggersList all VOCC triggers
GET/vocc-triggers/{id}Get a single VOCC trigger
POST/vocc-triggersCreate a VOCC trigger
PUT/vocc-triggers/{id}Update a VOCC trigger
DELETE/vocc-triggers/{id}Delete a VOCC trigger

Filterable fields: trigger_type, booking_id

Sortable fields: trigger_type, triggered_at, created_at

Key fields:

FieldTypeDescription
booking_idintegerAssociated booking
trigger_typestringType of dispatch interaction triggered
triggered_atdatetimeWhen the trigger was activated
pilot_namestringName of the pilot at the time
callsignstringFlight callsign
departure_icaostringDeparture airport ICAO code
arrival_icaostringArrival airport ICAO code
interaction_logJSONDetailed log of the dispatch interaction

Asset / Image Fields​

All image and file fields in API responses (e.g., logo, badge, tailfin, picture, profile_picture, provider_logo, file_path) return fully-qualified public URLs pointing to the S3-backed storage. If a field has no file uploaded, it returns null.

{
"id": 1,
"name": "Airspace Airlines",
"logo": "https://s3.region.amazonaws.com/bucket/airlines/logo.png",
"badge": null
}
observação

Previously these fields returned raw storage paths (e.g., airlines/logo.png). As of March 2026, they return full URLs that can be used directly in <img> tags or downloaded by API consumers without any URL construction.

Error Responses​

StatusMeaning
401Missing or invalid API key
403The key's creator lacks the permission for this request
404Resource not found
405Method not allowed (e.g., POST on a read-only resource)
422Validation error (details in errors key)
429Rate limit exceeded (120 requests/minute)

Validation errors return a JSON body with field-level messages:

{
"message": "The airline id field is required.",
"errors": {
"airline_id": ["The airline id field is required."]
}
}