curl "$base_url/public/v1/teardowns/$teardown_id" \
-H "Authorization: Bearer $api_key" \
-H "X-Organization-Id: $org_id"
import requests
resp = requests.get(
f"{base_url}/public/v1/teardowns/{teardown_id}",
headers={"Authorization": f"Bearer {api_key}", "X-Organization-Id": org_id},
)
if resp.status_code == 404:
print("Teardown not found (or not yours)")
else:
resp.raise_for_status()
teardown = resp.json()
{
"teardown_id": "3c707051-021d-4d04-a8e7-4eb254e80858",
"org_id": "72f95f4e-65bb-41b3-8ef4-226c5a59cbc1",
"created_by": "afdb4059-345b-4adb-b8f1-4035668f22d7",
"asset_type": "aircraft",
"aircraft_type": {
"id": "c0000000-0000-0000-0000-000000000002",
"name": "A320-200",
"manufacturer": "Airbus",
"category": "Narrowbody",
"is_active": true
},
"tail_number": "VT-ABC",
"msn": "12345",
"traceability": "Delta",
"start_date": "2026-08-01",
"end_date": null,
"status": "active_starting",
"teardown_status_label": "Starting",
"incident_related": "No",
"description": "Posted from ERP",
"location": "Tucson, AZ",
"country": "US",
"documents": [
"https://.../teardowns-media/teardowns/3c707.../documents/ab12_specs.pdf"
],
"images": null,
"audience": ["Airline", "MRO"],
"audience_set_at": "2026-05-26T20:15:00Z",
"published_at": "2026-05-26T20:06:50.677262Z",
"expires_at": "2026-08-24T20:06:50.677262Z",
"created_at": "2026-05-26T20:06:48.825931Z",
"updated_at": "2026-05-26T20:15:00Z"
}
{
"detail": "Teardown not found"
}
Teardowns
Get one teardown
Fetch a single teardown by id.
GET
/
public
/
v1
/
teardowns
/
{teardown_id}
curl "$base_url/public/v1/teardowns/$teardown_id" \
-H "Authorization: Bearer $api_key" \
-H "X-Organization-Id: $org_id"
import requests
resp = requests.get(
f"{base_url}/public/v1/teardowns/{teardown_id}",
headers={"Authorization": f"Bearer {api_key}", "X-Organization-Id": org_id},
)
if resp.status_code == 404:
print("Teardown not found (or not yours)")
else:
resp.raise_for_status()
teardown = resp.json()
{
"teardown_id": "3c707051-021d-4d04-a8e7-4eb254e80858",
"org_id": "72f95f4e-65bb-41b3-8ef4-226c5a59cbc1",
"created_by": "afdb4059-345b-4adb-b8f1-4035668f22d7",
"asset_type": "aircraft",
"aircraft_type": {
"id": "c0000000-0000-0000-0000-000000000002",
"name": "A320-200",
"manufacturer": "Airbus",
"category": "Narrowbody",
"is_active": true
},
"tail_number": "VT-ABC",
"msn": "12345",
"traceability": "Delta",
"start_date": "2026-08-01",
"end_date": null,
"status": "active_starting",
"teardown_status_label": "Starting",
"incident_related": "No",
"description": "Posted from ERP",
"location": "Tucson, AZ",
"country": "US",
"documents": [
"https://.../teardowns-media/teardowns/3c707.../documents/ab12_specs.pdf"
],
"images": null,
"audience": ["Airline", "MRO"],
"audience_set_at": "2026-05-26T20:15:00Z",
"published_at": "2026-05-26T20:06:50.677262Z",
"expires_at": "2026-08-24T20:06:50.677262Z",
"created_at": "2026-05-26T20:06:48.825931Z",
"updated_at": "2026-05-26T20:15:00Z"
}
{
"detail": "Teardown not found"
}
Returns the full teardown record for one of your org’s teardowns.
Cross-org access returns 404 not_found we never reveal whether
the id exists in another org.
Headers
string
required
Bearer tdao_live_…string
required
Your organization’s UUID.
Path parameters
string (UUID)
required
The teardown’s id (from the
teardown_id field on create / list
responses).Response
200 OK. The same shape returned by the create endpoint partner
field names (teardown_id, tail_number, start_date, country,
end_date).
string (UUID)
string (UUID)
string
aircraft or engine for any teardown created through the public
API. Legacy UI-created rows may still surface apu or landing_gear.object
Whichever vocabulary row matches the asset_type, populated with
{ id, name, manufacturer, category, is_active }. The remaining
vocabulary fields are null. apu_model and landing_gear_type
appear only on legacy teardowns the public API can’t create them.string | null
string | null
string | null
string (date) | null
string (date) | null
string
Internal lifecycle value:
active_starting | active_in_process | active_completed | suspended | archived.string | null
Human label:
Starting | In Process | Completed.string | null
Yes or No.string | null
location_city may be set on legacy rows but cannot be written via
the public API.string | null
array of URLs | null
Attached document URLs. Subject to audience filtering when read by
a different org (this endpoint always returns the full list since
it’s org-scoped to the owner).
array of URLs | null
Attached image URLs.
array | null
null = “anyone with platform access”. Otherwise a non-empty list
of company types.string (datetime) | null
When the audience field was last changed.
string (datetime) | null
string (datetime) | null
Auto-archive deadline. Resets to now + 90 days on certain transitions.
string (datetime)
curl "$base_url/public/v1/teardowns/$teardown_id" \
-H "Authorization: Bearer $api_key" \
-H "X-Organization-Id: $org_id"
import requests
resp = requests.get(
f"{base_url}/public/v1/teardowns/{teardown_id}",
headers={"Authorization": f"Bearer {api_key}", "X-Organization-Id": org_id},
)
if resp.status_code == 404:
print("Teardown not found (or not yours)")
else:
resp.raise_for_status()
teardown = resp.json()
{
"teardown_id": "3c707051-021d-4d04-a8e7-4eb254e80858",
"org_id": "72f95f4e-65bb-41b3-8ef4-226c5a59cbc1",
"created_by": "afdb4059-345b-4adb-b8f1-4035668f22d7",
"asset_type": "aircraft",
"aircraft_type": {
"id": "c0000000-0000-0000-0000-000000000002",
"name": "A320-200",
"manufacturer": "Airbus",
"category": "Narrowbody",
"is_active": true
},
"tail_number": "VT-ABC",
"msn": "12345",
"traceability": "Delta",
"start_date": "2026-08-01",
"end_date": null,
"status": "active_starting",
"teardown_status_label": "Starting",
"incident_related": "No",
"description": "Posted from ERP",
"location": "Tucson, AZ",
"country": "US",
"documents": [
"https://.../teardowns-media/teardowns/3c707.../documents/ab12_specs.pdf"
],
"images": null,
"audience": ["Airline", "MRO"],
"audience_set_at": "2026-05-26T20:15:00Z",
"published_at": "2026-05-26T20:06:50.677262Z",
"expires_at": "2026-08-24T20:06:50.677262Z",
"created_at": "2026-05-26T20:06:48.825931Z",
"updated_at": "2026-05-26T20:15:00Z"
}
{
"detail": "Teardown not found"
}
Why 404 for foreign-org teardowns
Returning403 would tell a probing caller that the id exists in some
other org that’s a side channel for enumerating other partners’
teardowns. 404 collapses “doesn’t exist” and “not yours” into one
response, so neither case leaks information.
See also
- Update a teardown to PATCH any field on the row.
- Transition a teardown to change its lifecycle state.
- Audience for the
audiencefield’s behaviour.

