Teardowns
Create a teardown
POST a new teardown via the public API.
POST
Create a new teardown owned by your organization. The teardown is published immediately into the appropriate active state — there’s no draft path through the public API.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
asset_type of aircraft or engine only.
apu and landing_gear teardowns are UI-only 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 API key.Your organization’s UUID. Must match the org the API key was minted in.
application/jsonBody
The request body shape depends on theasset_type you pick. Five
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 asset_type)
These five are required on every request, no matter which type you are creating.One of
aircraft or engine. Sending apu or landing_gear
returns 422.One of
Starting, In process, or Completed. Case-sensitive.
The teardown is published into the matching active_* state. See
status lifecycle. UI label: “Status *”.ISO date. Stored as
teardown_start_date — the column the detail
page reads to render “Start Date”. UI label: “Start Date *”.Free-text teardown location, e.g.
Tucson, AZ. UI label:
“Teardown Location *”.ISO country code, e.g.
US. UI label: “Country *”.asset_type = "aircraft"
Mirrors the UI wizard’s aircraft teardown form 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 *” (on the type-selection step).The last operator’s name, e.g.
Delta. UI label: “Aircraft
Traceability *” on the wizard, “Last Operator” in the marketplace
browse table. Shown only on the aircraft form — the engine form
hides this field, and the API mirrors that.Yes or No. UI label: “Incident Related *”. Aircraft-only —
engines don’t carry an incident-related concept, so the API and the
UI both omit it from the engine flow.Optional for aircraft
Aircraft tail / registration number, e.g.
VT-ABC. UI label:
“Tail Number”. Maps to DB column teardowns.registration.Manufacturer serial number. UI label: “MSN”.
Optional teardown end date. Not on the create wizard step but
surfaced on the edit page and accepted on create for partners that
already know it.
Free-text description shown in the Description card on the detail
page. UI label: “Description”.
asset_type = "engine"
Mirrors the UI wizard’s engine teardown form exactly. Notably, the
engine form does not ask for traceability or incident_related,
and the API follows the same rule.
Required for engine
Human-readable name from the engine-models vocabulary, e.g.
CFM56-5B. Case-insensitive. Unknown values return
400 unknown_vocabulary with the full allowed list in the body.
UI label: “Engine *” (on the type-selection step).Optional for engine
Engine serial number. UI label: “ESN”.
Optional teardown end date. Not on the create wizard step but
surfaced on the edit page and accepted on create for partners that
already know it.
Free-text description shown in the Description card on the detail
page. UI label: “Description”.
audience is intentionally NOT on the create body — it’s a
document-visibility decision. Set it on the upload call that attaches
your first document, or via PATCH later. See
audience.Response
201 Created. The body is the full teardown in the same shape every
GET returns. Save the teardown_id — you’ll need it for upload,
PATCH, or transition calls.
The new teardown’s identifier.
Same as the
X-Organization-Id you sent.Echoed back.
Full vocabulary row for whichever asset_type you chose:
{ id, name, manufacturer, category, is_active, created_at }. The
engine_model field is populated symmetrically when relevant.
Legacy teardowns may surface apu_model / landing_gear_type on
reads, but neither is creatable through the public API.Internal lifecycle name:
active_starting / active_in_process /
active_completed.Human label:
Starting / In Process / Completed.Set to “now” at create time.
Set to 90 days from publish. Auto-archives when reached.
Always
null immediately after create — populated by upload calls.Always
null immediately after create.Always
null immediately after create.Common gotchas
statusis case-sensitive.startingreturns 422.- Only aircraft and engine are accepted. Sending
asset_type=apuorasset_type=landing_gearreturns 422. Those flows aren’t shipped in the UI yet. - One vocabulary field per asset_type. Sending
engine_modelwhileasset_type=aircraftis silently ignored — only the matching field is read. audiencehere returns 422. Set it on the upload call or via PATCH.teardown_status_labelis RESPONSE only. The server computes it from yourstatus; sending it on the request body returns 422 (strict mode).- The teardown auto-archives in 90 days. Run a transition or PATCH
a fresh
expires_atto extend.
See also
- Home for the smallest end-to-end flow.
- Status lifecycle for the state machine.
- Vocabularies for the lookup behaviour.
- Attach documents — the natural next call after create.

