---
title: "Quote prints"
method: POST
path: "/v1/quotes"
tags: ["prints"]
---

# Quote prints

`POST /v1/quotes`

## Request

- Base URL: `https://api.noerrands.com/c/prints`
- URL: `https://api.noerrands.com/c/prints/v1/quotes`
- Auth: HTTP bearer

Price a print order -- photos (image_id or image_url), products (print sizes, canvas, "tshirt" with shirt_size and shirt_color, or "mug-11oz"), copies, a US delivery address and a shipping speed -- and get a quote_id, the exact total with a line-by-line breakdown, and any resolution or cropping warnings; free and read-only, nothing is ordered.

## Request body

- object
  - `items` object[], required: One entry per photo and product (and, for a T-shirt, per size and colour), 1-20 entries, up to 200 copies in all.
    - `product` '4x6' | '5x7' | '8x10' | 'canvas-12x16' | 'tshirt' | 'mug-11oz', required: What to print: "4x6", "5x7" or "8x10" photo prints, "canvas-12x16" (a stretched canvas), "tshirt" (a custom T-shirt with the photo on the front; needs shirt_size and shirt_color) or "mug-11oz" (an 11oz white mug with the photo wrapped around it). See list_print_products.
    - `copies` integer: Copies of this photo on this product (prints, shirts or mugs), 1-100.
    - `image_id` string: A photo uploaded with upload_print_image. Exactly one of image_id or image_url.
    - `image_url` string, uri: Public https URL of a JPEG or PNG. The lab downloads it when the order is placed. Exactly one of image_id or image_url.
    - `shirt_size` string: T-shirt only, and required for it: XS, S, M, L, XL, 2XL, 3XL (unisex fit). Not case-sensitive.
    - `shirt_color` string: T-shirt only, and required for it: White, Black. Not case-sensitive.
  - `shipping_method` 'budget' | 'standard' | 'express': budget, standard or express. Each has a flat price; see list_print_products.
  - `recipient` object, required: Where the prints are posted. US addresses only in v0.
    - `name` string, required: Name on the parcel, 1-60 characters.
    - `line1` string, required: Street address.
    - `line2` string: Apartment, suite or unit.
    - `city` string, required
    - `state` string, required: Two-letter US state code.
    - `zip` string, required: ZIP or ZIP+4.
    - `email` string: Optional. Only for the carrier's delivery notices, and only if the human wants them.
    - `phone` string: Optional. Some carriers print it on the label for delivery problems.
    - `country` 'US': US only in v0.

## Response `200`

Success.

- object
  - `quote_id` string, required: Opaque id, "pq_...". order_prints takes it.
  - `expires_at` string, date-time, required
  - `total_cents` integer, required: Exactly what order_prints charges.
  - `breakdown` object[], required
    - `item` string, required
    - `cents` integer, required
  - `shipping_method` 'budget' | 'standard' | 'express', required
  - `typical_delivery` string, required
  - `items` object[], required
    - `product` '4x6' | '5x7' | '8x10' | 'canvas-12x16' | 'tshirt' | 'mug-11oz', required
    - `copies` integer, required
    - `image_id` string, required
    - `width` integer, required
    - `height` integer, required
    - `dpi` integer, required
    - `quality` 'great' | 'good' | 'fair' | 'low', required
    - `shirt_size` 'XS' | 'S' | 'M' | 'L' | 'XL' | '2XL' | '3XL'
    - `shirt_color` 'White' | 'Black'
  - `warnings` string[], required: Resolution and cropping problems (T-shirts are never cropped). Show every one to the human before ordering.
  - `recipient` object, required
    - `name` string
    - `line1` string
    - `line2` string
    - `city` string
    - `state` string
    - `zip` string
    - `email` string
    - `phone` string
    - `country` string

## Other responses

- `400`: invalid_request
- `401`: unauthorized. Carries WWW-Authenticate: Bearer resource_metadata="..."
- `403`: forbidden_scope: a write tool called with a read-only key.
- `404`: not_found
- `429`: rate_limited
- `502`: provider_error

---

[API](https://skmtc.dev/noerrands/apis/no-errands-prints-api.md) · [All operations](https://skmtc.dev/noerrands/apis/no-errands-prints-api/llms.txt) · [OpenAPI document](https://skmtc.dev/noerrands/apis/no-errands-prints-api/revisions/f3ad0da7ed08?raw)
