---
title: "Review the PDF, current total and mailing requirements before approval."
method: GET
path: "/v1/drafts/{id}/preview"
---

# Review the PDF, current total and mailing requirements before approval.

`GET /v1/drafts/{id}/preview`

## Request

- Base URL: `https://paperagent.dev`
- URL: `https://paperagent.dev/v1/drafts/{id}/preview`
- Auth: one of:
  - OAuth 2 (authorization code, authorization URL `https://paperagent.dev/oauth/authorize`, token URL `https://paperagent.dev/oauth/token`, scopes: `letters:read`)
  - API key in header `X-Api-Key`
  - HTTP bearer

## Path parameters

- `id` string, required

## Response `200`

Success

- object
  - `draft_id` string, required
  - `preview_url` string, required: A time-limited link to the exact PDF that will be printed. Give it to the user; it dies with the draft.
  - `page_count` integer, required
  - `tier` 'standard' | 'proof_of_mailing' | 'certified' | 'certified_err' | 'registered', required: The product this draft is priced as, as passed to create_draft.
  - `tier_title` string, required: What the price card in force calls that product, such as Standard. Use this name when you tell the user what they are buying.
  - `included_pages` integer, required: Printed pages the headline price covers. This draft is priced at that total up to this many pages.
  - `quote` object, required: A priced letter. State total.display to the user before sending, and pass total.amount_cents as confirm_total_cents.
    - `quote_id` string, required: Identifier for this quote, for support and receipts.
    - `expires_at` string, required: ISO 8601 instant after which this total is re-computed from the live price card. Call preview_draft for a fresh quote before sending if it has passed.
    - `version` string, required: The published price card this total came from.
    - `subtotal` object, required: What the letter costs, before sales tax.
      - `amount_cents` integer, required: The amount in whole US cents.
      - `currency` 'USD', required
      - `display` string, required: The amount formatted for a person, with a currency symbol.
    - `tax` object, required
      - `collected` object, required: New York sales tax on this letter. We mail from New York, so a few cents apply wherever the letter goes, and more when it is going to New York.
        - `amount_cents` integer, required: The amount in whole US cents.
        - `currency` 'USD', required
        - `display` string, required: The amount formatted for a person, with a currency symbol.
      - `destination_state` string, required
    - `total` object, required: Subtotal plus sales tax. This is the number send_letter requires in confirm_total_cents.
      - `amount_cents` integer, required: The amount in whole US cents.
      - `currency` 'USD', required
      - `display` string, required: The amount formatted for a person, with a currency symbol.
  - `expires_at` string, required
  - `requirements` string[], required: What the user is agreeing to: how USPS requires the envelope to be printed, and what this particular letter is. State these to the user before calling send_letter.

## Other responses

- `default`: A stable error code and actionable message. 401: authenticate; 403: permission or policy; 404: unavailable object; 409: conflict; 422: domain refusal; 429: quota; 5xx: retry or contact support.

---

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