Nomad. Logistic Solutions

Partner API

Create and track shipments programmatically, and receive status updates by webhook.

1. Base URL & authentication

All requests go to:

https://nomad-api.henrietta-amike.workers.dev

Every request must include your API key in a header (either form works):

Authorization: Bearer YOUR_API_KEY
# or
X-API-Key: YOUR_API_KEY
Your API key is issued by Nomad and looks like nmd_live_…. Keep it secret — treat it like a password. If it leaks, ask Nomad to revoke it and issue a new one. A key can be limited to track only, or track + create.

2. Create a shipment

POST/api/v1/shipments  requires "create"

FieldRequiredDescription
recipient_nameyesWho receives the parcel
dropoffyesDelivery address
recipient_phoneyesRecipient's phone (the rider needs to reach them)
pickupyesCollection address (your store/warehouse)
item_descriptionyesWhat's being sent
sizeyesPackage size, free text (e.g. "Small", "1 carton")
order_typenodelivery (default), interstate, international, product
cod_amountnoGoods money to collect on delivery (₦), if any
referencenoYour own order reference — stored on the shipment
customer_name, customer_phonenoThe sender (defaults to your account name)

Example

curl -X POST https://nomad-api.henrietta-amike.workers.dev/api/v1/shipments \
  -H "Authorization: Bearer nmd_live_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "recipient_name": "Folashade Awe",
    "recipient_phone": "08168799912",
    "dropoff": "12 Admiralty Way, Lekki Phase 1, Lagos",
    "pickup": "Bella'\''s Boutique, 5 Allen Avenue, Ikeja, Lagos",
    "item_description": "1x handbag",
    "size": "Small",
    "reference": "STORE-ORDER-5567"
  }'

Returns 201 with the created shipment (see the shipment object below). Use the returned id to track it.

💵 Cash on delivery (COD). To have Nomad collect the goods money from the recipient at the door, include cod_amount (in ₦) when creating the shipment. Nomad collects it on delivery, deducts the delivery fee, and remits the balance to you. Tip: also send your own customer_phone so all your COD is grouped under one account for settlement.

3. Track a shipment

GET/api/v1/shipments/{id}  requires "track"

curl https://nomad-api.henrietta-amike.workers.dev/api/v1/shipments/NM-2026-0148 \
  -H "Authorization: Bearer nmd_live_YOUR_KEY"

List your shipments

GET/api/v1/shipments — returns your most recent shipments (up to 100).

The shipment object

{
  "shipment": {
    "id": "NM-2026-0148",
    "status": "Delivered",
    "payment_status": "Paid",
    "order_type": "delivery",
    "recipient_name": "Folashade Awe",
    "dropoff": "12 Admiralty Way, Lekki Phase 1, Lagos",
    "size": null,
    "item": "1x handbag",
    "carrier": null,
    "carrier_tracking_number": null,
    "carrier_tracking_url": null,
    "created_at": "2026-08-10T09:12:00.000Z",
    "delivered_at": "2026-08-10T15:40:00.000Z",
    "tracking_page": "https://nomadlogisticsolutions.com/track.html?order=NM-2026-0148"
  }
}

For international shipments handed to a carrier (DHL, Aramex…), carrier, carrier_tracking_number and carrier_tracking_url point at the carrier's own live tracking.

4. Webhooks (status updates)

If a webhook URL is set on your key, Nomad sends a POST to it whenever one of your shipments changes status:

POST (your webhook URL)
X-Nomad-Event: shipment.updated
Content-Type: application/json

{
  "event": "shipment.updated",
  "sent_at": "2026-08-10T15:40:02.000Z",
  "shipment": { ...the shipment object above... }
}

Respond with 2xx. Webhooks are best-effort (no retries yet), so also poll the track endpoint as a backup for anything critical.

5. Errors

CodeMeaning
401Missing or invalid API key
403Your key doesn't have that capability (track / create)
404Shipment not found (or not yours)
400Missing required field

Questions? Contact Nomad Logistic Solutions.