Skip to Content

Developer / API Learning Center

Integrate shipping, tracking, labels, and rate quotes into your platform.

Create shipments

Use this endpoint to book shipments with Jet Delivery. A valid API key is required. Requests are submitted as JSON and may include single-stop, multi-stop routes, and optional piece details.

Authentication: include your API key in data.token.

Endpoint

POST https://www.jetdelivery.com/api/v1/order/json/

Recommended: send raw JSON with Content-Type: application/json. For backwards compatibility, the endpoint also accepts a data form field containing the JSON string.

Quick example (minimal)

curl -X POST "https://www.jetdelivery.com/api/v1/order/json/" \
  -H "Content-Type: application/json" \
  -d '{
    "data": {
      "token": "YOUR_API_KEY",
      "jsonstrn": "ABC123",
      "shipments": [
        {
          "Contact": "John Smith",
          "Phone": "9095551212",

          "PickupName": "Anaya Tile",
          "PickupAddress": "993 W 9th St",
          "PickupCity": "Upland",
          "PickupState": "CA",
          "PickupZip": "91786",

          "DeliverName": "Brian'\''s House",
          "DeliverAddress": "126 Prospect St",
          "DeliverCity": "Newport Beach",
          "DeliverState": "CA",
          "DeliverZip": "92663",

          "Pieces": "1",
          "Weight": "1",
          "ServiceType": "1",
          "VehicleType": "TRK",

          "Pickupdate": "today",
          "Deliverdate": "today"
        }
      ]
    }
  }'
Tip: Start with a simple single-stop shipment first. Once that works, add scheduling windows, multi-stop routing, and piece details.

How multi-stop works

A multi-stop shipment is defined by the multistop_route array. Each item represents a stop in order. The first stop is treated as the pickup, the last stop is the final delivery, and any stops in between are intermediate stops.

  • Stop order matters: stops are processed in stop_id order (1 to 2 to 3, etc.).
  • When to use it: include multistop_route when you have more than one delivery or intermediate stop.
  • Single-stop vs multi-stop: if you only have pickup + delivery (2 stops), you can use the standard pickup/deliver fields alone.
  • Still include pickup/deliver fields: we recommend setting Pickup* and Deliver* to match the first and last stops for clarity and compatibility.
Note: Multi-stop routing is most useful with 3+ stops. Two stops is a normal pickup + delivery.

Multi-stop route + piece details example

Use multistop_route to define pickup + one or more intermediate stops + final delivery. Add piece_details when you want to include per-piece dimensions and identifiers.

{
  "data": {
    "token": "YOUR_API_KEY",
    "jsonstrn": "",
    "shipments": [
      {
        "Contact": "Jason Barbata",
        "Phone": "9094500892",
        "Email": "jason.barbata@gmail.com",
        "BillingReference": "LEAF IGNORE",
        "SignatureReq": "N",
        "ServiceType": "1",
        "VehicleType": "TRK",
        "LiftgateReq": "N",

        "multistop_route": [
          {
            "stop_id": 1,
            "name": "Anaya Tile",
            "address": "993 W 9th St",
            "city": "Upland",
            "state": "CA",
            "zip": "91786",
            "contact_name": "Inpatient Pharmacy (David Chu)",
            "phone_no": "9099204001",
            "stop_note": "TEST",
            "update_address_book": "N",
            "location_idx_key": "287235"
          },
          {
            "stop_id": 2,
            "name": "Jet Delivery, Inc (Hayward)",
            "address": "28312 Industrial Blvd",
            "city": "Hayward",
            "state": "CA",
            "zip": "94545",
            "contact_name": "Ed Evrmeulen",
            "phone_no": "8007168803",
            "stop_note": "TEST",
            "update_address_book": "N",
            "location_idx_key": "10450"
          },
          {
            "stop_id": 3,
            "name": "Brian's House",
            "address": "126 Prospect St",
            "city": "Newport Beach",
            "state": "CA",
            "zip": "92663",
            "contact_name": "Brent Barbata",
            "phone_no": "9493559254",
            "stop_note": "TEST",
            "update_address_book": "N",
            "location_idx_key": "163924"
          }
        ],

        "PickupName": "Anaya Tile",
        "PickupAddress": "993 W 9Th St",
        "PickupCity": "Upland",
        "PickupState": "CA",
        "PickupZip": "91786",
        "PickupSpecinst": "TEST",

        "DeliverName": "Brian's House",
        "DeliverAddress": "126 Prospect St",
        "DeliverCity": "Newport Beach",
        "DeliverState": "CA",
        "DeliverZip": "92663",
        "DeliverSpecinst": "TEST",

        "Pieces": "1",
        "Weight": "50",
        "Pickupdate": "2024-09-02",
        "Deliverdate": "2024-09-02",

        "piece_details": [
          {
            "piece_no": "1",
            "piece_weight": "10",
            "length": "5",
            "width": "6",
            "height": "7",
            "pc": "PC1",
            "id": "ID1",
            "description": "DESC 1"
          },
          {
            "piece_no": "2",
            "piece_weight": "30",
            "length": "12",
            "width": "10",
            "height": "8",
            "pc": "PC2",
            "id": "ID2",
            "description": "DESC 2"
          }
        ]
      }
    ]
  }
}
Notes:
  • Multi-stop routing: When you provide 3+ stops, Jet will treat the route as a multi-stop shipment and create legs between each stop.
  • Piece details: Each object in piece_details represents one piece row. Use piece_no as an identifier/label (not a quantity).
  • Totals: Pieces and Weight should still reflect the overall shipment totals used for rating and validation.

Required fields

  • data.token (required) — your API key
  • data.shipments (required) — array of one or more shipment objects
Within each shipment, the typical minimum required fields are: Contact, Phone, pickup address fields, delivery address fields, Pieces, Weight, ServiceType, VehicleType, Pickupdate, and Deliverdate.

Request schema (practical)

Click to expand each section.

data.token string Required
Your API key (linked to a Jet Delivery account). Required to create shipments.
data.jsonstrn string Optional
Optional sender-provided correlation ID (useful for matching your request to our response).
data.shipments array Required
Array of shipment objects. Each object represents one booked shipment request (or one leg when using multi-stop routes).
shipment.Contact string Required
Contact name for questions/issues during the shipment. Note: currently truncated server-side (max length enforcement).
shipment.Phone string Required
Contact phone number. We sanitize to digits and validate typical 10-digit formatting.
shipment.Pickup* object fields Required
Pickup location fields typically required for single-stop bookings:
  • PickupName, PickupAddress, PickupCity, PickupState, PickupZip
shipment.Deliver* object fields Required
Delivery location fields typically required for single-stop bookings:
  • DeliverName, DeliverAddress, DeliverCity, DeliverState, DeliverZip
shipment.Pieces / shipment.Weight string/number Required
Total pieces and total weight for the shipment. We sanitize these values and validate required presence.
shipment.ServiceType / shipment.VehicleType string Required
Service type and vehicle type. Values must map to valid configured service/vehicle options.
shipment.Pickupdate / shipment.Deliverdate date string Required
Requested pickup and delivery dates. Supported friendly values include today and now. For explicit dates, provide a parsable date string (your system’s standard format is recommended).
shipment.multistop_route array Optional
Optional multi-stop routing array. If provided with 3+ stops, the route is built from these stops. Each stop should include stop_id, name, address, zip, and optional contact details.
shipment.piece_details array Optional
Optional list of piece line-items. Each object represents a single piece row (dimensions, item ID, etc.). Useful when you want more accurate vehicle/handling decisions or downstream label details.
Note: Some fields are validated and/or truncated server-side (for example, max lengths on names, phones, and instructions). If you send extra fields we don’t use, they may be ignored safely.

Response

{
  "data": {
    "jsonstrn": "ABC123",
    "shipments_with_errors": 0,
    "shipments": [
      {
        "order": 1,
        "result": "success",
        "track_no": "D300038",
        "billing_reference": "ABC123",
        "service_type": "1",
        "vehicle_type": "TRK",
        "estimated_delivery": "2026-02-28T16:30:00",
        "guaranteed_delivery": "2026-02-28T17:00:00",
        "destination_tz": "PST",
        "estimated_charge": 174.61,
        "errors": []
      }
    ]
  },
  "error": null
}

If validation fails, the response may include error at the top level (or per-shipment errors when multiple shipments are submitted).

Next steps