Overview
HLD (Hyperlocal Delivery) is a hyperlocal, on-demand delivery service by AL Services India. Deliveries are completed within 120 minutes. This document covers all client-facing APIs for order creation, real-time tracking, order management, and cancellation.
Base URL
Available Endpoints
POST Create Order
Place a new HLD order with pickup & delivery details
GET Track Order
Real-time order tracking with executive location (Public)
GET Order List
Paginated list of all client orders
POST Cancel Order
Cancel an HLD order before executive assignment
POST Check Serviceability
Verify HLD service availability with pricing & ETA
GET Assignment Status
Check executive assignment status for an order
Authentication
All client APIs (except public tracking) require a Bearer Token in the request header. Contact AL Services team to get your API credentials.
Authorization: Bearer {your_api_token} Content-Type: application/json Accept: application/json
Create a new HLD (Hyperlocal Delivery) order. Delivery guaranteed within 120 minutes. The system will automatically find and assign the nearest available executive.
Duplicate Check: Orders with same
customer_order_no within 5 minutes are rejected.
Request Parameters
| Field | Type | Required | Description |
|---|---|---|---|
| Order Information | |||
customer_order_no | string | Required | Your unique order reference number (max 100 chars) |
product_name | string | Required | Name/description of the product (max 255 chars) |
product_value | numeric | Required | Declared product value in INR (min: 1) |
cod_value | numeric | Optional | Cash on delivery amount (min: 0) |
payment_mode | string | Optional | Payment mode: COD, Prepaid, or Partial |
| Contact Details | |||
contact_person | string | Required | Recipient name (max 100 chars) |
contact_number | string | Required | Recipient phone number (max 15 chars) |
special_instructions | string | Optional | Any special handling instructions (max 500 chars) |
| Pickup Location | |||
pickup_address | string | Required | Full pickup address (max 500 chars) |
pickup_pincode | string | Optional | Pickup area pincode (max 6 chars) |
pickup_lat | numeric | Required | Pickup latitude (-90 to 90) |
pickup_lng | numeric | Required | Pickup longitude (-180 to 180) |
| Delivery Location | |||
delivery_address | string | Required | Full delivery address (max 500 chars) |
delivery_pincode | string | Optional | Delivery area pincode (max 6 chars) |
delivery_lat | numeric | Required | Delivery latitude (-90 to 90) |
delivery_lng | numeric | Required | Delivery longitude (-180 to 180) |
| Delivery Preferences | |||
expected_delivery_minutes | integer | Optional | Expected delivery time in minutes (15 - 120) |
priority_level | integer | Optional | 1 = Normal, 2 = High, 3 = Urgent |
requires_signature | boolean | Optional | Whether delivery requires customer signature |
delivery_preferences | json | Optional | Additional delivery preferences as JSON |
| Package Dimensions | |||
length | numeric | Optional | Package length in cm |
width | numeric | Optional | Package width in cm |
height | numeric | Optional | Package height in cm |
weight | numeric | Optional | Package weight in kg |
Sample Request
{
"customer_order_no": "ORD-2026-00456",
"product_name": "Gold Necklace Set",
"product_value": 45000.00,
"cod_value": 0,
"payment_mode": "Prepaid",
"contact_person": "Priya Sharma",
"contact_number": "9876543210",
"special_instructions": "Handle with care - fragile jewelry box",
"pickup_address": "Zaveri Bazaar, 42 Kalbadevi Road, Mumbai 400002",
"pickup_pincode": "400002",
"pickup_lat": 18.9488,
"pickup_lng": 72.8310,
"delivery_address": "Bandra West, Hill Road, Mumbai 400050",
"delivery_pincode": "400050",
"delivery_lat": 19.0596,
"delivery_lng": 72.8295,
"expected_delivery_minutes": 45,
"priority_level": 2,
"requires_signature": true,
"weight": 0.5,
"length": 20,
"width": 15,
"height": 8
}
Success Response 201 Created
{
"success": true,
"message": "HLD order created successfully",
"data": {
"order": {
"id": "HLD2026040412345",
"customer_order_no": "ORD-2026-00456",
"service_type": "HLD",
"status": 1,
"status_text": "Order Placed",
"is_hld_order": true,
"pickup_address": "Zaveri Bazaar, 42 Kalbadevi Road, Mumbai 400002",
"pickup_pincode": "400002",
"pickup_lat": 18.9488,
"pickup_lng": 72.8310,
"delivery_address": "Bandra West, Hill Road, Mumbai 400050",
"delivery_pincode": "400050",
"delivery_lat": 19.0596,
"delivery_lng": 72.8295,
"product_name": "Gold Necklace Set",
"product_value": 45000.00,
"cod_value": 0.00,
"contact_person": "Priya Sharma",
"contact_number": "9876543210",
"expected_delivery_minutes": 45,
"priority_level": 2,
"priority_text": "High",
"tracking_token": "HLD67890ABCDEF",
"pickup_otp": "4521",
"delivery_otp": "7893",
"created_at": "2026-04-04T10:30:00Z",
"hld_assignment_deadline": "2026-04-04T10:35:00Z"
},
"tracking": {
"token": "HLD67890ABCDEF",
"url": "https://delivery.alfast.in/track/hld/HLD67890ABCDEF",
"short_url": "https://delivery.alfast.in/track/hld/HLD67890ABCDEF",
"live_tracking_enabled": true
},
"assignment": {
"status": "finding_executive",
"executive_id": null,
"assigned_at": null,
"deadline": "2026-04-04T10:35:00Z",
"note": "Searching for available executive"
}
}
}
Error Responses
422 - Validation Error
{
"success": false,
"message": "Validation failed",
"errors": {
"product_value": ["The product value field is required."],
"pickup_lat": ["Invalid latitude coordinate."]
}
}
400 - Service Not Available
{
"success": false,
"message": "HLD service not available",
"error_code": "SERVICE_NOT_AVAILABLE"
}
400 - Duplicate Order
{
"success": false,
"message": "Duplicate order detected - same order created within last 5 minutes",
"error_code": "DUPLICATE_ORDER"
}
Get real-time order tracking information including executive location. This is a public endpoint - no authentication required. Share the tracking URL with your customers.
Example: https://delivery.alfast.in/api/v1/track/HLD67890ABCDEF
URL Parameters
| Parameter | Type | Description |
|---|---|---|
trackingToken | string | Unique tracking token received in create order response |
Success Response 200 OK
{
"success": true,
"data": {
"order_id": "HLD2026040412345",
"status": 25,
"status_text": "On the Way",
"pickup_address": "Zaveri Bazaar, 42 Kalbadevi Road, Mumbai",
"delivery_address": "Bandra West, Hill Road, Mumbai",
"expected_delivery_minutes": 45,
"delivery_eta": "2026-04-04T11:15:00Z",
"delivery_time_remaining": "12 minutes",
"created_at": "2026-04-04T10:30:00Z",
"assigned_at": "2026-04-04T10:33:00Z",
"pickup_completed_at": "2026-04-04T10:48:00Z",
"completed_at": null,
"executive": {
"name": "Rajesh Kumar",
"mobile": "9876543212",
"current_location": {
"lat": 19.0176,
"lng": 72.8301
}
},
"real_time_updates": [
{
"status": 1,
"timestamp": "2026-04-04T10:30:00Z",
"location": { "lat": 18.9488, "lng": 72.8310 }
},
{
"status": 2,
"timestamp": "2026-04-04T10:33:00Z",
"location": { "lat": 18.9488, "lng": 72.8310 }
},
{
"status": 3,
"timestamp": "2026-04-04T10:48:00Z",
"location": { "lat": 18.9492, "lng": 72.8315 }
}
]
}
}
Error Response 404 Not Found
{
"success": false,
"message": "Invalid tracking token"
}
For live tracking, subscribe to the Pusher channel. See WebSocket section below.
Get a paginated list of all orders placed by the authenticated client. Results are sorted by most recent first.
Also available at: https://delivery.alfast.in/api/v1/web-client/orders?per_page=10
Query Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
per_page | integer | 3 | Number of orders per page |
page | integer | 1 | Page number for pagination |
Success Response 200 OK
{
"data": [
{
"id": "HLD2026040412345",
"client_name": "Sunrise Jewellers",
"customer_order_no": "ORD-2026-00456",
"product_name": "Gold Necklace Set",
"order_type": 1,
"pickup": "Zaveri Bazaar, Mumbai",
"pickup_address": "Zaveri Bazaar, 42 Kalbadevi Road, Mumbai",
"pickup_pincode": "400002",
"delivery": "Bandra West, Mumbai",
"delivery_address": "Bandra West, Hill Road, Mumbai",
"delivery_pincode": "400050",
"status": "Delivered",
"product_value": 45000.00,
"cod_value": 0.00,
"length": 20.00,
"width": 15.00,
"height": 8.00,
"weight": 0.50,
"assigned_to": "Rajesh Kumar",
"product_payment_type": "Prepaid",
"pickup_type": "Self",
"contact_person": "Priya Sharma",
"created_at": "04 Apr, 2026 10:30 am",
"rating": {
"rating_service": 4.5,
"review_service": "Excellent delivery",
"rating_executive": 5.0,
"review_executive": "Very professional"
}
}
],
"links": {
"first": "https://delivery.alfast.in/api/v1/android-client/orders?page=1",
"last": "https://delivery.alfast.in/api/v1/android-client/orders?page=5",
"prev": null,
"next": "https://delivery.alfast.in/api/v1/android-client/orders?page=2"
},
"meta": {
"current_page": 1,
"from": 1,
"last_page": 5,
"per_page": 10,
"to": 10,
"total": 48
}
}
Cancel an HLD order. Orders can only be cancelled before executive assignment.
Request Parameters
| Field | Type | Required | Description |
|---|---|---|---|
order_id | string | Required | HLD order ID to cancel |
reason | string | Required | Cancellation reason (max 500 chars) |
Sample Request
{
"order_id": "HLD2026040412345",
"reason": "Customer changed delivery address"
}
Success Response 200 OK
{
"success": true,
"message": "Order cancelled successfully",
"data": {
"order_id": "HLD2026040412345",
"status": 17,
"status_text": "Cancelled",
"cancelled_at": "2026-04-04T10:32:00Z",
"reason": "Customer changed delivery address"
}
}
Error Response 400 - Cancellation Not Allowed
{
"success": false,
"message": "Order cannot be cancelled after executive assignment",
"error_code": "CANCELLATION_NOT_ALLOWED",
"data": {
"current_status": 2,
"status_text": "Executive Assigned",
"hint": "Order can only be cancelled before executive is assigned"
}
}
Check if HLD service is available between pickup and delivery locations. Returns pricing, ETA, and nearby executive availability. Recommended to call before creating an order.
Max Distance: 15 km between pickup and delivery
Request Parameters
| Field | Type | Required | Description |
|---|---|---|---|
pickup_lat | numeric | Required* | Pickup latitude (required if no pickup_pincode) |
pickup_lng | numeric | Required* | Pickup longitude (required if no pickup_pincode) |
pickup_pincode | string | Required* | 6-digit pincode (required if no lat/lng) |
delivery_lat | numeric | Required* | Delivery latitude (required if no delivery_pincode) |
delivery_lng | numeric | Required* | Delivery longitude (required if no delivery_pincode) |
delivery_pincode | string | Required* | 6-digit pincode (required if no lat/lng) |
product_value | numeric | Optional | Product value for pricing calculation |
weight | numeric | Optional | Package weight in kg |
priority_level | integer | Optional | 1-3 priority level |
* Either lat/lng OR pincode is required for each location
Sample Request
{
"pickup_lat": 18.9488,
"pickup_lng": 72.8310,
"delivery_lat": 19.0596,
"delivery_lng": 72.8295,
"product_value": 45000,
"weight": 0.5
}
Order Status Codes
Main Order Flow
| Code | Status | Description |
|---|---|---|
| 1 | OrderPlaced | Order placed by client |
| 13 | FindingExecutive | Finding nearby executive, pending acceptance |
| 2 | ExecutiveAssigned | Executive accepted the order |
| 24 | ExecutiveComing | Executive on way to pickup |
| 3 | PickedUp | Order picked up |
| 4 | Delivered | Delivered successfully (Prepaid) |
| 9 | PaymentReceived | Delivered + COD payment collected |
| 11 | Completed | Order fully completed (Final) |
Cancellation Statuses
| Code | Status | Description |
|---|---|---|
| 17 | CustomerCancelled | Cancelled by customer |
| 7 | SystemCancelled | Cancelled by system (timeout) |
Exception Statuses
| Code | Status | Description |
|---|---|---|
| 10 | ExecutiveRejected | Executive rejected, reassigning |
WebSocket - Real-Time Events
For live tracking updates, subscribe to Pusher WebSocket channels using the order's tracking token.
hld.order.{tracking_token}Example:
hld.order.HLD67890ABCDEF
Event: executive.location_updated
Fired when executive's GPS location changes during delivery.
{
"order_id": "HLD2026040412345",
"executive_id": "EXC-001",
"location": {
"lat": 19.0176,
"lng": 72.8301
},
"timestamp": "2026-04-04T11:02:30Z"
}
Event: hld.order.status_changed
Fired when order status transitions (e.g., Picked Up, On the Way, Delivered).
{
"order": {
"id": "HLD2026040412345",
"status": 25,
"status_text": "On the Way"
},
"tracking_entry": {
"status": 25,
"timestamp": "2026-04-04T10:50:00Z"
},
"notification": "Your order is on the way!",
"timestamp": "2026-04-04T10:50:00Z"
}
Error Codes Reference
| HTTP Code | Error Code | Description |
|---|---|---|
| 401 | UNAUTHENTICATED | Invalid or missing Bearer token |
| 403 | ORDER_ACCESS_DENIED | Order does not belong to this client |
| 404 | NOT_FOUND | Order or tracking token not found |
| 422 | VALIDATION_FAILED | Request validation failed - check errors object |
| 400 | SERVICE_NOT_AVAILABLE | HLD service not available at given location |
| 400 | DUPLICATE_ORDER | Same customer_order_no submitted within 5 minutes |
| 400 | CANCELLATION_NOT_ALLOWED | Order cannot be cancelled after executive assignment |
| 400 | NOT_HLD_ORDER | Order is not an HLD type order |
| 500 | SERVER_ERROR | Internal server error - contact support |