---
title: "Retrieve a preorder"
method: GET
path: "/preorders/{id}"
tags: ["Preorders"]
---

# Retrieve a preorder

`GET /preorders/{id}`

Returns a single caller-owned, paid preorder by its id.

## Path parameters

- `id` string, required

## Query parameters

- `expand[]` string[] — Repeatable. Expand `buyer` to include the buyer (with PII).

## Response `200`

The requested preorder.

- object
  - `data` Preorder, required
    - `id` string, required
    - `created_at` integer, required — Epoch ms the reservation fee was paid.
    - `canceled_at` integer, nullable, required
    - `status` 'pending_invitation' | 'awaiting_checkout' | 'idle' | 'converted' | 'canceled', required
    - `catalog_vehicle` CatalogVehicle, required
      - `name` string, required
      - `img_url` string, nullable, required
      - `base_price` number, required — Base price USD of the build, before specs and PG&A.
      - `specs` Spec[], required — The build-defining items configured onto this vehicle.
        - `name` string, required
        - `category` string, nullable, required
        - `sku` string, nullable, required
        - `price` number, required — Price USD as sold. 0 for items included in the base price.
        - `description` string, nullable, required
        - `img_url` string, nullable, required
    - `deposit` number, required — Reservation fee paid, USD.
    - `converted_order_id` string, nullable, required
    - `checkout_cart_id` string, nullable, required
    - `converted_cart_id` string, nullable, required
    - `assigned_account_id` string, nullable, required
    - `buyer` PreorderBuyer — Buyer with PII. Present only when requested via `?expand[]=buyer`.
      - `id` string, required — Buyer id, the same handle on every resource.
      - `full_name` string, required
      - `email` string, nullable, required — Buyer email; null when the buyer record is unavailable.
      - `phone` string, nullable, required — Buyer phone; null when the buyer record is unavailable.
      - `address` BuyerAddress, nullable, required — Buyer address; null when none is on file.
        - `line1` string, required
        - `line2` string, nullable, required
        - `city` string, required
        - `state` string, required — Two-letter state code.
        - `zip` string, required
        - `country` string, nullable, required — ISO 3166-1 alpha-2; null implies US.
    - `pga` Pga[], required — Parts, garments, and accessories (PG&A) sold with the build.
      - `type` 'part' | 'garment' | 'accessory', required
      - `name` string, required
      - `category` string, nullable, required
      - `sku` string, nullable, required
      - `price` number, required — Unit price USD as sold. 0 for included items.
      - `quantity` integer, required
      - `description` string, nullable, required
      - `img_url` string, nullable, required
    - `metadata` object, required — Free-form metadata carried on the preorder, including whatever was attached at cart creation. Published exactly as written, so objects and arrays round-trip with their structure intact. Always present, empty when unset.

## Other responses

- `400` — The request was malformed or failed validation.
- `401` — Authentication is missing or invalid.
- `403` — The token lacks a required scope.
- `404` — No preorder matches that id.
- `429` — The rate limit has been exceeded.
- `500` — An unexpected error occurred.

---

[API](https://skmtc.dev/ekho/apis/ekho-api.md) · [All operations](https://skmtc.dev/ekho/apis/ekho-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/ekho/ekho-api/revisions/2056332cf6b9/schema)
