# Quickstart

URL: https://docs.lastscanned.com

## 1. Get an API key

Sign in at [app.lastscanned.com](https://app.lastscanned.com) and create a key under **API keys**. It looks like `lsk_live_…` and is shown once.

```bash
export LASTSCANNED_KEY=lsk_live_…
```

## 2. Track a number

```bash tab="curl"
curl https://api.lastscanned.com/v1/track/1Z999AA10123456784 \
  -H "Authorization: Bearer $LASTSCANNED_KEY"
```

```js tab="JavaScript"
const res = await fetch("https://api.lastscanned.com/v1/track/1Z999AA10123456784", {
  headers: { Authorization: `Bearer ${process.env.LASTSCANNED_KEY}` },
});
const tracking = await res.json();
```

```python tab="Python"
import os, requests

res = requests.get(
    "https://api.lastscanned.com/v1/track/1Z999AA10123456784",
    headers={"Authorization": f"Bearer {os.environ['LASTSCANNED_KEY']}"},
)
tracking = res.json()
```

The carrier is detected from the number. No carrier field is needed.

## 3. Read the response

```json
{
  "carrier": "ups",
  "trackingNumber": "1Z999AA10123456784",
  "status": "delivered",
  "statusDescription": "Delivered",
  "service": "UPS Ground",
  "deliveredAt": "2026-08-07T21:17:14Z",
  "deliveredAtLocal": "2026-08-07T16:17:00",
  "signedBy": null,
  "destination": { "city": "AUSTIN", "state": "TX", "country": "US" },
  "estimatedDelivery": "2026-08-07",
  "estimatedDeliveryAt": null,
  "events": [
    {
      "timestamp": "2026-08-07T21:17:14Z",
      "localTime": "2026-08-07T16:17:00",
      "status": "delivered",
      "description": "DELIVERED",
      "location": "AUSTIN, TX, US",
      "code": "FS"
    },
    {
      "timestamp": "2026-08-07T13:02:41Z",
      "localTime": "2026-08-07T08:02:00",
      "status": "out_for_delivery",
      "description": "Out For Delivery Today",
      "location": "AUSTIN, TX, US",
      "code": "OT"
    }
  ]
}
```

Every carrier returns this shape. `status` is one of `label_created`, `in_transit`, `out_for_delivery`, `delivered`, `exception`, `returned`, `unknown`. `events` are newest first. Field details are in [Tracking](/tracking).

## Next

- Several numbers in one call: [Tracking](/tracking#several-numbers)
- Give an AI agent package tracking: [MCP](/mcp)
