---
title: "Spec sheet for ONE build code"
method: GET
path: "/v2/specs/nano:{code}"
tags: ["specs"]
---

# Spec sheet for ONE build code

`GET /v2/specs/nano:{code}`

## Request

- Base URL: `https://api.cardog.app`
- URL: `https://api.cardog.app/v2/specs/nano:{code}`
- Auth: one of:
  - API key in header `x-api-key`
  - HTTP bearer

The same sheet for one build. The VIN's build answers `refs` and identity; the trims that share this build fill the rest, each value one every trim states. Where the build states a value, the build's value is served. Values are metric with their unit, as on the model-year grain. The build's model year is `refs.modelYear`, always set on this grain, and `links.modelYearSheet` is the path to its sheet. Several trims can share a VIN pattern — `markets` prices all of them, never a pick. `?trim=` is not accepted on this grain (400).

## Path parameters

- `code` string, required

## Response `200`

The build's sheet: sections, markets

- SpecSheetBuild
  - `ref` string, required: The requested build-code ref, e.g. "nano:2T3RWRFVMW"
  - `grain` 'nano', required
  - `year` integer, nullable, required
  - `make` string, nullable, required: Display name
  - `model` string, nullable, required: Display name
  - `refs` object, required: The identity card's refs, the same keys as `GET /v2/vin/{vin}`: the join keys. An attribute served here is not repeated in `sections`
    - `make` string, nullable, required: Make entity ref, e.g. "make:tesla"
    - `model` string, nullable, required: Model entity ref, e.g. "model:tesla/model-y"
    - `modelYear` string, required: The model-year ref, always set on a sheet, e.g. "model-year:toyota/rav4/2021"; `links.modelYearSheet` is its sheet
    - `bodyStyle` string, nullable, required
    - `fuelType` string, nullable, required
    - `driveType` string, nullable, required
    - `transmission` string, nullable, required
    - `electrificationLevel` string, nullable, required
    - `vehicleType` string, nullable, required
    - `gvwr` string, nullable
    - `country` string, nullable, required: Ref of the country the vehicle was built in, e.g. "country:canada"
    - `bodyCab` string, nullable
    - `bedType` string, nullable
    - `series` string, nullable
    - `fuelTypeSecondary` string, nullable
    - `trailerBodyType` string, nullable
    - `trailerType` string, nullable
  - `sections` object, required
  - `markets` object, required: Per-market pricing and colors; a market with nothing published is absent
    - `US` object
      - `currency` 'USD' | 'CAD', required
      - `pricing` object
        - `msrp` object[], required: Every published price, cheapest first
          - `trim` string, nullable, required: The trim the price is for; null when the publisher names none
          - `style` string, nullable, required: The publisher's style name, for display; two prices of one trim differ by it
          - `msrp` number, required: Whole units of the market's `currency`
          - `source` 'catalogue' | 'sticker' | 'oem', required
      - `colors` object: Every color offered in this market across the trims behind the sheet, sorted by name
        - `colorsExterior` object[]
          - `name` string, required
          - `rgb` integer[], nullable, required: 0–255 each; null when not published
          - `hex` string, nullable, required: "#rrggbb", from `rgb`; null when not published
        - `colorsInterior` object[]
          - `name` string, required
          - `rgb` integer[], nullable, required: 0–255 each; null when not published
          - `hex` string, nullable, required: "#rrggbb", from `rgb`; null when not published
    - `CA` object
      - `currency` 'USD' | 'CAD', required
      - `pricing` object
        - `msrp` object[], required: Every published price, cheapest first
          - `trim` string, nullable, required: The trim the price is for; null when the publisher names none
          - `style` string, nullable, required: The publisher's style name, for display; two prices of one trim differ by it
          - `msrp` number, required: Whole units of the market's `currency`
          - `source` 'catalogue' | 'sticker' | 'oem', required
      - `colors` object: Every color offered in this market across the trims behind the sheet, sorted by name
        - `colorsExterior` object[]
          - `name` string, required
          - `rgb` integer[], nullable, required: 0–255 each; null when not published
          - `hex` string, nullable, required: "#rrggbb", from `rgb`; null when not published
        - `colorsInterior` object[]
          - `name` string, required
          - `rgb` integer[], nullable, required: 0–255 each; null when not published
          - `hex` string, nullable, required: "#rrggbb", from `rgb`; null when not published
  - `links` object: Related resources, keyed by relation name, each a server-relative path. Example: {"recalls": "/v2/recalls/entity/model-year:toyota/rav4/2021"}

## Other responses

- `400`: Invalid request — grammar failure or unknown-but-well-formed refs, NAMED in `refs`/`details`, with nearest-ref `suggestions` where computable. Never a fuzzy fallback.
- `401`: No valid credential (API key, session, or internal token)
- `404`: Resource not found
- `429`: Per-minute rate limit exceeded
- `500`: Internal error

---

[API](https://skmtc.dev/cardog/apis/cardog-api-v2.md) · [All operations](https://skmtc.dev/cardog/apis/cardog-api-v2/llms.txt) · [OpenAPI document](https://skmtc.dev/cardog/apis/cardog-api-v2/revisions/b9d48193126f?raw)
