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.Documentation Index
Fetch the complete documentation index at: https://teardowns.aero/docs/llms.txt
Use this file to discover all available pages before exploring further.
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
Bearer tdao_live_…Your organization’s UUID.
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.One of
aircraft, engine, or apu. Sending parts or
landing_gear returns 422.Asking price in USD. UI label: “Price ($) *”.
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
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 *”.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
Aircraft manufacturer, e.g.
Boeing. UI label: “Manufacturer”.Year the aircraft was built. UI label: “Year”.
Aircraft tail number. UI label: “Tail Number”.
Last operator / traceability history. UI label: “Traceability”.
Free-text description of the engines on the aircraft. UI label:
“Engines”.
Free-text description of the APU on the aircraft. UI label: “APU”.
Total airframe hours. UI label: “Total Hours”.
Total airframe cycles. UI label: “Total Cycles”.
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
Human-readable name from the engine-models vocabulary, e.g.
CFM56-5B. Case-insensitive. UI label: “Engine Model *”.Engine serial number. UI label: “ESN *”.
Cycles remaining (in hours). UI label: “Cycles Remaining (hours) *”.
ISO date the engine is available. UI label: “Available Date *”.
UI form defaults to today; the API has no default.
One of
Serviceable, As Removed, Overhauled, Repaired.
UI label: “Condition *”.UI label: “Quantity *”.
Non-empty array containing any of
sale, lease, exchange.
Empty array is rejected. UI label: “Sale / Lease / Exchange”.Optional for engine
Engine manufacturer. UI label: “Manufacturer”. The UI auto-fills
this from the selected engine model; the API does not.
Free-text description. UI label: “Description”.
listing_type = "apu"
Mirrors the UI wizard’s APU Details step exactly.
Required for apu
Human-readable name from the apu-models vocabulary, e.g.
APS3200. Case-insensitive. UI label: “APU Model *”.APU manufacturer, e.g.
Honeywell. UI label: “Manufacturer *”.
The UI auto-fills this from the selected APU model; the API does
not.APU serial number. UI label: “SN *”.
ISO date the APU is available. UI label: “Available Date *”.
One of
Serviceable, As Removed, Overhauled, Repaired.
UI label: “Condition *”.UI label: “Quantity *”.
Optional for apu
Array containing any of
sale, lease, exchange. UI label:
“Sale / Lease / Exchange”.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.

