Zum Hauptinhalt springen

API for operators

Connect your software to PrivJet Ops, free of charge for your own data.

Authentication

Create a key in the portal under “API & webhooks” (starts with pj_op_) and send it as a bearer token. Keys can be revoked at any time; each key has a limit against abuse.

OpenAPI 3.1 (JSON)

Endpoints

Empty legs

  • GET/api/v1/empty-legsList your empty legs
  • POST/api/v1/empty-legsCreate up to 50 empty legs
  • POST/api/v1/operator/legs/importRead empty legs from text, a PDF or an image into a draft
  • GET/api/v1/operator/legs/draftsOpen leg drafts (portal, API, email, WhatsApp, Telegram)
  • GET/api/v1/operator/legs/drafts/{id}One leg draft
  • POST/api/v1/operator/legs/drafts/{id}Confirm a draft and create the selected legs
  • DELETE/api/v1/operator/legs/drafts/{id}Discard a draft
  • GET/api/v1/operator/statsStatistics of your empty legs

Fleet

  • GET/api/v1/operator/aircraftList your aircraft
  • POST/api/v1/operator/aircraftAdd an aircraft
  • GET/api/v1/operator/aircraft/{id}Get one aircraft
  • PATCH/api/v1/operator/aircraft/{id}Update an aircraft
  • DELETE/api/v1/operator/aircraft/{id}Deactivate an aircraft

Availability

  • GET/api/v1/operator/aircraft/{id}/availabilityCalendar entries of an aircraft
  • POST/api/v1/operator/aircraft/{id}/availabilityAdd a calendar entry (optionally publish a repositioning flight as an empty leg)
  • PATCH/api/v1/operator/availability/{id}Update a calendar entry
  • DELETE/api/v1/operator/availability/{id}Delete a calendar entry (an unbooked empty leg published from it goes offline)
  • POST/api/v1/operator/availability/{id}/publishPublish an existing future repositioning flight as an empty leg

Requests

  • GET/api/v1/operator/requestsOpen charter requests matching your fleet and base (anonymous)
  • POST/api/v1/operator/requests/{id}/bidOpen the quote form for a request

Quotes

  • POST/api/v1/operator/requests/{id}/quotesSubmit or update a quick quote on a request
  • DELETE/api/v1/operator/requests/{id}/quotesWithdraw your quick quote
  • POST/api/v1/operator/quoteCalculate a quote from your rates
  • POST/api/v1/operator/quote/pdfQuotation PDF for your client, under your company name: only the client’s flights and the price (no registration, positioning, margin or estimates). Admin/sales.
  • GET/api/v1/operator/quote/settingsYour quote settings
  • PUT/api/v1/operator/quote/settingsSave quote settings (admin/sales)

Integrations

  • GET/api/v1/operator/legs/exportYour empty legs as CSV (same columns as the CSV import, plus status and link; max 1,000)
  • GET/api/v1/operator/availability/exportFleet calendar as CSV (times in UTC)
  • GET/api/v1/operator/icalSecret iCal subscription link (fleet calendar, your empty legs, confirmed bookings, no customer data). A new link is created in the portal.
  • GET/api/v1/operator/aircraft/{id}/ical-importStatus of the calendar import of an aircraft
  • PUT/api/v1/operator/aircraft/{id}/ical-importConnect an iCal calendar (Leon, FL3XX, Google …) to an aircraft and sync it now. Busy times are imported every 30 minutes
  • POST/api/v1/operator/aircraft/{id}/ical-importSync the connected calendar now
  • DELETE/api/v1/operator/aircraft/{id}/ical-importDisconnect the calendar (future imported entries are removed)

Bookings

  • GET/api/v1/operator/contractsYour bookings and quotes
  • POST/api/v1/operator/contracts/{id}/cancelCancel a confirmed booking
  • POST/api/v1/operator/contracts/{id}/crew-confirmConfirm the crew for a booking

Example: create an empty leg

curl -X POST https://www.privjet.net/api/v1/empty-legs \
  -H "Authorization: Bearer pj_op_…" \
  -H "Content-Type: application/json" \
  -d '{"emptyLegs":[{"departureAirport":{"icao":"LSGG"},"arrivalAirport":{"icao":"LFMN"},
       "departureDate":"2026-11-03","departureTime":"14:30",
       "aircraft":{"model":"Citation XLS+","manufacturer":"Cessna"},
       "maxPassengers":8,"price":6400,"currency":"EUR"}]}'

Webhooks report events to your systems (signed with HMAC-SHA256, no client personal data); set them up in the portal under “API & webhooks”. These events exist:

  • contract.signedA client signed a pre-contract for your leg or quote
  • contract.confirmedYou confirmed the booking, service fee pending
  • contract.service_fee_paidService fee paid, the client now pays the flight price to you
  • contract.paidFlight price received (confirmed by you)
  • contract.completedFlight completed
  • contract.cancelledBooking cancelled
  • contract.refundedBooking refunded
  • rfq.createdNew charter request in the marketplace matching your fleet
  • charter.bid_requestedWe asked you directly for a quote
  • charter.bid_submittedYour quote was received
  • charter.bid_wonThe client chose your quote
  • charter.bid_outbidThe client chose another quote
  • charter.no_quotes_receivedRequest closed without quotes
  • leg.approvedLeg approved after review
  • leg.rejectedLeg rejected after review
  • leg.bookedLeg booked (flight price paid)
  • test.pingTest event (“Test” button)

Market data of other providers belongs to the paid broker API. Broker API