Slider API
Add on-demand delivery to your website or app. Send orders to Slider's rider network through a simple REST API — your brand, your customer, our delivery.
The Slider API lets any business create deliveries programmatically. When your customer places an order on your platform, send it to Slider and our rider network handles pickup, delivery, and live tracking. Orders appear in your Slider dashboard, and you manage everything through your account wallet.
Production:
https://api.slider-app.com/v1Sandbox:
https://api-sandbox.slider-app.com/v1All requests use HTTPS. All request and response bodies are JSON.
Authentication
Every request must include your API key in the X-Slider-Key header. You can get your API key from your Slider dashboard under API Credentials → API Keys.
X-Slider-Key:sk_live_your_api_key_hereCreate a Delivery
Creates a new delivery order. Slider assigns the nearest available rider and begins pickup. Returns a delivery object with a tracking ID.
Example request
# Create a delivery — rider is assigned instantly curl -X POST https://api.slider-app.com/v1/deliveries \ -H "X-Slider-Key: sk_live_your_api_key" \ -H "Content-Type: application/json" \ -d '{ "order_id": "12345678", "account_id": "67aad895d28efa2a4aa35263", "display_order_id": "SDNN-9970", "vehicle_type": "bike", "schedule_at": "2026-07-28T16:31:36Z", "driver_tip": 0, "pickup": { "address": "12 Al Feehah St - Mohamed Bin Zayed City - Abu Dhabi", "latitude": 25.2048, "longitude": 55.2708, "directions": "Shop 12, Ground Floor, Marina Mall", "contact_number": "+971501234567" }, "dropoff": { "address": "Dalma Mall", "latitude": 25.1972, "longitude": 55.2744, "directions": "Villa 7, Street 3, Jumeirah 1", "contact_number": "+971507654321" }, "payment_on_delivery": { "type": "cash", "amount": 120.00 } }'
Example response
{
"order_number": 61841588,
"order_id": "12345678",
"status": "searching_rider",
"vehicle_type": "bike",
"fare": 10,
"currency": "AED",
"distance_km": 1.67,
"tracking_url": "https://slider-app.com/t/90fo-hzv6.aPtdkiDcKW89",
"created_at": "2026-08-03T08:47:12+00:00"
}Parameters
Top-level fields
| Field | Type | Required | Description |
|---|---|---|---|
order_id | string | required | Unique order ID from your client server. Used for reference and reconciliation. Will be included in webhook payloads. |
account_id | string | required | The unique identifier of your client account in Slider. Found in your dashboard under Customer Accounts → Account ID. |
display_order_id | string | optional | A human-readable reference number displayed to the rider and customer (e.g. "SDNN-9970"). Useful for logistics tracking and driver communication at pickup/dropoff. |
vehicle_type | string | required | Vehicle for this delivery. Options: "bike", "car", or "any". See Vehicle Selection section. |
driver_tip | number | optional | Tip amount in AED for the rider. Adds to fare and incentivizes faster delivery. Default: 0. |
schedule_at | string / null | optional | ISO 8601 timestamp (UTC) for scheduled dispatch. Null or omitted = immediate. Minimum 30 minutes in the future. See Scheduling section. |
Pickup object required
| Field | Type | Required | Description |
|---|---|---|---|
latitude | number | required | Pickup latitude (decimal degrees) |
longitude | number | required | Pickup longitude (decimal degrees) |
directions | string | optional | Text directions for the rider — building, floor, unit, landmark |
contact_number | string | required | Phone number at pickup, E.164 format (e.g. +9715XXXXXXXX) |
Dropoff object required
| Field | Type | Required | Description |
|---|---|---|---|
latitude | number | required | Drop-off latitude (decimal degrees) |
longitude | number | required | Drop-off longitude (decimal degrees) |
directions | string | optional | Text directions for the rider — building, floor, unit, landmark |
contact_number | string | required | Phone number at drop-off, E.164 format |
Vehicle Selection
The vehicle_type field controls which vehicle handles the delivery. Three options:
| Value | Description |
|---|---|
"bike" | Motorbike. Faster in traffic, lower cost. Maximum distance 35 km. |
"car" | Car. For larger items or longer distances. No distance cap. |
"any" | Let Slider choose the best available vehicle based on distance, item, and supply. Recommended default. |
"vehicle_type": "any" and Slider optimises the assignment for speed and cost. Use "bike" or "car" only when the item requires a specific vehicle.Scheduling
By default, deliveries are dispatched immediately. To schedule a delivery for a future time, set the schedule_at field to an ISO 8601 timestamp in UTC. Leave it null (or omit it) for instant dispatch.
// Immediate delivery "schedule_at": null // Scheduled for a specific time (ISO 8601, UTC) "schedule_at": "2026-07-28T16:31:36Z"
| Field | Type | Required | Description |
|---|---|---|---|
schedule_at | string / null | optional | ISO 8601 timestamp in UTC (e.g. "2026-07-28T16:31:36Z") for future dispatch. Null or omitted = immediate. Must be at least 30 minutes in the future. |
Cash / Card on Delivery
If your customer pays on delivery rather than prepaying on your site, use the payment_on_delivery object. The rider collects the amount and it is reconciled to your wallet. Omit this object entirely if the customer has already paid you online.
| Field | Type | Required | Description |
|---|---|---|---|
type | string | required | Either "cash" or "card" |
amount | number | required | Amount the rider collects from the customer, in AED |
• Cash on delivery — maximum AED 350 per order
• Card on delivery — maximum AED 500 per order
Requests above these limits are rejected with a
422 error.// Cash on delivery, rider collects AED 120 "payment_on_delivery": { "type": "cash", "amount": 120.00 } // Card on delivery, rider collects AED 480 via card machine "payment_on_delivery": { "type": "card", "amount": 480.00 } // Customer already paid online — omit the object entirely
Response
The API returns a delivery object with status, vehicle assignment, and tracking information.
Success Response (200 OK)
{
"order_number": 61841588,
"order_id": "12345684",
"status": "searching_rider",
"vehicle_type": "bike",
"fare": 10,
"currency": "AED",
"distance_km": 1.67,
"tracking_url": "https://slider-app.com/t/90fo-hzv6.aPtdkiDcKW89",
"created_at": "2026-08-03T08:47:12+00:00"
}| Field | Type | Description |
|---|---|---|
order_number | number | Internal order number assigned by Slider. Used for tracking. |
order_id | string | The order ID you provided in the request. Used for reconciliation. |
status | string | Current delivery status. Initial value: "searching_rider". Other values: "rider_assigned", "heading_to_pickup", "at_pickup", "picked_up", "in_transit", "delivered", "cancelled". |
vehicle_type | string | Vehicle assigned for this delivery: "bike" or "car". |
fare | number | Delivery fare in AED. |
currency | string | Currency code. Always "AED". |
distance_km | number | Total delivery distance in kilometers. |
tracking_url | string | Public tracking URL. Share with customer to monitor delivery progress in real-time. |
created_at | string | ISO 8601 timestamp (UTC) when the delivery was created. |
Get Delivery Status
Retrieve the current status, driver location, and delivery details for an order.
Example response
{
"order_number": 20969271,
"order_id": "12345685",
"status": "in_transit",
"order_time": "2026-08-03T08:58:03+00:00",
"vehicle_type": "bike",
"fare": 10,
"distance": 1.67,
"driver": {
"name": "Slider hero 2",
"phone_number": "+971588496496",
"latitude": 24.33163521,
"longitude": 54.5171723,
"vehicle": "Car"
},
"tracking_url": "https://slider-app.com/t/90fp-hzv8.SYhReGPNVtD5"
}Response fields
| Field | Type | Description |
|---|---|---|
order_number | number | Internal order number assigned by Slider |
order_id | string | Your order reference ID from the creation request |
status | string | Current delivery status (see Status values below) |
order_time | string | ISO 8601 timestamp (UTC) of when delivery should/did start. Scheduled time if provided, otherwise order creation time. |
vehicle_type | string | Vehicle assigned: "bike" or "car" |
fare | number | Delivery fare in AED |
distance | number | Total delivery distance in kilometers |
driver | object | Driver information with name, phone_number,latitude, longitude, and vehicle. Null if no driver assigned yet. |
tracking_url | string | Public tracking URL for customer real-time updates |
Status values
searching_riderrider_assignedheading_to_pickupat_pickuppicked_upin_transitdeliveredreturn_trip_startedcancelled
Cancel Delivery
Cancel a delivery order. Only pending deliveries can be cancelled. Completed or already cancelled orders cannot be modified.
Example response
{
"order_number": 20969271,
"order_id": "12345685",
"status": "cancelled",
"cancelled_at": "2026-08-03T10:30:00+00:00"
}Webhooks
Instead of polling for status, register a webhook URL in your dashboard to receive real-time updates. Slider sends a POST request to your URL every time a delivery's status changes.
Webhook payload
{
"order_number": 20969271,
"order_id": "12345685",
"status": "rider_assigned",
"estimated_delivery_time": 15,
"tracking_link": "https://slider-app.com/t/4osd-9ary.lO_6-WOHpCmg",
"driver_info": {
"name": "Slider Driver",
"phone_number": "+971502012345",
"latitude": 24.33163521,
"longitude": 54.5171723,
"vehicle": "Car"
},
"timestamp": "2026-08-03T09:15:00+00:00"
}Webhook fields
| Field | Type | Description |
|---|---|---|
order_number | number | Internal order number assigned by Slider |
order_id | string | Your order reference ID from the creation request |
status | string | Current delivery status: searching_rider, rider_assigned, heading_to_pickup, at_pickup, picked_up, in_transit, delivered, return_trip_started, cancelled |
estimated_delivery_time | number | Estimated minutes until delivery (null if not applicable) |
tracking_link | string | Public tracking URL for customer real-time updates |
driver_info | object | Driver details: name, phone_number, latitude, longitude, vehicle. Null if no driver assigned. |
timestamp | string | ISO 8601 timestamp (UTC) when webhook was triggered |
Webhook events
Webhooks are sent for the following status changes:
| Event | Description |
|---|---|
rider_assigned | A rider has been assigned to the delivery |
heading_to_pickup | Rider is heading to pickup location |
at_pickup | Rider arrived at pickup location |
picked_up | Order picked up from location |
in_transit | Order in transit to dropoff location |
delivered | Order successfully delivered |
return_trip_started | Rider returning item to pickup (failed delivery) |
cancelled | Delivery cancelled |
2xx status within a few seconds. Queue any slow work on your side — Slider retries deliveries that do not acknowledge.Limits & Rules
| Rule | Limit |
|---|---|
| Bike maximum distance | 35 km — requests beyond this with "bike" are rejected. Use "car" or "any". |
| Car maximum distance | No fixed cap |
| Cash on delivery maximum | AED 350 per order |
| Card on delivery maximum | AED 500 per order |
| Scheduling minimum lead time | 30 minutes in the future |
| Wallet | Must hold sufficient balance to cover the fare at creation |
Error Codes
| Status Code | Error | Description |
|---|---|---|
400 | Bad Request | Missing required field or invalid format (e.g., bad coordinates) |
401 | Unauthorized | Invalid or missing X-Slider-Key header |
402 | Payment Required | Insufficient wallet balance |
403 | Forbidden | Customer account does not belong to your vendor or order does not belong to customer |
404 | Not Found | Delivery not found |
422 | Unprocessable Entity | Validation failed (e.g., COD amount exceeds limit, scheduled time too soon, service not available in area) |
500 | Internal Server Error | Unexpected server error |
Example error response
{
"success": false,
"message": "Order could not be processed due to insufficient wallet balance."
}