---
title: "Track a package"
method: GET
path: "/v1/track"
tags: ["ship"]
---

# Track a package

`GET /v1/track`

## Request

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

Track any package from any major carrier by tracking number (USPS, UPS, FedEx, DHL and more; carrier optional); free and read-only, with up to 30 new tracking numbers per account per day and unlimited re-checks of ones already looked up.

## Query parameters

- `tracking_code` string, required: Any carrier tracking number, letters and digits only (strip spaces).
- `carrier` string: Optional, e.g. USPS, UPS, FedEx. Leave it out if unsure; the carrier is detected.

## Response `200`

Success.

- object
  - `tracking_code` string, required
  - `carrier` string, required
  - `status` 'unknown' | 'pre_transit' | 'in_transit' | 'out_for_delivery' | 'delivered' | 'available_for_pickup' | 'return_to_sender' | 'failure' | 'cancelled' | 'error', required
  - `status_detail` string
  - `est_delivery_date` string
  - `public_url` string, uri
  - `events` object[], required: Newest first, at most 10.
    - `at` string, required
    - `status` string, required
    - `message` string
    - `location` 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-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)
