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.
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 quotecontract.confirmedYou confirmed the booking, service fee pendingcontract.service_fee_paidService fee paid, the client now pays the flight price to youcontract.paidFlight price received (confirmed by you)contract.completedFlight completedcontract.cancelledBooking cancelledcontract.refundedBooking refundedrfq.createdNew charter request in the marketplace matching your fleetcharter.bid_requestedWe asked you directly for a quotecharter.bid_submittedYour quote was receivedcharter.bid_wonThe client chose your quotecharter.bid_outbidThe client chose another quotecharter.no_quotes_receivedRequest closed without quotesleg.approvedLeg approved after reviewleg.rejectedLeg rejected after reviewleg.bookedLeg booked (flight price paid)test.pingTest event (“Test” button)
Market data of other providers belongs to the paid broker API. Broker API