NAV Navbar
Sandbox Production Production (LATAM)

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

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:

  1. Hong Kong & Singapore - please state the value in ISO 3166-1 alpha-2 format.
  2. 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

order-flow

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.

User Cancellation

An order can only be cancelled either:

  1. An order with the status ASSIGNING_DRIVER; or
  2. An order is matched less than 5 minutes - order status changed from ASSIGNING_DRIVER to ON_GOING less than 5 minutes ago. This holds regardless of the actual scheduleAt.

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.

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
๐Ÿ‡ฎ๐Ÿ‡ณ India IN IN_BLR, IN_BOM, IN_DEL en_IN, hi_IN, kn_IN, mr_IN
๐Ÿ‡ฎ๐Ÿ‡ฉ 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}))$/
๐Ÿ‡ฎ๐Ÿ‡ณ India 9234567810 /^([6-9][0-9]{9}|22[0-9]{8})$/
๐Ÿ‡ฎ๐Ÿ‡ฉ 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
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 MOTORCYCLE VAN TRUCK550
LALABAG Thermal Bag โœ…

๐Ÿ‡ฎ๐Ÿ‡ณ India

City Code Pricing
Bangalore / Bengaluru IN_BLR https://www.lalamove.com/india/bengaluru/pricing
Delhi IN_DEL https://www.lalamove.com/india/delhi/pricing
Mumbai IN_BOM https://www.lalamove.com/india/mumbai/pricing
Key Description Shipment restrictions IN_BLR IN_DEL IN_BOM
MOTORCYCLE Motorcycle 40 x 40 x 40 cm, 20 kg โœ… โœ… โœ…
THREE_WHEELER Three-Wheeler 150 ร— 130 ร— 130 cm, 500 kg โœ…
TATA7FT 7ft Tata Ace 220 ร— 140 ร— 180 cm, 750 kg โœ… โœ… โœ…
TATA8FT 8ft Tata Ace 240 ร— 140 ร— 180 cm, 750 kg โœ…

Special Requests

Description MOTORCYCLE THREE_WHEELER TATA7FT TATA8FT
DOOR2DOOR Moving and Unloading โœ… โœ… โœ…
COD COD โœ…

๐Ÿ‡ฎ๐Ÿ‡ฉ 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/indonesia/jakarta/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 244 cm ร— 91 cm ร— 122 cm, 500 kg
4X4 4X4 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 โœ… โœ…
COVERED Covered โœ… โœ…

๐Ÿ‡น๐Ÿ‡ผ 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).
  1. Input your details, amount and price of the desired goods in DeliveryInfo.remarks
  2. Make sure the recepient carries sufficient amount of cash to pay our driver
โœ…
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 โœ… โœ…
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 TRUCK175 TRUCK330
HELP_BUY Purchase Service โœ…
LALABAG Insulated Box โœ…
LALABAG_BIG 40 x 40 x 40 cm โœ…
DOOR2DOOR_DRIVER Door-to-door delivery โœ…
GROUND_FLOOR_ONE_WAY Moving Help: Ground floor 1 way โœ…
GROUND_FLOOR_ONE_WAY_2 Moving Help: Ground floor 1 way โœ…
UPSTAIR_DOWNSTAIR_ONE_WAY Moving Help: Stairs 1 way โœ…
UPSTAIR_DOWNSTAIR_ONE_WAY_2 Moving Help: Stairs 1 way โœ…
ROUNDTRIP_TRUCK175 Round Trip โœ…
ROUNDTRIP_TRUCK330 Round Trip โœ…
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 phone number, refer to Phone validations

{ "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, provide lat and lng

{ "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 Waypoints (minimum 2, maximum 10)
deliveries DeliveryInfo[] Array of DeliveryInfos
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

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 in quotedTotalFee.currency is not a valid currency

{ "message": "ERR_INVALID_CURRENCY" }

409 The amount or currency you provided in quotedTotalFee 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/)

Order Status

status

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.

(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.

status

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": "0978787878",
  "plateNumber": "SG-9393",
  "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 lastest 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>

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 wrong. Make sure to follow instructions in Authentication.
402 -- Payment Required You have insufficient Credit.
403 -- Forbidden Access to order or driver details is unauthorized.
404 -- Not Found The specified Order or Driver could not be found.
409 -- Conflict ERR_INVALID_COUNTRY -- Incorrect country.
ERR_INVALID_PARAMS --- General validation error.
ERR_REQUIRED_FIELD -- Missing required fields.
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

  1. 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.

  2. 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.

  3. 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

We are preparing the tutorials at the moment. Stay tuned!

In the meantime, we highly recommend you to start using our API with POSTMAN.

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.

C# https://repl.it/@jakech/LLM-Auth-C
NodeJS https://github.com/yamdraco/lalamove-js
PHP https://github.com/yamdraco/lalamove-php
Python https://repl.it/@jakech/LLM-Auth-Python
Ruby https://repl.it/@jakech/LLM-Auth-Ruby

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!