Skip to main content

Nash docs

Build on deliveries in motion

One API to orchestrate last-mile delivery across 80+ providers and your own fleet — and an agent that makes every delivery smarter than the last.

PlatformDocumentationModel your operation — orders, jobs, dispatch strategies, zones, and webhooks — and let Nash pick the right provider for every delivery.
CopilotNash AgentAn operations copilot that investigates, acts with your sign-off, and analyzes — scoped to your organization and your permissions.
ReferenceAPI ReferenceEvery endpoint, request, and response — orders, jobs, quotes, routes, zones, and the rest. With an OpenAPI spec you can hand to an LLM.
1

Get your API key

Grab an API key and organization ID from the Nash Portal, and build against the sandbox environment until you’re ready.
2

Create an order

One request with a pickup and a dropoff. Nash validates the addresses and returns quotes from eligible providers.
3

Dispatch it

Select a quote yourself, or autodispatch and let your dispatch strategy decide.
4

Listen for what happens next

Subscribe to webhooks and every status change — assignment, pickup, dropoff — comes to you.
curl -X POST https://api.sandbox.usenash.com/v1/order \
  -H "Authorization: Bearer $NASH_API_KEY" \
  -H "Nash-Org-Id: $NASH_ORG_ID" \
  -H "Content-Type: application/json" \
  -d '{
    "externalId": "order-4f2a",
    "pickupAddress": "210 King St, San Francisco, CA 94107",
    "dropoffAddress": "1 Ferry Building, San Francisco, CA 94111"
  }'
const res = await fetch("https://api.sandbox.usenash.com/v1/order", {
  method: "POST",
  headers: {
    Authorization: `Bearer ${process.env.NASH_API_KEY}`,
    "Nash-Org-Id": process.env.NASH_ORG_ID,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    externalId: "order-4f2a",
    pickupAddress: "210 King St, San Francisco, CA 94107",
    dropoffAddress: "1 Ferry Building, San Francisco, CA 94111",
  }),
});

const order = await res.json();
// order.quotes — priced quotes from eligible providers
import os
import requests

res = requests.post(
    "https://api.sandbox.usenash.com/v1/order",
    headers={
        "Authorization": f"Bearer {os.environ['NASH_API_KEY']}",
        "Nash-Org-Id": os.environ["NASH_ORG_ID"],
    },
    json={
        "externalId": "order-4f2a",
        "pickupAddress": "210 King St, San Francisco, CA 94107",
        "dropoffAddress": "1 Ferry Building, San Francisco, CA 94111",
    },
)

order = res.json()
# order["quotes"] — priced quotes from eligible providers

The Nash-Org-Id header is required when your API key has access to more than one organization. Get your org ID →

Popular guides

Sample checkout workflow

Quote at checkout, confirm at payment, dispatch on fulfillment — the integration most teams ship first.

Route optimization

Turn a pile of orders into sequenced, capacity-aware routes — then dispatch them as one.

Production testing

Simulate provider behavior end-to-end before a single real courier is dispatched.

Jump into the API

Full reference →

Bring your tools

Use LLMs with the Nash API

Point Claude, Cursor, or your own agent at our MCP server and OpenAPI spec — the whole reference, machine-readable. llms.txt · openapi.json · MCP

Talk to a human

Integration questions, provider onboarding, or something the docs didn’t answer — we read everything. support@usenash.com