Sales / Lease / Exchange
Create a sales / lease / exchange
POST a new sales / lease / exchange via the public API.
POST
Create a new sales / lease / exchange owned by your organization.
These represent whole aircraft, engines, or APUs your team is
offering for sale, lease, or exchange.
Mirrors the UI wizard’s Aircraft Details step exactly.
Mirrors the UI wizard’s Engine Details step exactly.
Mirrors the UI wizard’s APU Details step exactly.
The public API supports
listing_type of aircraft, engine, or
apu only. parts and landing_gear are intentionally excluded
from the public surface today — existing rows of those types stay
readable on GET, but cannot be created via this endpoint and sending
either returns 422.Headers
string
required
Bearer tdao_live_…string
required
Your organization’s UUID.
string
required
application/jsonBody
The request body shape depends on thelisting_type you pick. Three
fields are required on every request regardless of type, and each
type then has its own set of required and optional fields on top.
Sending a request that’s missing a required field returns 422 with
a single error message naming every missing field, so you can fix
all of them in one round trip.
Universal required fields (every listing_type)
These three are required on every request, no matter which type you are creating.string
required
One of
aircraft, engine, or apu. Sending parts or
landing_gear returns 422.number
required
Asking price in USD. UI label: “Price ($) *”.
string
required
ISO country code, e.g.
IN. UI label: “Country *” / “Location *”.listing_type = "aircraft"
Mirrors the UI wizard’s Aircraft Details step exactly.
Required for aircraft
string
required
Human-readable name from the aircraft-types vocabulary, e.g.
A320-200. Case-insensitive. Unknown values return
400 unknown_vocabulary with the full allowed list in the body.
UI label: “Aircraft Model *”.integer
required
How many of this aircraft are on offer. UI label: “Quantity *”.
UI form defaults to
1 but the API has no default — send the
value explicitly.Yes or No. UI label: “Incident Related *”.Optional for aircraft
string
Aircraft manufacturer, e.g.
Boeing. UI label: “Manufacturer”.integer
Year the aircraft was built. UI label: “Year”.
string
Aircraft tail number. UI label: “Tail Number”.
string
Last operator / traceability history. UI label: “Traceability”.
string
Free-text description of the engines on the aircraft. UI label:
“Engines”.
string
Free-text description of the APU on the aircraft. UI label: “APU”.
number
Total airframe hours. UI label: “Total Hours”.
integer
Total airframe cycles. UI label: “Total Cycles”.
string
Free-text description shown on the listing detail page. UI label:
“Description”.
listing_type = "engine"
Mirrors the UI wizard’s Engine Details step exactly.
Required for engine
string
required
Human-readable name from the engine-models vocabulary, e.g.
CFM56-5B. Case-insensitive. UI label: “Engine Model *”.string
required
Engine serial number. UI label: “ESN *”.
number
required
Cycles remaining (in hours). UI label: “Cycles Remaining (hours) *”.
string (date)
required
ISO date the engine is available. UI label: “Available Date *”.
UI form defaults to today; the API has no default.
string
required
One of
Serviceable, As Removed, Overhauled, Repaired.
UI label: “Condition *”.integer
required
UI label: “Quantity *”.
array of string
required
Non-empty array containing any of
sale, lease, exchange.
Empty array is rejected. UI label: “Sale / Lease / Exchange”.Optional for engine
string
Engine manufacturer. UI label: “Manufacturer”. The UI auto-fills
this from the selected engine model; the API does not.
string
Free-text description. UI label: “Description”.
listing_type = "apu"
Mirrors the UI wizard’s APU Details step exactly.
Required for apu
string
required
Human-readable name from the apu-models vocabulary, e.g.
APS3200. Case-insensitive. UI label: “APU Model *”.string
required
APU manufacturer, e.g.
Honeywell. UI label: “Manufacturer *”.
The UI auto-fills this from the selected APU model; the API does
not.string
required
APU serial number. UI label: “SN *”.
string (date)
required
ISO date the APU is available. UI label: “Available Date *”.
string
required
One of
Serviceable, As Removed, Overhauled, Repaired.
UI label: “Condition *”.integer
required
UI label: “Quantity *”.
Optional for apu
array of string
Array containing any of
sale, lease, exchange. UI label:
“Sale / Lease / Exchange”.string
Free-text description. UI label: “Description”.
Response
201 Created. The full listing in the shape every GET returns.
Notes
- Listings go directly to
activestatus — there’s no draft path. audienceis not set at create time. Attach it on the same call that uploads the first document (see the upload endpoints) or via PATCH later.- Use the upload endpoints to attach documents and images.

