# Create Delivery

Create a delivery request by submitting the required pickup and drop-off details.

**Endpoint:**

```
POST /v1/deliveries
```

Base URL

* Test: `https://sandbox-integrations.routelift.com/v1/deliveries`
* Live: `https://integrations.routelift.com/v1/deliveries`

***

#### Request

**Method**: `POST`\
**Content-Type**: `application/json`

**Authorization:** `Bearer <apiKey>`

**Sample Request Body**

<pre class="language-json"><code class="lang-json">{
  "pickups": [
    {
      "senderAddress": "12 Allen Avenue, Ikeja",
      "senderName": "John Doe",
      "senderPhone": "08012345678",
      "senderEmail": "john@example.com",
      "senderNote": "Call when outside",
      "senderAltPhone": "08098765432",
      "senderGeoCoord": {
        "latitude": 6.6018,
        "longitude": 3.3515
      },
      "packageSize": "medium", // small // large
      "weight": 50,
      "dimensions": {
          "length": 50,
          "width": 30,
          "height": 20
      },
      "scheduledPickUpTime": "2025-05-22T10:00:00Z",
      "quantity": 1,
      "vehicle": "motorcycle", // Other options include: motorcycle, bicycle, auto
      "categories": ["Food and Beverages", "Shoes", "Clothing", "Electronics"]
    }
  ],
  "receiver": {
    "receiverAddress": "45 Admiralty Way, Lekki Phase 1",
    "receiverName": "Jane Doe",
    "receiverPhone": "08123456789",
    "receiverAltPhone": "07011223344",
    "receiverEmail": "jane@example.com",
    "receiverNote": "Deliver before 5PM",
    "receiverGeoCoord": {
<strong>      "latitude": 6.4301,
</strong>      "longitude": 3.4291
    }
  },
  "orderId": "ORD12345",
  "paymentMethod": "wallet", // can be wallet, invoice
  "deliveryType": "standard" // Other options include: basic, premium.
}
</code></pre>

#### Request Fields

<table><thead><tr><th>Field</th><th>Type</th><th width="278.5999755859375">Description</th><th>Optional</th></tr></thead><tbody><tr><td><code>pickups</code></td><td>array of objects</td><td>List of pickup points</td><td>No</td></tr><tr><td><code>pickups[].senderAddress</code></td><td>string</td><td>The address of the sender</td><td>No</td></tr><tr><td><code>pickups[].senderName</code></td><td>string</td><td>The name of the sender</td><td>No</td></tr><tr><td><code>pickups[].senderPhone</code></td><td>string</td><td>The phone number of the sender</td><td>No</td></tr><tr><td><code>pickups[].senderEmail</code></td><td>string</td><td>The email of the sender</td><td>Yes</td></tr><tr><td><code>pickups[].senderNote</code></td><td>string</td><td>Additional notes from the sender</td><td>Yes</td></tr><tr><td><code>pickups[].senderAltPhone</code></td><td>string</td><td>Alternate phone number of the sender</td><td>Yes</td></tr><tr><td><code>pickups[].senderGeoCoord</code></td><td>object</td><td>Geographic coordinates of the sender</td><td>No</td></tr><tr><td><code>pickups[].senderGeoCoord.latitude</code></td><td>number</td><td>Latitude of the sender’s location</td><td>No</td></tr><tr><td><code>pickups[].senderGeoCoord.longitude</code></td><td>number</td><td>Longitude of the sender’s location</td><td>No</td></tr><tr><td><code>pickups[].packageSize</code></td><td>string</td><td>Size of the package. Accepted values (small, medium large or extra_large)</td><td>No</td></tr><tr><td><code>pickups[].weight</code></td><td>number</td><td>Weight of the package. Must be a whole number.</td><td>Yes</td></tr><tr><td><code>pickups[].scheduledPickUpTime</code></td><td>string</td><td>Scheduled pickup time (ISO 8601 format)</td><td>Yes</td></tr><tr><td><code>pickups[].quantity</code></td><td>number</td><td>Quantity of items</td><td>No</td></tr><tr><td><code>pickups[].vehicle</code></td><td>string</td><td>Type of vehicle for delivery.  When auto is selected, the system selects the best vehicle for the delivery request.</td><td>No</td></tr><tr><td><code>pickups[].categories</code></td><td>array</td><td>Array of product categories</td><td>no</td></tr><tr><td>pickups[].dimensions</td><td>object</td><td>Package Dimensions</td><td>yes</td></tr><tr><td><code>receiver</code></td><td>object</td><td>Receiver details</td><td>No</td></tr><tr><td><code>receiver.receiverAddress</code></td><td>string</td><td>The address of the receiver</td><td>No</td></tr><tr><td><code>receiver.receiverName</code></td><td>string</td><td>The name of the receiver</td><td>No</td></tr><tr><td><code>receiver.receiverPhone</code></td><td>string</td><td>The phone number of the receiver</td><td>No</td></tr><tr><td><code>receiver.receiverAltPhone</code></td><td>string</td><td>Alternate phone number of the receiver</td><td>Yes</td></tr><tr><td><code>receiver.receiverEmail</code></td><td>string</td><td>The email of the receiver</td><td>Yes</td></tr><tr><td><code>receiver.receiverNote</code></td><td>string</td><td>Additional notes from the receiver</td><td>Yes</td></tr><tr><td><code>receiver.receiverGeoCoord</code></td><td>object</td><td>Geographic coordinates of the receiver</td><td>No</td></tr><tr><td><code>receiver.receiverGeoCoord.latitude</code></td><td>number</td><td>Latitude of the receiver’s location</td><td>No</td></tr><tr><td><code>receiver.receiverGeoCoord.longitude</code></td><td>number</td><td>Longitude of the receiver’s location</td><td>No</td></tr><tr><td><code>orderId</code></td><td>string</td><td>The unique order ID sent by the client.</td><td>Yes</td></tr><tr><td><code>paymentMethod</code></td><td>string</td><td>The method of payment (e.g. wallet, cash, invoice or transfer)</td><td>No</td></tr><tr><td><code>deliveryType</code></td><td>string</td><td>Type of delivery (e.g. <code>express</code>, <code>standard, basic and premium</code>). Use standard for now.</td><td>No</td></tr></tbody></table>

***

Response\
\
**Content-Type**: `application/json`\
\
**Sample Response Body**

```json
{
    "success": true,
    "data": [
        {
            "order_id": "ORD12345",
            "trackingCode": "UHSQAD",
            "price": 4000
        },
        {
            "order_id": "ORD12345",
            "trackingCode": "EQ6NJH",
            "price": 4000
        }
    ],
    "message": "Delivery created successfully"
}
```

\
**Response Fields**

| Field               | Type    | Description                             |
| ------------------- | ------- | --------------------------------------- |
| `success`           | boolean | Indicates if the request was successful |
| `data`              | object  | Contains the order information          |
| `data.order_id`     | string  | Unique order reference                  |
| `data.trackingCode` | string  | Code for tracking the delivery          |
| `data.price`        | number  | Delivery fee in Naira                   |
| `message`           | string  | Describes the result of the operation   |

***

#### Webhooks

Once the delivery is created, RouteLift will send a `delivery.created` event to your webhook URL (if configured):

**Sample Payload**

```json
{
  "event": "delivery.created",
  "timestamp": "2025-05-21T12:34:56Z",
  "eventId": "3b59132c-9281-4b9b-bf09-1b93a3e362cc", // unique identifier for events. Can be used to prevent duplicate webhook handling
  "data": {
    "trackingCode": "dlv_7890",
    "orderId": "AB6237QS", // This is id you sent when creating the delivery request
    "price": 500
  }
}
```

Make sure your webhook is ready to handle this payload and respond with a 2xx status code.

***


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://routelift.gitbook.io/routelift-api-integration/api-reference/editor.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
