Acme Freight
v3.0.0

Acme Freight API v1

Track shipments and price quotes from your own systems: JSON over HTTP, one header to authenticate.

Authentication and limits

Send your key in the X-API-Key header. These demo keys work on this server:

KeyAccountLimit
acme-demo-7f3a91c2Demo partner120 requests per minute
acme-trial-2b91e4d0Trial account5 requests per minute

Over the limit, the API answers 429 Too Many Requests with a Retry-After header. Money is always a string of exact decimals ("117.62"), never a float.

Endpoints

MethodPathWhat it does
GETstatusIs the API up, and which release answers (no key needed)
GETshipments?status=&customer=&limit=&offset=Search shipments (up to 50 per page)
GETshipments/{id}One shipment, with its scan history
POSTquotesPrice a shipment: origin, destination, weight_kg, optional service, promo, hazardous

Base URL: http://test-hub.us/demo/freight/api/v1/

Try it

curl -H "X-API-Key: acme-demo-7f3a91c2" http://test-hub.us/demo/freight/api/v1/shipments/AF-100001

Pricing a quote

curl -X POST -H "X-API-Key: acme-demo-7f3a91c2" -H "Content-Type: application/json" \
     -d '{"origin": "San Francisco", "destination": "San Diego", "weight_kg": 120, "promo": "SPRING10"}' \
     http://test-hub.us/demo/freight/api/v1/quotes

Example response (live, from this server)

{
  "id": "AF-100001",
  "status": "in_transit",
  "status_label": "In transit",
  "customer": "Lumen Optics",
  "origin": "Los Angeles, California, US",
  "destination": "Frankfurt, Hessen, DE",
  "service": "express",
  "weight_kg": 42.5,
  "pieces": 3,
  "booked_at": "2026-09-23T06:00",
  "delivered_at": null,
  "price": {
    "amount": "717.54",
    "currency": "USD"
  },
  "events": [
    {
      "at": "2026-09-23T06:00",
      "code": "booked",
      "text": "Booked with Acme Freight (express)",
      "location": "Los Angeles, California, US"
    },
    {
      "at": "2026-09-23T18:00",
      "code": "picked_up",
      "text": "Picked up by courier",
      "location": "Los Angeles, California, US"
    },
    {
      "at": "2026-09-24T08:00",
      "code": "at_hub",
      "text": "Arrived at LAX hub",
      "location": "Los Angeles, California, US"
    },
    {
      "at": "2026-09-24T18:00",
      "code": "in_transit",
      "text": "Departed LAX for FRA",
      "location": "Los Angeles, California, US"
    }
  ],
  "eta": "2026-09-25",
  "estimated_delivery": "2026-09-25",
  "deprecated": {
    "eta": "use estimated_delivery; eta goes away in API v2"
  }
}

API changelog