Introduction
Base URL
https://rest.lalamove.com
https://rest.br.lalamove.com
https://sandbox-rest.lalamove.com
Lalamove API allows you to integrate our delivery services into your business workflow.
Lalamove provides a collection of essential, lightweight and flexible endpoints allowing you to automate your fulfilment logistics workflow quickly and easily.
It normally takes a developer a week or two to complete an integration ready for our Go-Live Process.
Authentication
Lalamove API makes use of HMAC (SHA256) as the authentication mechanism.
You will be provided an api KEY
, and a SECRET
for generating a HMAC hash (also known as a SIGNATURE
).
Sandbox & Production API keys
All API requests must be made over HTTPS. Calls made over plain HTTP will fail.
Signature
Example in JavaScript
const SECRET = 'MCwCAQACBQDDym2lAgMBAAECBDHB';
const time = new Date().getTime().toString(); // => `1545880607433`
const method = 'POST';
const path = '/v2/quotations';
const body = JSON.stringify({...}); // => the whole body for '/v2/quotations'
const rawSignature = `${time}\r\n${method}\r\n${path}\r\n\r\n${body}`;
// => '1546222219293\r\nPOST\r\n/v2/quotations\r\n\r\n{\n \"scheduleAt\": \"2018-12-31T14:30:00.00Z\",\n \"serviceType\": \"MOTORCYCLE\",\n \"requesterContact\": { \"name\": \"Peter Pan\", \"phone\": \"232\" },\n \"stops\": [\n {\n \"location\": { \"lat\": \"-6.255431000000001\", \"lng\": \"106.60114290000001\" },\n \"addresses\": {\n \"en_ID\": {\n \"displayString\":\n \"Jl. Perum Dasana Indah No.SD 3/ 17-18, RT.3/RW.1, Bojong Nangka, Klp. Dua, Tangerang, Banten 15810, Indonesia\",\n \"country\": \"ID\"\n }\n }\n },\n {\n \"location\": { \"lat\": \"-6.404722800000001\", \"lng\": \"106.81902130000003\" },\n \"addresses\": {\n \"en_ID\": {\n \"displayString\": \"Jl. Kartini, Ruko No. 1E, Depok, Pancoran MAS, Kota Depok, Jawa Barat 16431, Indonesia\",\n \"country\": \"ID\"\n }\n }\n }\n ],\n \"deliveries\": [\n {\n \"toStop\": 1,\n \"toContact\": {\n \"name\": \"mm\",\n \"phone\": \"9999999\"\n }\n }\n ]\n}\n'
const SIGNATURE = CryptoJS.HmacSHA256(rawSignature, SECRET).toString();
// => '5133946c6a0ba25932cc18fa3aa1b5c3dfa2c7f99de0f8599b28c2da88ed9d42'
SIGNATURE = HmacSHA256ToHex(<TIMESTAMP>\r\n<HTTP_VERB>\r\n<PATH>\r\n\r\n<BODY>, <SECRET>)
SIGNATURE
is in lowercase hex (base 16) encoding.
SECRET |
Your API secret |
TIMESTAMP |
Unix timestamp in milliseconds eg. 1545880607433 |
HTTP_VERB |
HTTP verb (GET , POST , PUT , DELETE ) of the specific API call |
PATH |
The pathname of the specific API call including version. eg. /v2/quotations |
BODY |
The request body in JSON string |
Useful links
- Examples of creating base64 hashes using HMAC SHA256 in different languages
- SHA256 HMAC in different languages (both hex & base64 encoding)
Headers
Example in JavaScript (cont.)
const API_KEY = '914c9e52e6414d9494e299708d176a41'
const TOKEN = `${API_KEY}:${time}:${SIGNATURE}`
// => '914c9e52e6414d9494e299708d176a41:1545880607433:5133946c6a0ba25932cc18fa3aa1b5c3dfa2c7f99de0f8599b28c2da88ed9d42'
Authorization: hmac <TOKEN>
X-LLM-Country: <YOUR_COUNTRY_AND_CITY> //except for Singapore (SG) and Hong Kong (HK)
X-Request-ID: <NONCE>
Example
Authorization: hmac 914c9e52e6414d9494e299708d176a41:1545880607433:5133946c6a0ba25932cc18fa3aa1b5c3dfa2c7f99de0f8599b28c2da88ed9d42
X-LLM-Country: TH_BKK
X-Request-ID: 211b9d85-a2cc-476f-8675-b61ec923cc27
Authorization
TOKEN = <KEY>:<TIMESTAMP>:<SIGNATURE>
KEY |
Your API key |
TIMESTAMP |
MUST be identical to TIMESTAMP in SIGNATURE |
SIGNATURE |
As described in Signature in lowercase hex (base 16) |
X-LLM-Country
Please note which country/region/city are you trying to place an order:
- Hong Kong & Singapore - please state the value in ISO 3166-1 alpha-2 format.
- Countries/regions/cities not listed in (1), please specify in UN/LOCODE format. For example, Jakarta wil be listed as
ID_JKT
. See Available Countries/Regions for details.
X-Request-ID
Provide a Nonce to be used as an unique Request ID. It helps us with preventing replay attacks.
Order Flow
Click the below diagram to enlarge.
Order Status
Dotted lines in the following diagram indicates possible status transition.
ASSIGNING_DRIVER |
Trying to match shipment with a driver. |
ON_GOING |
A driver has accepted the order. |
PICKED_UP |
The driver has picked up the order. |
COMPLETED |
The order has been delivered sucessfully and transaction has concluded. |
CANCELED |
User has canceled the order. |
REJECTED |
The order was matched and rejected twice by two drivers in a row, see Order Flow. |
EXPIRED |
The order expired as no drivers accepted the order. |
Immediate vs Scheduled
Immediate Order
{
//"scheduleAt": "2020-09-01T14:30:00.00Z",
"serviceType": "MOTORCYCLE",
"stops": [<Waypoint>],
"deliveries": [<DeliveryInfo>],
"requesterContact": <Contact>,
"specialRequests": ["COD", "HELP_BUY", "LALABAG"]
}
Scheduled Order
{
"scheduleAt": "2020-09-01T14:30:00.00Z",
"serviceType": "MOTORCYCLE",
"stops": [<Waypoint>],
"deliveries": [<DeliveryInfo>],
"requesterContact": <Contact>,
"specialRequests": ["COD", "HELP_BUY", "LALABAG"]
}
Depending on your delivery needs, you can place an immediate order or a schedule order.
- Immediate order (
scheduleAt
was skipped at the time when placing the order.)
Driver will go to the pick-up point once he accepts the order. - Scheduled order (
scheduleAt
was specified at the time when placing the order.)
Driver will arrive at the pick-up point by the time specified inscheduleAt
.
User Cancellation
An order can only be cancelled either:
- An order with the status
ASSIGNING_DRIVER
; or - An order is matched less than 5 minutes - order status changed from
ASSIGNING_DRIVER
toON_GOING
less than 5 minutes ago. This holds regardless of the actualscheduleAt
.
Driver Rejection
Orders can be rejected after they are matched to a driver. When this happens, the order status will revert from ON_GOING
/ PICKED_UP
to ASSIGNING_DRIVER
. Lalamove system will try to match it again with a different driver. If an order has been rejected for the second time, the order status will be revised as REJECTED
. Lalamove system will no longer broadcast this order to the driver pool - the system will stop matching a driver for this order.
Expired Orders
An order will be expired if it is not accepted by the driver. Depending the order type (immediate vs scheuduled) order expiry time varies.
- Immediate order - 10 minutes after the order is placed
- Scheduled order - 10 minutes after the
scheduleAt
time
Available Countries/Regions
Lalamove API is currently available for the following countries and regions.
Countries or Regions | ISO 3166-1 alpha-2 | With UN/LOCODE | Locale Keys |
---|---|---|---|
๐ง๐ทBrasil | BR |
BR_SAO ,BR_RIO |
en_BR ,pt_BR |
๐ญ๐ฐ Hong Kong | HK |
HK_HKG |
en_HK , zh_HK |
๐ฎ๐ฉ Indonesia | ID |
ID_JKT |
en_ID , id_ID |
๐ฒ๐พ Malaysia | MY |
MY_KUL |
en_MY , ms_MY |
๐ฒ๐ฝ Mexico | MX |
MX_MEX |
en_MX , es_MX |
๐ต๐ญ Philippines | PH |
PH_MNL , PH_CEB |
en_PH |
๐ธ๐ฌ Singapore | SG |
SG_SIN |
en_SG |
๐น๐ผ Taiwan | TW |
TW_TPE |
zh_TW |
๐น๐ญ Thailand | TH |
TH_BKK , TH_PYX |
th_TH , en_TH |
๐ป๐ณ Viet Nam | VN |
VN_SGN , VN_HAN |
en_VN , vi_VN |
Phone Validation
The following table shows how phone numbers are validated for each country or region.
Countries or Regions | Sample | Regex |
---|---|---|
๐ง๐ท Brasil | 11912345678 | /^[0-9]{2}[9]{1}[0-9]{8}$/ |
๐ญ๐ฐ Hong Kong | 37013701 | /^((?!999)([2-9][0-9]{7}))$/ |
๐ฎ๐ฉ Indonesia | 0212145678 | /^0(8\\d{8,11}|21\\d{7,8})$/ |
๐ฒ๐พ Malaysia | 0376886555 | /^0(1[1,5]?\\d{8}|[4-7,9]\\d{7}|8[2-9]\\d{6}|3\\d{8})$/ |
๐ฒ๐ฝ Mexico | 7178277017 | /^([+]+52?)?(\d{3}?){2}\d{4}$/ |
๐ต๐ญ Philippines | 09051234567 | /^09[0-9]{9}$|^0?2[0-9]{7}$|^0?32[0-9]{7}$/ |
๐ธ๐ฌ Singapore | 81234567 | /^[3689]{1}[0-9]{7}$/ |
๐น๐ผ Taiwan | 0912345678 | /^0([1-8]{1}[0-9]{7,8}|9[0-9]{8})$/ |
๐น๐ญ Thailand | 0812345678 | /^(0[0-9]{8,9}|[0-9]{4})$/ |
๐ป๐ณ Viet Nam | 912345678 | /^0?(2|[35789])[0-9]{8}$|^02[48][0-9]{8}$/ |
Service Types
Lalamove provides a range of vehicles to cater different needs at different cities.
๐ง๐ท Brasil
City | Code | Pricing / Preรงos |
---|---|---|
Rio de Janeiro | BR_RIO |
https://www.lalamove.com/brasil/rio-de-janeiro/precos |
Sรฃo Paulo | BR_SAO |
https://www.lalamove.com/brasil/sao-paulo/precos |
Service Types
Key | Description | Shipment restrictions | BR_RIO |
BR_SAO |
---|---|---|---|---|
LALAGO |
LALAGO | 35 ร 40 ร 30 cm, 20kg | โ | โ |
LALAPRO |
LALAPRO | 40 ร 40 ร 35 cm, 20kg | โ | โ |
MPV |
MPV/SUV | 125 ร 80 ร 60 cm, 200kg | โ | โ |
UV_FIORINO |
UV / Utilitรกrio | 188 ร 133 ร 108 cm, 500kg | โ | โ |
TRUCK330 |
Truck / Carreto | 300 ร 180 ร 200 cm, 1,500kg (1.5Ton) | โ | โ |
Special Requests
Description | LALAGO |
LALAPRO |
MPV |
UV_FIORINO |
TRUCK330 |
|
---|---|---|---|---|---|---|
1HELPER_TIER1 |
Driver Helper / Ajuda do Motorista (Tier 1) | โ | โ | โ | ||
1HELPER_TIER2 |
Driver Helper / Ajuda do Motorista (Tier 2) | โ | โ | โ | ||
1HELPER_TIER3 |
Driver Helper / Ajuda do Motorista (Tier 3) | โ | โ | โ | ||
ADDITIONAL_ASSISTANT_TIER1 |
1 helper (Tier 1) | โ | ||||
ADDITIONAL_ASSISTANT_TIER2 |
1 helper (Tier 2) | โ | ||||
ADDITIONAL_ASSISTANT_TIER1 |
1 helper (Tier 3) | โ | ||||
INSULATED_BAG |
Insulated Bag | โ | โ | |||
UV_VAN |
Van / Contrate uma van | โ |
๐ญ๐ฐ Hong Kong
City | Code | Pricing |
---|---|---|
Hong Kong | HK_HKG |
https://www.lalamove.com/hongkong/en/pricing |
Service Types
Key | Description | Shipment restrictions |
---|---|---|
WALKER |
Courier | 40 ร 40 ร 40 cm, 10 kg |
MOTORCYCLE |
Motorcycle | 40 ร 40 ร 40 cm, 10 kg |
VAN |
Van | 182 ร 121 ร 121 cm, 700 - 800 kg |
TRUCK550 |
5.5 Ton | 450 ร 195 ร 195 cm, 800 - 1,200 kg |
Special Requests
Description | WALKER |
MOTORCYCLE |
VAN |
TRUCK550 |
|
---|---|---|---|---|---|
LALABAG |
Thermal Bag | โ |
๐ฎ๐ฉ Indonesia
City | Code | Pricing / Harga |
---|---|---|
Jakarta | ID_JKT |
https://www.lalamove.com/indonesia/jakarta/en/pricing |
Service Types
Key | Description | Shipment restrictions |
---|---|---|
MOTORCYCLE |
Motor | 40 x 40 x 40 cm, 20 kg |
MPV |
Mobil | 175 x 100 x 85 cm, 350 kg |
VAN |
Van | 210 x 150 x 120 cm, 600 kg |
TRUCK175 |
Pickup Bak | 200 x 160 x 120 cm, 800 kg |
Special Requests
Description | MOTORCYCLE |
MPV |
VAN |
TRUCK175 |
|
---|---|---|---|---|---|
PURCHASE_SERVICE |
Purchase Service < 300K Rp | โ | |||
DOOR2DOOR |
Door to Door Delivery | โ | โ | โ | |
EXTRA_HELPER |
Door to Door Delivery with 1 Helper | โ | |||
EXTRA_HELPER_TRUCK175 |
Door to Door Delivery with 1 Helper | โ | |||
ROUNDTRIP_MOTORYCYCLE |
Roundtrip | โ | |||
LALABAG |
Lalabag | โ |
๐ฒ๐พ Malaysia
City | Code | Pricing / Harga |
---|---|---|
Kuala Lumpur | MY_KUL |
https://www.lalamove.com/malaysia/kualalumpur/en/pricing |
Service Types
Key | Description | Shipment restrictions |
---|---|---|
MOTORCYCLE |
Motorcycle / Motosikal | 36 x 36 x 36 cm, 10 kg |
CAR |
Car / Kereta | 50 x 50 x 50 cm, 40 kg |
VAN |
Van | 170 x 115 x 115 cm, 500 kg |
4X4 |
4X4 | 120 x 91 x 91 cm, 250 kg |
TRUCK330 |
1-Ton Lorry / Lori 1-Tan | 275 x 152 x 152 cmใป1,000 kg |
TRUCK550 |
3-Ton Lorry / Lori 3-Tan | 427 x 220 x 213 cmใป3,000 kg |
Special Requests
Description | MOTORCYCLE |
CAR |
TRUCK330 |
TRUCK550 |
|
---|---|---|---|---|---|
PURCHASE_SERVICE |
Buy4U | โ | |||
LALABAG |
Lalabag | โ | |||
DOOR2DOOR |
Door to Door delivery | โ | |||
DOOR2DOOR_TRUCK330 |
Moving Services by Driver | โ | |||
DOOR2DOOR_TRUCK550 |
Moving Services by Driver | โ | |||
DOOR2DOOR_1HELPER_TRUCK330 |
Moving Services by Driver + 1 Helper | โ | |||
DOOR2DOOR_1HELPER_TRUCK550 |
Moving Services by Driver + 1 Helper | โ | |||
DOOR2DOOR_2HELPER_TRUCK330 |
Moving Services by Driver + 2 Helpers | โ | |||
DOOR2DOOR_2HELPER_TRUCK550 |
Moving Services by Driver + 2 Helpers | โ | |||
RETURNTRIP |
Return Trip | โ | โ | ||
LOADING_SERVICE |
Loading Service | โ | โ |
๐ฒ๐ฝ Mexico
City | Code | Pricing Details |
---|---|---|
Mexico City / Ciudad de Mรฉxico | MX_MEX | https://www.lalamove.com/mexico/tarifas |
Service Types
Key | Description | Shipment restrictions |
---|---|---|
MOTORCYCLE |
Motorcycle/Moto | 40 ร 40 ร 35 cm, 20 kg |
MPV |
MPV/SUV | 125 x 80 x 60 cm, 200 kg |
UV_FIORINO |
Minivan/Camioneta | 188 x 133 x 108 cm, 500 kg |
TRUCK330 |
Truck/Camiรณn | 200 x 200 x 170 cm, 1,000 kg |
Special Requests
Description | MOTORCYCLE |
MPV |
UV_FIORINO |
TRUCK330 |
|
---|---|---|---|---|---|
FOOD_SERVICE |
Food Service | โ | โ | ||
1HELPER_TIER1 |
1 helper (Tier 1) | โ | โ | โ | |
1HELPER_TIER2 |
1 helper (Tier 2) | โ | โ | โ | |
1HELPER_TIER3 |
1 helper (Tier 3) | โ | โ | โ |
๐ต๐ญ Philippines
City | Code | Pricing Details |
---|---|---|
Cebu | PH_CEB |
https://www.lalamove.com/philippines/cebu/ceb/pricing |
Manila | PH_MNL |
https://www.lalamove.com/philippines/manila/fil/pricing |
Service Types
Key | Description | Shipment restrictions | PH_CEB |
PH_MNL |
---|---|---|---|---|
MOTORCYCLE |
Motorcycle | 1.6 x 1.25 x 1.6ft, 20 kg | โ | โ |
MPV |
UV (Small) | 4 x 3.2 x 2.8 ft, 300 kg | โ | โ |
VAN |
Van | 7 x 4 x 3.5 ft, 600 kg | โ | |
TRUCK330 |
FB/L300 | 7 x 4 x 4 ft, 1,000 kg | โ | โ |
Special Requests
Description | MOTORCYCLE |
MPV |
VAN |
TRUCK330 |
|
---|---|---|---|---|---|
COD |
Cash Handling | โ | |||
LALABAG |
Insulated Box | โ | |||
QUEUEING_MOTORCYCLE |
Queueing Service | โ | |||
PURCHASE_SERVICE |
Purchase Service (>30minutes waiting: +โโฑ60) |
โ | |||
DRIVER_CARRIES |
Driver Carries (max 50kg) | โ | โ | โ | |
1ASSISTANT_1_MINUS_2DROPS |
1 Assistant: 1-2 drops | โ | โ | โ | |
1ASSISTANT_3_MINUS_4DROPS |
1 Assistant: 3-4 drops | โ | โ | โ | |
1ASSISTANT_5_PLUS_DROPS |
1 Assistant: 5+ drops | โ | โ | โ |
๐ธ๐ฌ Singapore
City | Code | Pricing Details |
---|---|---|
Singapore | SG_SIN |
https://www.lalamove.com/singapore/en/pricing |
Service Types
Key | Description | Shipment restrictions |
---|---|---|
MOTORCYCLE |
Bike | 40 ร 25 ร 25 cm, 8 kg |
CAR |
Car | 70 ร 50 ร 50 cm, 20 kg |
MINIVAN |
1.7m Van | 160 ร 120 ร 100 cm |
VAN |
2.4m Van | 230 ร 120 ร 120 cm |
TRUCK330 |
10ft Lorry | 290 ร 140 ร 170 cm |
TRUCK550 |
14ft Lorry | 420 ร 170 ร 190 cm |
Special Requests
Description | MOTORCYCLE |
CAR |
MINIVAN |
VAN |
TRUCK330 |
TRUCK550 |
|
---|---|---|---|---|---|---|---|
COD |
Cash on delivery | โ | โ | โ | โ | โ | โ |
RESTRICTED |
Secured Zone | โ | โ | โ | โ | โ | โ |
RETURNTRIP |
Return Trip (for documents only) | โ | โ | โ | |||
RETURNTRIP_LORRY |
Return Trip (for documents only) | โ | โ | ||||
MOVING_DRIVER_1HELPER_VAN |
Moving service: Driver + 1 Helper | โ | โ | ||||
MOVING_DRIVER_2HELPER_VAN |
Moving service: Driver + 2 Helpers | โ | โ | ||||
MOVING_DRIVER |
Moving service: Driver | โ | โ | ||||
MOVING_DRIVER_1HELPER |
Moving service: Driver + 1 Helper | โ | โ | ||||
MOVING_DRIVER_2HELPER |
Moving service: Driver + 2 Helpers | โ | โ | ||||
TAILGATE |
Tailgate | โ | โ |
๐น๐ผ Taiwan
City | Code | Pricing Details |
---|---|---|
Taipei | TW_TPE |
https://www.lalamove.com/taiwan/taipei/zh/pricing |
Service Types
Key | Description | Shipment restrictions |
---|---|---|
MOTORCYCLE |
Motorcycle | 30 ร 60 ร 40 cm, 20 kg |
MPV |
SUV | 100 ร 100 ร 100 cm, 200 kg (individual item weighing < 20 kg) |
VAN |
Van | 150 ร 100 ร 100 cm, 300 kg (individual items weighing < 20 kg) |
TRUCK175 |
150 Cubic Truck | 200 ร 120 ร 120 cm, 500 kg (individual items weighing < 20 kg) |
TRUCK330 |
Truck | 200 ร 120 ร 120 cm, 500 kg (individual items weighing < 20 kg) |
Special Requests
Description | MOTORCYCLE |
MPV |
VAN |
TRUCK175 |
TRUCK330 |
|
---|---|---|---|---|---|---|
LALABAG |
Lalamoveๅฐ็จไฟๆบซ่ข ่ฉณๆ ๆๆญค | โ | ||||
HELP_BUY |
้ไปฃไปๆฌพ๏ผไธ้ $2000(่ซๅจremarksๆฌๅ่จป้้ก) ่ฉณๆ ๆๆญค | โ | โ | โ |
๐น๐ญ Thailand
City | Code | Pricing Details |
---|---|---|
Bangkok | TH_BKK |
https://www.lalamove.com/thailand/bangkok/th/pricing |
Pattaya | TH_PYX |
https://www.lalamove.com/thailand/pattaya/th/pricing |
Service Types
Key | Description | Shipment restrictions | TH_BKK |
TH_PYX |
---|---|---|---|---|
MOTORCYCLE |
Motorcycle | 50 ร 50 ร 50 cm, 20 kg | โ | โ |
MPV |
Hatchback | 115 ร 115 ร 80 cm, 100 kg | โ | โ |
TRUCK330 |
Pick-Up Truck | 170 ร 150 ร 170 cm, 1,000 kg | โ | โ |
Special Requests
Description | MOTORCYCLE |
MPV |
TRUCK330 |
|
---|---|---|---|---|
COD |
Cash on delivery | โ | โ | โ |
HELP_BUY |
Purchase Service (THB 1 - 1,000).
|
โ | ||
LALABAG |
Food Delivery Box | โ | ||
ROUNDTRIP |
Round Trip | โ | โ | |
DOOR2DOOR |
Door to door (by driver) | โ | โ | |
PURCHASE_SERVICE_TIER_2 |
Purchase Service (THB 1,000 - 2,000) | โ |
๐ป๐ณ Vietnam
City | Code | Pricing Details |
---|---|---|
Hanoi | VN_HAN |
https://www.lalamove.com/vietnam/hanoi/vi/pricing |
Ho Chi Minh City | VN_SGN |
https://www.lalamove.com/vietnam/hcmc/vi/pricing |
Service Types
Key | Description | Shipment restrictions | VN_HAN |
VN_SGN |
---|---|---|---|---|
MOTORCYCLE |
Motorcycle | 40 x 40 x 40 cm, 30 kg | โ | โ |
VAN |
Truck | 120 x 100 x 120, 500 kg | โ | โ |
VAN_1000 |
Truck | 190 x 100 x 120cm, 1,000 kg | โ | โ |
TRUCK175 |
Truck | 200 x 120 x 120 cm, 500 kg | โ | โ |
TRUCK330 |
Truck | 300 x 160 x 160 cm, 1,000 kg | โ | โ |
Special Requests
Description | MOTORCYCLE |
VAN |
VAN_1000 |
TRUCK175 |
TRUCK330 |
|
---|---|---|---|---|---|---|
HELP_BUY |
Purchase Service | โ | ||||
LALABAG |
Insulated Box | โ | ||||
LALABAG_BIG |
40 x 40 x 40 cm | โ | ||||
ROUNDTRIP |
Round Trip | โ | โ | โ | โ | |
DOOR2DOOR |
Door-to-door delivery | โ | โ | โ | ||
DOOR2DOOR_1HELPER |
Door-to-door delivery + 1 Helper | โ | โ | |||
GROUND_FLOOR_ONE_WAY |
Moving Help: Ground floor (1-way) | โ | โ | โ | โ | |
GROUND_FLOOR_TWO_WAYS |
Moving Help: Ground floor (2-way) | โ | โ | โ | โ | |
UPSTAIR_DOWNSTAIR_ONE_WAY |
Moving Help: Stairs (1-way) | โ | โ | โ | โ | |
UPSTAIR_DOWNSTAIR_TWO_WAYS |
Moving Help: Stairs (2-way) | โ | โ | โ | โ |
Deprecated Special Requests
Description | MOTORCYCLE |
VAN |
VAN_1000 |
TRUCK175 |
TRUCK330 |
|
---|---|---|---|---|---|---|
ROUNDTRIP_TRUCK175 |
Round Trip | โ | ||||
ROUNDTRIP_TRUCK330 |
Round Trip | โ | ||||
GROUND_FLOOR_ONE_WAY_2 |
Moving Help: Ground floor 1 way | โ | ||||
UPSTAIR_DOWNSTAIR_ONE_WAY_2 |
Moving Help: Stairs 1 way | โ | ||||
DOOR2DOOR_DRIVER |
Door-to-door delivery | โ | ||||
DOOR2DOOR_1HELPER_TRUCK175 |
Door-to-door delivery + 1 Helper | โ | ||||
DOOR2DOOR_1HELPER_TRUCK330 |
Door-to-door delivery + 1 Helper | โ |
Deprecated Service Types & Special Requests
Type | Key | Description |
---|---|---|
Service Type | LALA2H |
Lala2h |
Service Type | LALANOW |
LalaNow |
Get Quotation
POST https://rest.lalamove.com/v2/quotations
POST https://rest.br.lalamove.com/v2/quotations
POST https://sandbox-rest.lalamove.com/v2/quotations
Body
{
"scheduleAt": "2020-09-01T14:30:00.00Z",
"serviceType": "MOTORCYCLE",
"stops": [<Waypoint>],
"deliveries": [<DeliveryInfo>],
"requesterContact": <Contact>,
"specialRequests": ["COD", "HELP_BUY", "LALABAG"]
}
Responses
201
Quotation Created
{ "totalFee": "108000", "totalFeeCurrency": "THB" }
409
Stops and Deliveries mismatch, see DeliveryInfo
{ "message": "ERR_DELIVERY_MISMATCH" }
409
Not enough stops, number of stops should be between 2 and 10
{ "message": "ERR_INSUFFICIENT_STOPS" }
409
Reached maximum stops, Number of stops should be between 2 and 10
{ "message": "ERR_TOO_MANY_STOPS" }
409
Invalid payment method
{ "message": "ERR_INVALID_PAYMENT_METHOD" }
409
Invalid locale, refer to Waypoint
{ "message": "ERR_INVALID_LOCALE" }
409
Invalid country, getting a quotation from a country not supported (by your credentials)
{ "message": "ERR_INVALID_COUNTRY" }
409
Invalid phone number, refer to Phone Validation
{ "message": "ERR_INVALID_PHONE_NUMBER" }
409
scheduleAt
datetime is in the past
{ "message": "ERR_INVALID_SCHEDULE_TIME" }
409
No such service type, make sure to stick to Service types in your country/region
{ "message": "ERR_INVALID_SERVICE_TYPE" }
409
No such special request(s), make sure that special requests match with selected Service types
{ "message": "ERR_INVALID_SPECIAL_REQUEST" }
409
Out of service area
{ "message": "ERR_OUT_OF_SERVICE_AREA" }
409
Fail to reverse from address to location, providelat
andlng
{ "message": "ERR_REVERSE_GEOCODE_FAILURE" }
POST
/v2/quotations
Request a quotation.
Will return an object containing the fee amount and currency of based on information provided.
Body
Required fields | ||
---|---|---|
serviceType |
string |
The type of vechicle. See service types available in your country/region |
stops |
Waypoint[] |
Array of Waypoint s (minimum 2, maximum 10) |
deliveries |
DeliveryInfo[] |
Array of DeliveryInfo s |
requesterContact |
Contact |
Contact person at pick up point aka stop[0] , see Contact |
Optional fields | ||
---|---|---|
scheduleAt |
string |
Pick up time in UTC timezone and ISO 8601 format; omit this if you are placing an immediate order |
specialRequests |
string[] |
See special requests available in your country/region |
scheduleAt
For example, you are placing an order in Singapore at 2020-07-10 15:00 (local time). As Singapore is in UTC+8 timezone, and scheduleAt
takes time in UTC. In this case, you should put 2020-07-10T07:00:00.000Z.
Your Local Time | UTC Time |
---|---|
- ISO 8601 format
requesterContact
If you are a business, this will need to be your physical pick up location's contact information. Example for a multi-branch business:
Branch | requesterContact |
---|---|
ACME Branch A | {name: "ACME Branch A", phone: "8912121212"} |
ACME Branch B | {name: "ACME Branch B", phone: "8912121213"} |
ACME Branch C | {name: "ACME Branch C", phone: "8912121214"} |
Waypoint
Waypoint
{
"location": {
"lat": "13.740167",
"lng": "100.535237"
},
"addresses": {
"th_TH": {
"displayString": "444 เธเธเธ เธเธเธฒเนเธ เนเธเธงเธ เธงเธฑเธเนเธซเธกเน เนเธเธ เธเธเธธเธกเธงเธฑเธ เธเธฃเธธเธเนเธเธเธกเธซเธฒเธเธเธฃ 10330 เธเธฃเธฐเนเธเธจเนเธเธข",
"country": "TH"
}
}
}
LOCALE
is composed of ISO 639-1 language code and ISO 3166-1 alpha-2 country code as follow:
{ISO 639-1}_{ISO 3166-1 alpha-2}
.
See what locale keys are available in your country/region
location.lat |
string |
Latitude |
location.lng |
string |
Longitude |
addresses[<LOCALE>].displayString |
string |
Street address in plain text. Use remarks in DeliveryInfo for building, floor and flat |
addresses[<LOCALE>].country |
string |
Country code must match with X-LLM-Country in the request headers. See Available countries |
DeliveryInfo
DeliveryInfo
{
"toStop": 1,
"toContact": <Contact>
"remarks": "ORDER#94\r\n1. Tshirt เธเธณเธเธงเธ 1\r\n2. Hoodie เธเธณเธเธงเธ 1\r\n"
}
Contact person, mobile phone number and remarks for each Waypoint excluding the pick up point.
toStop |
number |
The index of waypoint in stops this information associates with, has to be >= 1 , since the first stop's Delivery Info is tided to requesterContact |
|
toContact |
Contact |
See Contact |
|
remarks |
๐คทโโ๏ธ | string |
Additional info about the delivery. eg. building, floor and flat. Use newline \r\n for better readability |
๐คทโโ๏ธ - Optional
Contact
Contact
// We accept phone number with or without country code. If you do supply a country code, please put "+" before the country code. For example, "+85237013701" or "37013701" are both acceptable for Hong Kong.
{
"name": "Chris Wong",
"phone": "37013701"
}
name |
string |
The name of the contact person |
phone |
string |
Must be a valid phone number. See Phone Validation on how we validate phone numbers for each country/region. |
Place Order
POST https://rest.lalamove.com/v2/orders
POST https://rest.br.lalamove.com/v2/orders
POST https://sandbox-rest.lalamove.com/v2/orders
Body
{
"quotedTotalFee": { "amount": "108000", "currency": "THB" },
"sms": false,
// ... merge with body used for quotation
}
Responses
201
Order Created
{
"customerOrderId": "<DEPRECATED_ORDER_ID>",
"orderRef": "<LALAMOVE_ORDER_ID>"
}
402
You have insufficient credit. Please top up your wallet
{ "message": "ERR_INSUFFICIENT_CREDIT" }
409
The currency you provided inquotedTotalFee.currency
is not a valid currency
{ "message": "ERR_INVALID_CURRENCY" }
409
The amount or currency you provided inquotedTotalFee
doesn't match quotation
{ "message": "ERR_PRICE_MISMATCH" }
429
Too Many Requests
// no body
POST
/v2/orders
Provide the totalFee
and totalFeeCurrency
received from /quotations
as quotedTotalFee.amount
and quotedTotalFee.currency
merged with the exact same body used for /quotations
.
Body
quotedTotalFee.amount |
string |
totalFee from /quotations |
|
quotedTotalFee.currency |
string |
totalFeeCurrency from /quotations |
|
sms |
๐คทโโ๏ธ | boolean |
Send delivery updates via SMS to THE recipient, or the recipient of the LAST STOP for multi-stop orders. Default to true |
๐คทโโ๏ธ - Optional
sms
Response
customerOrderId |
UUID order id (Deprecated) |
orderRef |
Lalamove Order ID |
Order Details
GET https://rest.lalamove.com/v2/orders/{id}
GET https://rest.br.lalamove.com/v2/orders/{id}
GET https://sandbox-rest.lalamove.com/v2/orders/{id}
Responses
200
ASSIGNING_DRIVER
{
"driverId": "",
"shareLink": "https://{{hostname}}/?TH1234556&lang=th_TH&version=2",
"status": "ASSIGNING_DRIVER",
"price": { "amount": "108000", "currency": "THB" }
}
200
ON_GOING
{
"driverId": "33522",
"shareLink": "https://{{hostname}}/?TH1234556&lang=th_TH&version=2",
"status": "ON_GOING",
"price": { "amount": "108000", "currency": "THB" }
}
200
CANCELED
{
"driverId": "",
"shareLink": "https://{{hostname}}/?TH1234556&lang=th_TH&version=2",
"status": "CANCELED",
"price": { "amount": "108000", "currency": "THB" }
}
200
PICKED_UP
{
"driverId": "33522",
"shareLink": "https://{{hostname}}/?TH1234556&lang=th_TH&version=2",
"status": "PICKED_UP"
"price": { "amount": "108000", "currency": "THB" }
}
200
REJECTED
{
"driverId": "",
"shareLink": "https://{{hostname}}/?TH1234556&lang=th_TH&version=2",
"status": "REJECTED",
"price": { "amount": "108000", "currency": "THB" }
}
200
COMPLETED
{
"driverId": "33522",
"shareLink": "https://{{hostname}}/?TH1234556&lang=th_TH&version=2",
"status": "COMPLETED",
"price": { "amount": "108000", "currency": "THB" }
}
200
EXPIRED
{
"driverId": "",
"shareLink": "https://{{hostname}}/?TH1234556&lang=th_TH&version=2",
"status": "EXPIRED",
"price": { "amount": "108000", "currency": "THB" }
}
GET
/v2/orders/{id}
URL Params
id |
<orderRef> (returned by /v2/orders/ ) |
Sharelink
(Launched in November, 2020)
Sharelink is meant to be used for sharing delivery information with 3rd party. The returned link is the same as if a user press "Share" in the Lalamove app. No login is required to view the sharelink.
Driver Details
GET https://rest.br.lalamove.com/v2/orders/{orderId}/drivers/{driverId}
GET https://rest.lalamove.com/v2/orders/{orderId}/drivers/{driverId}
GET https://sandbox-rest.lalamove.com/v2/orders/{orderId}/drivers/{driverId}
Responses:
200
{
"name": "David",
"phone": "37013701",
"plateNumber": "LALAM0VE",
"photo": "<PROFILE_PHOTO_URL>"
}
GET
/v2/orders/{orderId}/drivers/{driverId}
Retrieve driver's information.
URL Params
orderId |
<LALAMOVE_ORDER_ID> |
driverId |
driverId from /orders/{id} response |
Driver Location
GET https://rest.br.lalamove.com/v2/orders/{orderId}/drivers/{driverId}/location
GET https://rest.lalamove.com/v2/orders/{orderId}/drivers/{driverId}/location
GET https://sandbox-rest.lalamove.com/v2/orders/{orderId}/drivers/{driverId}/location
Responses:
200
{
"location": { "lat": "13.740167", "lng": "100.535237" },
"updatedAt": "2017-12-01T14:30.00Z"
}
Responses:
403
// Empty
GET
/v2/orders/{orderId}/drivers/{driverId}/location
Retrieve driver's latest location in latitude and longitude.
This information is available starting 1 hour prior to datetime specified in scheduleAt
datetime and remain accessible until the order is completed. Attempts made outside of this time window will get 403 Forbidden response.
URL Params
orderId |
<LALAMOVE_ORDER_ID> |
driverId |
driverId from /orders/{id} response |
Cancel Order
PUT https://rest.br.lalamove.com/v2/orders/{id}/cancel
PUT https://rest.lalamove.com/v2/orders/{id}/cancel
PUT https://sandbox-rest.lalamove.com/v2/orders/{id}/cancel
Responses
200
{}
409
Cancellation Forbidden
{ "message": "ERR_CANCELLATION_FORBIDDEN" }
PUT
/v2/orders/{id}/cancel
Please refer to our cancellation policy here.
Attempts to cancel an order that does not comply with our cancellation policy will get ERR_CANCELLATION_FORBIDDEN
as response.
URL Params
id |
<LALAMOVE_ORDER_ID> |
Add Priority Fee
PUT https://rest.br.lalamove.com/v2/orders/{id}/tips
PUT https://rest.lalamove.com/v2/orders/{id}/tips
PUT https://sandbox-rest.lalamove.com/v2/orders/{id}/tips
Body
{
"tips":"10"
}
(Updated in February, 2021)
Priority fees (commonly known as tips) are often used by customers to encourage drivers to accept an order.
- Priority fees can only be added before the driver accepts the order. This is the same logic as our user mobile and web app.
- Priority fees can be added to the same order on multiple occasions. However, please note the amount added subsequently must be equal or larger than the previous.
- The amount added as a priority fee each time will replace the previous amount. For example, if you were to add HKD10 the first time, followed by a subsequent priority fee of HKD20, the total amount of the priority fee would be HKD20 (as the second request supersedes the first request).
Responses
200
{}
402
You do not have enough credits for the action, please top-up your wallet.
{ "message": "ERR_INSUFFICIENT_CREDIT" }
409
The amount you attempted to add does not reach the minimum amount allowed..
{ "message": "ERR_EXCEED_MIN_TIPS" }
409
The amount you attempted to add exceed the maximum amount allowed.
{ "message": "ERR_EXCEED_MAX_TIPS" }
409
The amount is invalid, e.g. trying to add HKD20.001 while 0.1 cent is not supported in Hong Kong OR you attempted to add an amount lower than or equal to previous requests.
{ "message": "ERR_INVALID_TIPS" }
409
You are trying to add priority fee beyond allowable order status(es).
{ "message": "ERR_INVALID_ORDER_STATUS" }
URL Params
id |
<LALAMOVE_ORDER_ID> |
Errors
The Lalamove API uses the following error codes:
Error Code | Meaning |
---|---|
400 -- Bad Request |
Your request is invalid. Make sure the body is a valid JSON string. |
401 -- Unauthorized |
Your authorization token is incorrect. Make sure to follow instructions in Authentication. |
402 -- Payment Required |
You do not have sufficient credit for the action, please top-up your wallet. |
403 -- Forbidden |
Access to order or driver details is unauthorized. |
404 -- Not Found |
The specified order or driver could not be found. |
409 -- Conflict |
There are a list of possible reasons, please refer to coding section of respective endpoints for details. |
429 -- Too Many Requests |
You're sending in too many requests. |
500 -- Internal Server Error |
We had a problem with our server. Try again later. |
Go-Live
Customers have their own use case scenarios - we do not mandate customers to use all of our APIs. However, please make sure your integration includes both
/v2/quotations
and/v2/orders
.Before rolling out the intergration to production (or commonly known as "Go-Live"), our sales and operation experts will help you conduct a soft-launch with real drivers to make sure operational readiness on both sides.
Official Launch - Please notify local sales the date for going live, so we can communicate to drivers and make sure we successfully scale your business.
Tutorial
(Updated in February, 2021)
To help you kick-start, you can check out this deck. It is a step-by-step walkthrough of how to make API calls using POSTMAN.
Postman Configurations
Postman Environment
Download Lalamove's environment configuration for POSTMAN and corresponding city's collection files.
Postman Collection
Countries or Regions | City | POSTMAN Collection |
---|---|---|
๐ง๐ท Brasil | Rio de Janeiro (BR_RIO ) |
Download |
๐ง๐ท Brasil | Sao Paulo (BR_SAO ) |
Download |
๐ญ๐ฐ Hong Kong | Hong Kong (HK ) |
Download |
๐ฎ๐ฉ Indonesia | Jakarta (ID_JKT ) |
Download |
๐ฒ๐พ Malaysia | Kuala Lumpur (MY_KUL ) |
Download |
๐ฒ๐ฝ Mexico | Mexico City (MX_MEX ) |
Download |
๐ต๐ญ Philippines | Cebu (PH_CEB ) |
Download |
๐ต๐ญ Philippines | Manila (PH_MNL ) |
Download |
๐ธ๐ฌ Singapore | Singapore (SG ) |
Download |
๐น๐ผ Taiwan | Taipei (TW_TPE ) |
Download |
๐น๐ญ Thailand | Bangkok (TH_BKK ) |
Download |
๐น๐ญ Thailand | Pattaya (TH_PYX ) |
Download |
๐ป๐ณ Vietnam | Hanoi (VN_HAN ) |
Download |
๐ป๐ณ Vietnam | Ho Chi Minh City (VN_SGN ) |
Download |
FAQ
Why do I keep getting 401 - Unauthorized
error?
Make sure you are follow the instruction on Authentication closely.
rawSignatureWithBody = `${time}\r\n${method}\r\n${path}\r\n\r\n${body}`;
rawSignatureNoBody = `${time}\r\n${method}\r\n${path}\r\n\r\n`;
// the last \r\n\r\n is untouched
If you are having trouble with requests without body like get order details, make sure you leave the line break characters untouched.
You may also want to refer to "API Libraries (Third-party)" in the Support section.
Does Lalamove API offer webhooks?
We do not provide webhooks. However you can perform polling on /v2/orders/<order_id>
using CRON jobs at the maximum rate of 1 request per order per minute to detect status updates until the order is COMPLETED
.
How do I get notifited when an order status has changed?
You will need to implement a polling mechanism to retrieve order status periodically. We will not push or notify changes programmatically.
Can I just place an order directly without getting a quotation everytime?
Technically yes. If you know the price in advance, for example there are some pre-defined routes that you have to order for a deliveries on a regular basis. You can store the pricing in previous quotations and apply the price directly to POST /v2/orders
as quotedTotalFee
.
How do I make changes to order status on Sandbox?
Log in using your Sandbox credentials to our Partnerย Tool.
Support
API Libraries (Third-party)
Currently we do not offer any official SDK/libraries for our API. However, there are some libraries built by the community that might help with your integration.
Contact
Drop us an email at api-support@lalamove.com with your company name and the cities that you would like to use our service. Our local team will then reach out to you!