Skip to content
Developer API · v1

Slider API

API Version: v1•Last updated: October 13, 2026

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.

API Base URLs

EnvironmentBase URL
Sandboxhttps://api-sandbox.slider-app.com/v1
Productionhttps://api.slider-app.com/v1
All requests use HTTPS 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_here
Keep your key secret. Never expose it in client-side code or public repositories. All calls must be made from your server.

Quick Start Guide

Follow these steps to integrate Slider into your platform. Start by testing in the sandbox environment, then move to production.

Step 1: Create Sandbox Accounts

Before creating test deliveries, you must create sandbox customer accounts in the Partner Dashboard.

  1. Log in to the Partner Dashboard
  2. Navigate to the Customers page
  3. Click "Create Customer"
  4. Copy the generated Customer Account ID — this is your account_id for API requests
Important: The account_id is required for every delivery. If you support multiple businesses, create separate accounts for each one.

Step 2: Configure Webhooks (Optional)

Set up webhook callbacks to receive real-time delivery status updates.

  1. Go to Partner Applications
  2. Create or edit your application
  3. Provide your webhook URL for staging and production
  4. (Optional) Add authentication headers and tokens if needed. Leave empty if authentication is not required.

Step 3: Test in Sandbox

Use the Partner Dashboard to test the complete delivery workflow before integrating API calls.

  • Log in to the Partner Dashboard
  • Navigate to "Create Test Case"
  • Create a delivery and use your sandbox account_id
  • Accept the delivery as a test driver in the dashboard
  • Progress it through each status to test webhooks
  • Test cancellation with the "Cancel" button

Step 4: Integrate API Endpoints

Once sandbox testing is complete, integrate these key endpoints into your backend:

EndpointPurpose
POST /deliveries/fareCalculate delivery price before creating order
POST /deliveriesCreate a delivery order
GET /deliveries/{order_number}Track delivery status
DELETE /deliveries/{order_number}Cancel a delivery

Step 5: Request Production Access

Once your staging integration is complete and tested, request production access:

  1. Submit a Production Access request through the dashboard
  2. The Slider team reviews your integration
  3. Upon approval, production API keys and accounts are created
  4. Production accounts automatically appear in your dashboard
  5. Switch your integration to use production API endpoints

Create a Delivery

POST/deliveries

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

FieldTypeRequiredDescription
order_idstringrequiredUnique order ID from your client server. Used for reference and reconciliation. Will be included in webhook payloads.
account_idstringrequiredThe unique identifier of your client account in Slider. Found in your dashboard under Customer Accounts → Account ID.
display_order_idstringoptionalA 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_typestringrequiredVehicle for this delivery. Options: "bike", "car", or "any". See Vehicle Selection section.
driver_tipnumberoptionalTip amount in AED for the rider. Adds to fare and incentivizes faster delivery. Default: 0.
schedule_atstring / nulloptionalISO 8601 timestamp (UTC) for scheduled dispatch. Null or omitted = immediate. Minimum 30 minutes in the future. See Scheduling section.

Pickup object required

FieldTypeRequiredDescription
latitudenumberrequiredPickup latitude (decimal degrees)
longitudenumberrequiredPickup longitude (decimal degrees)
directionsstringoptionalText directions for the rider — building, floor, unit, landmark (maximum 255 characters).
contact_numberstringrequiredPhone number at pickup, E.164 format (e.g. +9715XXXXXXXX)

Dropoff object required

FieldTypeRequiredDescription
latitudenumberrequiredDrop-off latitude (decimal degrees)
longitudenumberrequiredDrop-off longitude (decimal degrees)
directionsstringoptionalText directions for the rider — building, floor, unit, landmark
contact_numberstringrequiredPhone number at drop-off, E.164 format

Calculate Fare

Get delivery pricing before creating an order. The fare is calculated based on the current route from Google Maps and real-time traffic conditions.

POST/deliveries/fare

How pricing works

Slider uses Google Maps to determine the optimal delivery route between pickup and dropoff. Pricing is calculated based on:

  • Distance & duration: Computed from the best route returned by Google Maps
  • Real-time traffic: Route and duration vary based on current traffic conditions
  • Dynamic pricing: The same delivery may have different fares at different times due to traffic variations
  • Vehicle type: Bike vs. car pricing, and vehicle availability (e.g., bike unavailable for long distances or intercity deliveries)
  • Account-based pricing: Eligible accounts receive special negotiated rates

Example: A delivery requesting pickup and dropoff coordinates will return different fares on Monday morning vs. Friday evening due to traffic differences affecting route duration.

Example request

# Calculate fare for pickup and dropoff coordinates
curl -X POST https://api.slider-app.com/v1/deliveries/fare \
  -H "X-Slider-Key: sk_live_your_api_key" \
  -H "Content-Type: application/json" \
  -d '{
    "account_id": "e13f3fe5-fec3-44a3-b1ba-2a5e03b37a0a",
    "pickup": {
      "latitude": 25.1491242,
      "longitude": 55.2461326
    },
    "delivery": {
      "latitude": 24.8970199,
      "longitude": 55.1596592
    }
  }'

Example response

{
  "distance_km": 48.05,
  "duration_minutes": 42,
  "vehicles": [
    {
      "vehicle_type": "bike",
      "is_available": false,
      "unavailable_reason": "Delivery distance exceeds allowed limit for bike.",
      "delivery_fee": null
    },
    {
      "vehicle_type": "car",
      "is_available": true,
      "unavailable_reason": null,
      "delivery_fee": 52.24
    }
  ]
}

Request fields

FieldTypeRequiredDescription
account_idstringrequiredThe unique identifier of your client account in Slider. Used to determine special pricing for eligible accounts.
pickup.latitudenumberrequiredPickup latitude (decimal degrees)
pickup.longitudenumberrequiredPickup longitude (decimal degrees)
delivery.latitudenumberrequiredDropoff latitude (decimal degrees)
delivery.longitudenumberrequiredDropoff longitude (decimal degrees)

Response fields

FieldTypeDescription
distance_kmnumberDistance in kilometers (Google Maps route)
duration_minutesnumberEstimated delivery time in minutes (based on current traffic)
vehiclesarrayArray of available vehicle options with pricing
vehicles[].vehicle_typestring"bike" or "car"
vehicles[].is_availablebooleanWhether this vehicle is available for the route. Bike may be unavailable if distance is too long or delivery is intercity.
vehicles[].unavailable_reasonstring / nullHuman-readable reason why vehicle is unavailable (null if available)
vehicles[].delivery_feenumber / nullDelivery cost in AED. Includes special account pricing if applicable. Null if vehicle unavailable.
Pricing note:Eligible accounts may receive special negotiated rates. The fare returned reflects your account's applicable pricing.

Vehicle Selection

The vehicle_type field controls which vehicle handles the delivery. Three options:

ValueDescription
"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.
Tip: If you don't have a strong preference, send "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"
FieldTypeRequiredDescription
schedule_atstring / nulloptionalISO 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.

FieldTypeRequiredDescription
typestringrequiredEither "cash" or "card"
amountnumberrequiredAmount the rider collects from the customer, in AED
Collection limits:
• 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"
}
FieldTypeDescription
order_numbernumberInternal order number assigned by Slider. Used for tracking.
order_idstringThe order ID you provided in the request. Used for reconciliation.
statusstringCurrent delivery status. Initial value: "searching_rider". Other values: "rider_assigned", "heading_to_pickup", "at_pickup", "picked_up", "in_transit", "delivered", "cancelled".
vehicle_typestringVehicle assigned for this delivery: "bike" or "car".
farenumberDelivery fare in AED.
currencystringCurrency code. Always "AED".
distance_kmnumberTotal delivery distance in kilometers.
tracking_urlstringPublic tracking URL. Share with customer to monitor delivery progress in real-time.
created_atstringISO 8601 timestamp (UTC) when the delivery was created.

Get Delivery Status

GET/deliveries/{order_number}

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

FieldTypeDescription
order_numbernumberInternal order number assigned by Slider
order_idstringYour order reference ID from the creation request
statusstringCurrent delivery status (see Status values below)
order_timestring ISO 8601 timestamp (UTC) of when delivery should/did start. Scheduled time if provided, otherwise order creation time.
vehicle_typestringVehicle assigned: "bike" or "car"
farenumberDelivery fare in AED
distancenumberTotal delivery distance in kilometers
driverobjectDriver information with name, phone_number,latitude, longitude, and vehicle. Null if no driver assigned yet.
tracking_urlstringPublic tracking URL for customer real-time updates

Status values

searching_riderrider_assignedheading_to_pickupat_pickuppicked_upin_transitdeliveredreturn_trip_startedcancelled

Cancel Delivery

DELETE/deliveries/{order_number}

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 authentication

Slider uses a token-based authentication mechanism for webhook requests. You can optionally secure your webhook endpoints with custom authentication.

FieldDescription
Webhook URLThe HTTPS endpoint where Slider will send webhook notifications. Required.
Token (Optional)A secret token used for authentication. If provided, Slider will include it in the specified header. Can be any string value.
Token HeaderThe HTTP header name where Slider will send your token. Common examples: Authorization, X-API-Key,X-Webhook-Token. Only used if token is provided.
Authentication is optional. If you do not require authentication, provide only the webhook URL. Slider will send requests without authentication headers. If you need authentication, provide both the token and the header name where it should be sent.

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

FieldTypeDescription
order_numbernumberInternal order number assigned by Slider
order_idstringYour order reference ID from the creation request
statusstringCurrent delivery status: searching_rider, rider_assigned, heading_to_pickup, at_pickup, picked_up, in_transit, delivered, return_trip_started, cancelled
estimated_delivery_timenumberEstimated minutes until delivery (null if not applicable)
tracking_linkstringPublic tracking URL for customer real-time updates
driver_infoobjectDriver details: name, phone_number, latitude, longitude, vehicle. Null if no driver assigned.
timestampstringISO 8601 timestamp (UTC) when webhook was triggered

Webhook events

Webhooks are sent for the following status changes:

EventDescription
rider_assignedA rider has been assigned to the delivery
heading_to_pickupRider is heading to pickup location
at_pickupRider arrived at pickup location
picked_upOrder picked up from location
in_transitOrder in transit to dropoff location
deliveredOrder successfully delivered
return_trip_startedRider returning item to pickup (failed delivery)
cancelledDelivery cancelled
Respond quickly. Return a 2xx status within a few seconds. Queue any slow work on your side — Slider retries deliveries that do not acknowledge.

Limits & Rules

RuleLimit
Bike maximum distance35 km — requests beyond this with "bike" are rejected. Use "car" or "any".
Car maximum distanceNo fixed cap
Cash on delivery maximumAED 350 per order
Card on delivery maximumAED 500 per order
Scheduling minimum lead time30 minutes in the future
WalletMust hold sufficient balance to cover the fare at creation

Error Codes

The Slider API uses standard HTTP status codes and structured JSON error responses. All error responses include an error code and a unique request ID to help identify and troubleshoot failed requests.

Status CodeErrorError CodeDescription
400Bad RequestMISSING_ACCOUNT_IDRequired account information is missing.
401UnauthorizedMISSING_API_KEY
INVALID_API_KEY
ACCOUNT_VENDOR_MISMATCH
Missing or invalid X-Slider-Key, or account_id does not belong to the authenticated integration.
402Payment RequiredDELIVERY_NOT_AVAILABLEDelivery cannot be processed, for example due to insufficient wallet balance or delivery restrictions.
403ForbiddenUNAUTHORIZED_CUSTOMER_ACCOUNT
UNAUTHORIZED_INTEGRATION
Customer account or integration is not authorized to perform the requested operation.
404Not FoundORDER_NOT_FOUND
CUSTOMER_NOT_FOUND
INVALID_CUSTOMER_ACCOUNT
The requested delivery or customer account could not be found.
409ConflictDUPLICATE_ORDER_IDA delivery with the provided partner order ID has already been processed.
422Unprocessable EntityVALIDATION_ERROR
COD_LIMIT_EXCEEDED
INVALID_DELIVERY_LOCATION
PICKUP_ZONE_NOT_AVAILABLE
DELIVERY_CREATION_FAILED
Request validation failed, such as exceeding field length, invalid coordinates, COD amount exceeding limits, invalid schedule time, or delivery location restrictions.
500Internal Server ErrorINTERNAL_SERVER_ERRORAn unexpected error occurred while processing the request.
502Bad GatewayDELIVERY_CREATION_FAILEDThe delivery creation result could not be confirmed. Check the delivery status before retrying.
503Service UnavailableSERVICE_UNAVAILABLEThe delivery service is temporarily unavailable. Check the delivery status before retrying.

Error Response Structure

Error responses follow a consistent JSON structure. The errors field is optional and is included when detailed field-level validation errors are available.

FieldTypeDescription
successbooleanAlways false when the request fails.
messagestringHuman-readable description of the error.
error_codestringMachine-readable error identifier.
errorsobject (optional)Detailed validation errors grouped by field name.
request_idstringUnique identifier for troubleshooting and support.

Example: Validation Error (422)

{
  "success": false,
  "message": "The dropoff.directions field must not be greater than 255 characters.",
  "error_code": "VALIDATION_ERROR",
  "errors": {
    "dropoff.directions": [
      "The dropoff.directions field must not be greater than 255 characters."
    ]
  },
  "request_id": "b7a2d9c1-4e65-4b8a-9f22-1a62aef01234"
}

Example: Authentication Error (401)

{
  "success": false,
  "message": "Unauthorized: Invalid X-Slider-Key",
  "error_code": "INVALID_API_KEY",
  "request_id": "b7a2d9c1-4e65-4b8a-9f22-1a62aef01234"
}

Example: Internal Server Error (500)

{
  "success": false,
  "message": "Something went wrong while creating delivery",
  "error_code": "INTERNAL_SERVER_ERROR",
  "request_id": "b7a2d9c1-4e65-4b8a-9f22-1a62aef01234"
}

Error Handling Recommendations

  • 400 / 422: Correct the request data before retrying.
  • 401 / 403: Verify API credentials and account permissions.
  • 402: Resolve the reported payment or delivery restriction.
  • 409: Check whether the delivery already exists before submitting another request.
  • 500 / 502 / 503: The delivery creation status may be uncertain. Verify whether the delivery was created before retrying with the same partner order ID.
  • Support: Include the request_id and partner order ID when reporting an issue.
Slider Developer API · v1 · For support contact info@slider-app.com · Back to the developer portal