---
title: "Get pickup options"
method: POST
path: "/v1/pickups/options"
tags: ["ship"]
---

# Get pickup options

`POST /v1/pickups/options`

## Request

- Base URL: `https://api.noerrands.com/c/ship`
- URL: `https://api.noerrands.com/c/ship/v1/pickups/options`
- Auth: HTTP bearer

See whether a carrier can collect a bought label's package from its "from" address in a time window, and what it costs (a USPS pickup is free); free and nothing is booked -- schedule_pickup does that.

## Request body

- object
  - `shipment_id` string, required: The label to be picked up. The pickup is at that label's "from" address.
  - `earliest` string, required: Start of the pickup window, ISO with offset, e.g. "2026-09-24T09:00:00-05:00".
  - `latest` string, required: End of the window, same format. USPS picks up on the next delivery day inside it.
  - `instructions` string: Optional, for the carrier: where the package will be, e.g. "on the front porch".

## Response `200`

Success.

- object
  - `pickup_id` string, required: Opaque id, "pu_...". Pass it to schedule_pickup.
  - `options` object[], required
    - `carrier` string, required
    - `service` string, required: Pass this to schedule_pickup.
    - `price_cents` integer, required: Zero for a free USPS pickup.
  - `expires_at` string, date-time, 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-ship-api.md) · [All operations](https://skmtc.dev/noerrands/apis/no-errands-ship-api/llms.txt) · [OpenAPI document](https://skmtc.dev/noerrands/apis/no-errands-ship-api/revisions/f0615c6bd5d8?raw)
