---
title: "GET /letters/{id}"
method: GET
path: "/letters/{id}"
---

# GET /letters/{id}

`GET /letters/{id}`

## Request

- Base URL: `https://printandmailcompany.com/api/v1`
- URL: `https://printandmailcompany.com/api/v1/letters/{id}`
- Auth: HTTP bearer

## Path parameters

- `id` string, required

## Response `200`

Letter. total includes VAT unless quote.reverseCharge is true (EU business customer with a confirmed VAT number); priceLabel says which

- Letter
  - `id` string
  - `reference` string: Shown to the customer and on receipts, e.g. PM-7K3QX9
  - `status` 'draft' | 'paid' | 'in_production' | 'printed' | 'posted' | 'cancelled' | 'returned'
  - `documentId` string
  - `recipient` Address
    - `name` string, required
    - `company` string
    - `line1` string, required: Street and number or PO box
    - `line2` string
    - `postalCode` string
    - `city` string, required
    - `region` string: State/province where used (e.g. US state code)
    - `country` string, required: ISO 3166-1 alpha-2
  - `recipientLines` string[]: The address as printed on the envelope
  - `options` object
    - `pages` integer
    - `duplex` boolean
    - `color` 'bw' | 'color'
    - `envelope` 'DL' | 'C5' | 'C4'
    - `registered` boolean
    - `paper` 'a4' | 'us_letter' | 'null', nullable: Paper the letter is printed on, fixed at payment; null while the paper choice is pending; absent on letters from before 8 October 2026 (A4)
    - `paperChoice` 'a4' | 'us_letter': The paper the customer chose for a US Letter document to a destination outside the US, Canada and US territories
  - `paperSize` 'a4' | 'us_letter' | 'null', nullable: Paper the letter is printed on (a draft's as decided from its document now, a paid letter's as fixed at payment); null while the customer still has to choose (paperChoiceRequired)
  - `paperChoiceRequired` boolean: A US Letter document to a destination outside the US, Canada and US territories, and no choice yet: ask "shrink to A4 (recommended) or keep US Letter?" and send paperSize with /letters/{id}/send. Sending without it answers 409 PAPER_CHOICE_REQUIRED.
  - `destinationPaperSize` 'a4' | 'us_letter': Standard paper of the destination: us_letter for US, CA, PR, VI, GU, AS, MP, else a4
  - `currency` 'EUR' | 'USD' | 'GBP' | 'CHF'
  - `total` integer: Total in minor units of currency
  - `totalFormatted` string
  - `quote` object: Price breakdown in EUR cents (lines, netEurCents, vatEurCents, grossEurCents, vatRate, reverseCharge), postal size class and zone
  - `priceLabel` string: "incl. 17% VAT", or "excl. VAT — reverse charge"
  - `trackingNumber` string, nullable: Registered letters, once posted
  - `createdVia` 'web' | 'mcp' | 'api'
  - `createdAt` string, date-time
  - `paidAt` string, date-time, nullable
  - `postedAt` string, date-time, nullable
  - `cancelledAt` string, date-time, nullable
  - `url` string, uri: The letter's page in the customer's account, in the account's language: the print-ready PDF (page previews, open, download) until the retention period ends, the status and the price. Give it to the account holder to check the letter before sending; it needs their sign-in.

---

[API](https://skmtc.dev/printandmailcompany/apis/print-and-mail-company-api.md) · [All operations](https://skmtc.dev/printandmailcompany/apis/print-and-mail-company-api/llms.txt) · [OpenAPI document](https://skmtc.dev/printandmailcompany/apis/print-and-mail-company-api/revisions/0d0b97806499?raw)
