# AxleHire (Jitsu) Tracking API & MCP

URL: https://docs.lastscanned.com/carriers/axlehire

Query live **AxleHire / Jitsu** (`axlehire`) package status and scan history in a single synchronous `GET` request or MCP tool call. AxleHire rebranded to **Jitsu** (`gojitsu.com`), and `lastscanned` supports both its 12/16-character mixed alphanumeric tracking tokens and 19-character `SCD…` barcodes in Pass 2 (`mayMatch`), returning a normalized `TrackingResult` JSON payload—without requiring a Jitsu enterprise shipper contract.

## Overview & Quick Facts

| Property | Value |
|---|---|
| **Carrier slug (`?carrier=`)** | `axlehire` |
| **Brand & service aliases** | AxleHire, Jitsu, GoJitsu, Jitsu Same-Day / Next-Day |
| **Category** | US metro same-day & next-day last-mile parcel carrier (Detection precedence **#13 of 31**) |
| **Single-package REST endpoint** | `GET https://api.lastscanned.com/v1/track/{trackingNumber}` |
| **Batch REST endpoint** | `GET https://api.lastscanned.com/v1/track?numbers=4AUMF4FWVRB5,SCD...` (up to 35 numbers per carrier in a 100-number call) |
| **MCP server (`https://mcp.lastscanned.com`)** | `track_package`, `track_packages`, `list_carriers` (`claude mcp add --transport http lastscanned https://mcp.lastscanned.com`) |
| **Authentication & pricing** | `Authorization: Bearer lsk_live_...` · **1 free keyless lookup/day per IP** · **Free tier** (5 unique numbers/day, $0) · **Pro** ($4.99/mo for 1,000 unique numbers, unlimited re-polls, $0.015/extra) · **HTTP 402 Stripe MPP** ($0.50 for 25-number `lsk_pack_` key or $0.02/number in USDC on Tempo) |

## Why developers use `lastscanned` for AxleHire / Jitsu

- **No Jitsu enterprise API keys or webhook setup**: Official Jitsu API access is provisioned only to direct enterprise shippers. `lastscanned` lets any application, post-purchase portal, or WISMO AI agent query Jitsu tracking tokens synchronously via `GET /v1/track/:number`.
- **Smart normalization of Jitsu's internal route signals**: Jitsu's raw `shipment_events` stream emits `GEOCODED` mid-transit when a delivery route is re-planned (which naively resets a package's status back to `label_created`), uses `PICKUP_SUCCEEDED` when a driver loads the parcel onto a delivery vehicle (actually `out_for_delivery`), and emits `RETURN_SUCCEEDED` when an undelivered parcel returns to the local Jitsu depot for redelivery (still `in_transit`, not returned to sender). `lastscanned` handles all three edge cases accurately.

## Tracking Number Formats & Auto-Detection (`matches` vs `mayMatch`)

Because Jitsu's 12- and 16-character tracking tokens have **no fixed prefix** (e.g. `4AUMF4FWVRB5`, `BQH4FN5QAQYV3SDQ`), AxleHire / Jitsu deliberately returns `false` in Pass 1 (`matches`) and runs exclusively in **Pass 2 (`mayMatch`)** so every prefixed carrier (`VH…`, `CR…`, `AP…`, `LP…`, `BTP…`) claims its numbers first:

| Pass | Rule / Regex | Check Digit | Examples |
|---|---|---|---|
| **Pass 1 (`matches`)** | *None (`false`)* — deferred to Pass 2 to prevent prefix collisions | — | — |
| **Pass 2 (`mayMatch`) — `SCD` barcode** | `/^SCD[0-9A-Z]{16}$/i` (`SCD` + 16 alphanumeric characters = 19 chars) | — | `SCD0000F00410922107` |
| **Pass 2 (`mayMatch`) — 12/16-char token** | `/^([0-9A-Z]{12}\|[0-9A-Z]{16})$/i` with at least one letter, one digit, and **not** all-letters-then-all-digits (`!/^[A-Z]+\d+$/i`) | — | `4AUMF4FWVRB5`, `BQH4FN5QAQYV3SDQ` |

### Why `!/^[A-Z]+\d+$/i` is enforced & when to pass `?carrier=axlehire`

- **Zero collision with `VH`, `CR`, `LP`, `AP`**: Standard prefixed barcodes like `CR010740141269` (Cirro, 14 chars) or `AP00830954074290` (Cainiao, 16 chars) are all-letters followed by all-digits and are matched in Pass 1. Jitsu's 12/16-character tokens interleave letters and digits (`4AUMF4FWVRB5`).
- **When `?carrier=axlehire` is required**: Only if a Jitsu token happens to consist strictly of leading letters followed by trailing digits (rare), or if you are querying a non-standard shipper reference number.

## Synchronous `GET` Request & Normalized JSON Response

### `curl`

```bash
curl -s "https://api.lastscanned.com/v1/track/4AUMF4FWVRB5" \
  -H "Authorization: Bearer $LASTSCANNED_API_KEY"
```

### JavaScript / TypeScript (`fetch`)

```ts
const res = await fetch("https://api.lastscanned.com/v1/track/4AUMF4FWVRB5", {
  headers: { Authorization: `Bearer ${process.env.LASTSCANNED_API_KEY}` },
});
const pkg = await res.json();
console.log(pkg.status, pkg.estimatedDeliveryAt, pkg.deliveredAt);
```

### MCP `track_package` tool call

```json
{
  "tool": "track_package",
  "arguments": {
    "tracking_number": "4AUMF4FWVRB5"
  }
}
```

### Normalized `TrackingResult` JSON response

```json
{
  "carrier": "axlehire",
  "trackingNumber": "4AUMF4FWVRB5",
  "status": "delivered",
  "statusDescription": "Delivered",
  "service": null,
  "deliveredAt": "2026-10-24T21:08:33Z",
  "deliveredAtLocal": "2026-10-24T14:08:33",
  "signedBy": "RECEPTION",
  "destination": {
    "city": "SAN FRANCISCO",
    "state": "CA",
    "country": "US"
  },
  "estimatedDelivery": "2026-10-24T20:00:00",
  "estimatedDeliveryAt": "2026-10-25T03:00:00Z",
  "message": "Left inside front lobby by mailboxes",
  "events": [
    {
      "timestamp": "2026-10-24T21:08:33Z",
      "localTime": "2026-10-24T14:08:33",
      "status": "delivered",
      "description": "Delivered",
      "location": "San Francisco, CA",
      "code": "DROPOFF_SUCCEEDED"
    },
    {
      "timestamp": "2026-10-24T16:45:10Z",
      "localTime": "2026-10-24T09:45:10",
      "status": "out_for_delivery",
      "description": "Out for delivery",
      "location": "San Leandro, CA",
      "code": "PICKUP_SUCCEEDED"
    },
    {
      "timestamp": "2026-10-24T10:12:04Z",
      "localTime": "2026-10-24T03:12:04",
      "status": "in_transit",
      "description": "Received at sortation center",
      "location": "San Leandro, CA",
      "code": "RECEIVED_OK"
    },
    {
      "timestamp": "2026-10-23T22:00:00Z",
      "localTime": "2026-10-23T15:00:00",
      "status": "label_created",
      "description": "Shipment info received",
      "location": "San Francisco, CA",
      "code": "GEOCODED"
    }
  ]
}
```

> **Raw status & signal codes**: `events[].code` preserves Jitsu's signal identifier (`CREATED`, `GEOCODED`, `RECEIVED_OK`, `BOOKED`, `PICKUP_EN_ROUTE`, `PICKUP_SUCCEEDED`, `DROPOFF_EN_ROUTE`, `DROPOFF_SUCCEEDED`, `DROPOFF_FAILED`, `RETURN_SUCCEEDED`, `MISDELIVERED`), while `message` surfaces driver delivery notes (`dropoff_note`) or exception remarks.

## Carrier-Specific Status & Integration Notes

- **Exact UTC + local timestamps & ETAs**: Jitsu provides UTC timestamps alongside the recipient's IANA `timezone` (e.g. `America/Los_Angeles`) and a `dropoff_latest_ts` delivery window deadline, populating `timestamp`, `localTime`, `estimatedDelivery` (local), and `estimatedDeliveryAt` (UTC).
- **Mid-transit `GEOCODED` guard**: If a shipment already has physical scan milestones (`in_transit` or `out_for_delivery`) and Jitsu emits a route re-plan `GEOCODED` event at the top of the list, `lastscanned` keeps the top-level `status` at the true physical state instead of reverting to `label_created`.

## Related Resources

- **Live browser lookup tool**: [Track an AxleHire / Jitsu package live on lastscanned.com/lookup/axlehire](https://lastscanned.com/lookup/axlehire)
- **Carrier hub**: [All 31 supported carriers](/carriers)
- **Regex & check digits**: [Tracking number formats & auto-detection](/formats)
- **AI support workflows**: [WISMO AI agents & synchronous tracking](/wismo)
