---
title: "Estimate cost"
method: POST
path: "/v1/estimate"
tags: ["mail"]
---

# Estimate cost

`POST /v1/estimate`

## Request

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

Quote the exact credit cost of a letter or postcard without sending anything; free and read-only. A quote that passes a pdf_url downloads the PDF to count its pages, up to 20 such quotes an hour per account.

## Request body

- object
  - `kind` 'letter' | 'postcard', required
  - `pages` integer
  - `color` boolean
  - `certified` boolean
  - `double_sided` boolean: Letters only. Pages per sheet decide the heavy-letter postage surcharge.
  - `pdf_url` string, uri: Letters only. Quote this PDF on its real page count, exactly as send_letter will bill it; overrides pages.

## Response `200`

Success.

- object
  - `total_cents` integer, required
  - `breakdown` object[], required
    - `item` string, required
    - `cents` integer, required

## 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-mail-api.md) · [All operations](https://skmtc.dev/noerrands/apis/no-errands-mail-api/llms.txt) · [OpenAPI document](https://skmtc.dev/noerrands/apis/no-errands-mail-api/revisions/391e96e083f5?raw)
