Introduction
In v3, we have made substantial improvements in several fronts ranging from guaranteed quotation validity period to detailed price breakdown to route optimization to provide the best API in the region.
Now you can place orders easier and cheaper. Retrieve any order's granular information to build a more robust and transparent system. Easily track and change orders via API without contacting Customer Support. Here's a short list of key improvements.
Features | Description |
---|---|
Quotation ID | Unique identifier that encapsulates each quotation and its delivery information |
Quotation Validity Period | Guaranteeing quotation to be valid for a period even when price has changed |
Price Breakdown | Retrieve how Lalamove delivery price is calculated |
Distance | Retrieve distance between the pick-up and drop-off points |
Change Driver | Change to another driver if there's any problem and save yourself from hassle |
Route Optimization | Optimize your drop-off routes and deliver cheaper |
Retrieve POD information | Retrieve photo proof of your delivery |
As always, if you have any suggestions or feedbacks, please reach out to partner.support@lalamove.com. We would love to hear how we can server you better.
Change Log
Month | Feature | Description |
---|---|---|
Aug 2025 | Price Breakdown | Updated price breakdown precision length in Malaysia to 1 |
Apr 2025 | New Order ID Specifications | Updated the order ID length from 12 digits to 19 digits |
Mar 2025 | City Name | Updated city name for Penang |
Jan 2025 | Driver rejection | Updated logic for driver rejection |
Sep 2024 | Expired Orders | Updated logic for order expiry |
Sep 2024 | Order Flow | Cleaned up the order flow by separating different scenarios |
Apr 2024 | API | Deprecate API v2 |
Oct 2023 | City Info | Update on API response structure and specialRequest keys |
Aug 2023 | City Name | Updated city names for Vietnam and Philipines |
May 2023 | Webhook |
Added information related to ORDER_EDITED message in the documentation |
Apr 2023 | API |
Added Time Display section to specifiy the timezone used in Lalamove API |
Mar 2023 | Webhook |
Extracted webhook setup information and available message types from the PDF documentation |
Mar 2023 | API |
Added clarifications on the scheduled order arrangments |
Mar 2023 | API |
Added the sample codes link and updated the error message |
Nov 2022 | API |
Update order expiration time from 1 hour to 2 hours |
Sep 2022 | SDK |
Released new SDK version |
Sep 2022 | API |
Updated v3/cities specialRequest field name to be 'name' instead of 'key' |
Sep 2022 | API |
Updated v3/cities specialRequest field name to be 'name' instead of 'key' |
Sep 2022 | Webhook |
Include steps to setup webhook using API in the PDF Tutorial file |
Sep 2022 | API |
Add clarification on maximum request for POST v3/orders API call |
Aug 2022 | SDK |
On-going maintenance on Lalamove SDK. We'll be back soon! |
Jun 2022 | Update the section header name from 'Go-Live' to become 'Getting On Board' to make it more informative | |
Jun 2022 | ALL | Add API support SLA table |
May 2022 | API |
Add Order Edit API specification, add new fields in Quotation and Order request and response payloads, and add Rate Limit Table |
May 2022 | API |
Updated tutorial PDF files and added Order Edit and Change Driver Endpoints to the Postman Collection |
Apr 2022 | API |
Add metadata objects to Place Order and Order Detail APIs |
Mar 2022 | SDK |
Node.js client libary released |
Quotation ID
Previously, API users had no good way of handling quotations that they received from Lalamove. They had to manually extract price from each quotation, store it separately, and map that to relevant pick-up and drop-off locations with vehicle types and special requests.
To solve this, in v3, we are introducing UUID based unique identifier for each quotation that can encapsulate all the necessary information for each delivery. Lalamove users can now just use this Quotation ID (quotationId
) to submit orders and store conveniently on the client side.
{
"data": {
"quotationId": "1471722666401517645",
"scheduleAt": "2020-09-01T14:30:00.00Z",
"serviceType": "MOTORCYCLE",
"specialRequests": ["LALABAG"],
"expiresAt": "2020-09-01T14:35:00.00Z",
"priceBreakdown": {...},
"stops": [...],
"item": {...}
}
}
Quotation Validity Period
To provide the best price for both users and drivers at a given time, Lalamove adjusts deliver price on a real-time basis. While it optimizes prices for both parties, it also made previously valid quotation invalid. As a consequence, API users often couldn't place orders in a timely manner and had to re-submit new quotations.
While this may hurt Lalamove's revenue in short-term, API team has decided to offer the feature since we believe that it's very important to provide stable, consistent, and transparent pricing to our users. Even better, if price has decreased, we will place orders with the now lower price to provide the best price.
However note that, if the quotation has been created more than 5 minutes ago, Lalamove will not be able place orders (even if the price happened to be the same) and you will have to create another quotation.
Price Breakdown
Lalamove has always strived towards transparency for our users. We are happy to announce that we are now finally able to apply our principle to our price breakdown as well.
"priceBreakdown": {
"base": "100",
"extraMileage": "10",
"surcharge": "20",
"...": "",
"totalBeforeOptimization": "130",
"totalExcludePriorityFee": "130",
"total": "130",
"currency": "THB"
},
All price items within the price breakdown object (e.g., base, total, etc.) are returned as decimal numbers. The number of decimal points varies by market, reflecting local currency conventions and system configurations. Please refer to the table below for the specific decimal precision. Unless mentioned explicitly in the table, assume no decimal in price item values.
Market | Price decimal precision | Example |
---|---|---|
SG | 1 | 10.5 |
MY | 1 | 50.5 |
Distance
Similar to price breakdown, we will now share how we compute distance between the pick-up point and drop-off points for each delivery so that our API clients can independently verify and re-use the distance for their end-clients if needed.
"distance": {
"value": "16200",
"unit": "m"
},
Field | Description |
---|---|
Value | Full integer value of the distance, rounded up to tenth decimal before 0 (ex: 0.1) |
Unit | Unit of the distance. |
Change Driver
Drivers are late or unresponsive? While we try our best to always match orders with quality drivers, things do happen. In that case, rather than cancelling, you can always change the driver and have your delivery fulfilled with little hassle. No need to cancel and re-submit your orders 😀
For more details, please jump to Change Driver
Route Optimization
Have multiple drop-off locations? But can't decide which stops you want to go first? We're happy to announce that we're finally bringing route optimization to API as well.
Simply add isRouteOptimized: true
when you create quotation, find the best route, and save your delivery cost
For more details, please jump to Quotation
Authentication
Lalamove API uses HMAC (SHA256) as its authentication mechanism.
You will be provided with an API KEY
, and an API SECRET
from Developers tab of the Partner Portal that you can use to generate a HMAC signature (SIGNATURE
).
# With shell, you can just pass the correct header with each request
curl 'https://rest.sandbox.lalamove.com/v3/quotations' \
-H 'Authorization: hmac {}' \
-H 'Content-Type: application/json' \
-H 'Market: HK'
const SDKClient = require("@lalamove/lalamove-js");
const sdkClient = new SDKClient.ClientModule(
new SDKClient.Config(
"public_key",
"secret_key",
"sandbox"
)
);
Sandbox & Production API keys
All API requests must be made over HTTPS. Calls made over plain HTTP will fail.
As seen in the table below, each API key and secret will have a prefix that signifies their corresponding environment. Please be reminded that you need to top up your Lalamove Wallet in order to get your Production API key and secret. Credentials for different environments can be retrieved by selecting the correct environment on the top right corner of your Partner Portal page.
Environment | Prefix |
---|---|
Sandbox | pk_test or sk_test |
Production | pk_prod or sk_prod |
Signature
Example in JavaScript
const SECRET = 'sk_test_Lalamove';
const time = new Date().getTime().toString(); // => `1545880607433`
const method = 'POST';
const path = '/v3/quotations';
const body = JSON.stringify({...}); // => the whole body for '/v3/quotations'
const rawSignature = `${time}\r\n${method}\r\n${path}\r\n\r\n${body}`;
//const rawSignature = `${time}\r\n${method}\r\n${path}\r\n\r\n`; if the method is GET
// => '1546222219293\r\nPOST\r\n/v3/quotations\r\n\r\n{\n"data":{...}'
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 |
METHOD |
Method (GET , POST , PUT , DELETE , PATCH ) of the specific API call |
PATH |
The pathname of the specific API call including version. eg. /v3/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 = 'pk_test_Lalamove'
const TOKEN = `${API_KEY}:${time}:${SIGNATURE}`
Authorization: hmac <TOKEN>
Market: <YOUR_MARKET>
Request-ID: <NONCE>
Example
Authorization: hmac 914c9e52e6414d9494e299708d176a41:1545880607433:5133946c6a0ba25932cc18fa3aa1b5c3dfa2c7f99de0f8599b28c2da88ed9d42
Market: TH
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) |
Market
Please specify the market you are placing orders in UN/LOCODE format. For example, Indonesia will be listed as ID
. See Available Markets for details.
Request-ID
Provide a Nonce to be used as a unique Request ID. If you are having trouble with any request, sharing the Request ID with us will be the fastest way.
Order Flow
Here's a sample of happy order flow. Click the diagram below to enlarge
Order Status
Dotted lines in the following diagram indicates possible status transition.
ASSIGNING_DRIVER |
Trying to match the delivery 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 successfully 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. |
Stop Level Status
These statuses denote more granular per stop level status, not the overall delivery status from above. It will be shared in the payload once the client has enabled Proof of Delivery(#proof-of-delivery).
status in POD |
Description |
---|---|
PENDING |
The driver hasn't completed the delivery to the stop yet |
DELIVERED |
The driver has completed the order and has taken a photo at the stop |
SIGNED |
The driver has completed the order and received recipient's signature |
FAILED |
The driver couldn't complete the delivery to the stop |
Immediate vs Scheduled
Quotation for Immediate Order
{
"data": {
"serviceType": "MOTORCYCLE",
"specialRequests": ["COD", "HELP_BUY", "LALABAG"],
"language": "en_HK",
"stops": [<Waypoint>],
"isRouteOptimized": true
}
}
Quotation for Scheduled Order
{
"data": {
"scheduleAt": "2020-09-01T14:30:00.00Z",
"serviceType": "MOTORCYCLE",
"specialRequests": ["COD", "HELP_BUY", "LALABAG"],
"language": "en_HK",
"stops": [<Waypoint>],
"isRouteOptimized": true
}
}
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, up to 30 days in advance, 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
.
This is a sample of user cancellation scenarios.
Driver Rejection
Orders can be rejected by a driver after they are matched. 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 reached its rejection limit, the order status will change to REJECTED
. Lalamove system will no longer broadcast this order to the driver pool.
At this point, API users can treat REJECTED
order similarly with CANCELLED
order and re-submit after double checking all the delivery information
This is a sample of order rejection scenarios.
Expired Orders
An order will be expired if it is not accepted by any driver for a period of time. Depending on the order type (immediate vs scheduled), order expiry time varies.
If the order is accepted by a driver who then rejects the order shortly after, the order expiration time will reset and start counting 2 hours from when the order is "REJECTED" for the first time. If the order is not accepted by a second driver, it will be "Expired". This is applicable to both immediate and scheduled orders.
- Immediate order - 2 hours after the order is placed
- Scheduled order - 2 hours after the
scheduleAt
time
If the order is accepted by a driver who then rejects the order shortly after, the order expiration time will reset and start counting 2 hours from when the order is "REJECTED" for the first time. If the order is not accepted by a second driver, it will be "Expired". This is applicable to both immediate and scheduled orders.
Sample scenarios:
- Immediate order: If an immediate order is placed at 10:00AM and it was matched to a driver at 10:30AM who then rejects the order at 11:00AM, the order's new expiration time will be now be reset at 1:00PM instead.
- Scheduled order: If the order is placed at 10:00AM and scheduleAt time is 11:00AM, and it was matched to a driver at 11:30AM who then rejects the order at 12:00PM, the order's new expiration time will be now reset at 2:00PM instead.
This is a sample of order expiration scenarios.
Available Markets
Lalamove API is currently available in the following markets.
Market | Market Code | Language Keys (for address) |
---|---|---|
Brasil | BR |
en_BR ,pt_BR |
Hong Kong, China | HK |
en_HK , zh_HK |
Indonesia | ID |
en_ID , id_ID |
Malaysia | MY |
en_MY , ms_MY |
Mexico | MX |
en_MX , es_MX |
Philippines | PH |
en_PH |
Singapore | SG |
en_SG |
Taiwan, China | TW |
zh_TW |
Thailand | TH |
th_TH , en_TH |
Vietnam | VN |
en_VN , vi_VN |
Available Cities
Brasil
Hong Kong, China
City | Pricing |
---|---|
Hong Kong | https://www.lalamove.com/en-hk/all-vehicle-pricing-detail |
Indonesia
City | Pricing / Harga |
---|---|
Bandung | https://www.lalamove.com/en-id/delivery-fee?&city=bandung |
Jakarta | https://www.lalamove.com/en-id/delivery-fee?city=jakarta |
Surabaya | https://www.lalamove.com/en-id/delivery-fee?city=surabaya |
Malaysia
City | Pricing / Harga |
---|---|
Kuala Lumpur | https://www.lalamove.com/en-my/all-vehicle-pricing-detail |
Johor Bahru | https://www.lalamove.com/en-my/all-vehicle-pricing-detail?city=johor |
Penang & Nearby States | https://www.lalamove.com/en-my/all-vehicle-pricing-detail?&city=penang |
Mexico
City | Pricing Details |
---|---|
Mexico City / Ciudad de México | https://www.lalamove.com/es-mx/todos-vehiculos-tarifa-detalles |
Philippines
City | Pricing Details |
---|---|
Cebu Islandwide | https://www.lalamove.com/en-ph/all-delivery-pricing-detail?&city=cebu-islandwide |
Manila NCR & South Luzon | https://www.lalamove.com/en-ph/all-delivery-pricing-detail?&city=manila-ncr-and-south-luzon |
North & Central Luzon | https://www.lalamove.com/en-ph/all-delivery-pricing-detail?&city=north-and-central-luzon |
Singapore
City | Pricing Details |
---|---|
Singapore | https://www.lalamove.com/en-sg/all-vehicle-pricing-detail |
Taiwan, China
City | Pricing Details |
---|---|
Taipei | https://www.lalamove.com/zh-tw/all-vehicle-pricing-detail |
Taichung | https://www.lalamove.com/zh-tw/all-vehicle-pricing-detail |
Tainan | https://www.lalamove.com/zh-tw/all-vehicle-pricing-detail |
Kaohsiung | https://www.lalamove.com/zh-tw/all-vehicle-pricing-detail |
Thailand
City | Pricing Details |
---|---|
Bangkok | https://www.lalamove.com/en-th/all-vehicle-pricing-detail |
Chonburi | https://www.lalamove.com/en-th/all-vehicle-pricing-detail |
Vietnam
City | Pricing Details |
---|---|
Hanoi and Nearby Regions | https://www.lalamove.com/en-vn/all-vehicle-pricing-detail?&city=hanoi |
Ho Chi Minh City and Nearby Regions | https://www.lalamove.com/en-vn/all-vehicle-pricing-detail?&city=hochiminhcity |
Phone Validation
We accept E.164 standard format and use below regex rule as our core validation logic. We further validate by using Google's Lib Phone Number library.
Markets | Sample | Regex |
---|---|---|
All Markets | +6512345678 | ^\+[1-9]\d{1,14}$ |
Time Display
All timestamp information in Lalamove API are presented in UTC timezone.
Service Types & Special Requests
Lalamove provides a range of vehicles to cater different needs.
Kindly note that shipping service terminologies listed in Lalamove Website are different from the serviceType
values included in your payload. Kindly check the Get City Endpoint for the serviceType values for your city!
On top of that, you can also add special requests to your order! Kindly ensure that you are using valid special request keys in your quotations by periodically checking the available specialRequest values by calling the Get City Endpoint.
New Order ID Specifications
Starting September 2nd, 2025 Lalamove Order Number will be extended from 12 digits to 19 digits. Please be advised that this adjustment may impact your system if the order number is currently declared as 'int' or stored as a fixed 12-digit format. While your order placement via API will continue to be successful, your system may encounter parsing issue and fail to process the order correctly due to the increased digits in the order number format. Kindly ensure that your integration is up to date by the corresponding effective time.
Market | Effective timezone |
---|---|
Hong Kong | September 2, 2025 20:00 HKT |
Mexico | September 2, 2025 01:00 MXT |
Indonesia | September 9, 2025 19:00 JKT |
Malaysia | September 9, 2025 20:00 MYT |
Philippines | September 9, 2025 20:00 PHT |
Vietnam | September 9, 2025 19:00 VNT |
Taiwan | September 16, 2025 20:00 TWT |
Thailand | September 16, 2025 19:00 THT |
Singapore | September 23, 2025 20:00 SGT |
Brazil | September 23, 2025 04:00 BRT |
Get Quotation
POST
Sandbox: https://rest.sandbox.lalamove.com/v3/quotations
Production: https://rest.lalamove.com/v3/quotations
const pickupCo = {
lat: "22.33547351186244",
lng: "114.17615807116502",
};
const dropoffCo = {
lat: "22.28129462633954",
lng: "114.15986100706951",
};
const pickup = {
coordinates: pickupCo,
address: "Innocentre, 72 Tat Chee Ave, Kowloon Tong",
};
const dropoff = {
coordinates: dropoffCo,
address: "Statue Square, Des Voeux Rd Central, Central",
};
const quotationPayload = SDKClient.QuotationPayloadBuilder.quotationPayload()
.withLanguage("en_HK")
.withServiceType("COURIER")
.withStops([stop1, stop2])
.build();
const quotation = await sdkClient.Quotation.create("HK", quotationPayload);
> Body
{
"data": {
"scheduleAt": "2020-09-01T14:30:00.00Z", // optional
"serviceType": "MOTORCYCLE",
"specialRequests": ["TOLL_FEE_10", "PURCHASE_SERVICE_1"], // optional
"language": "en_HK",
"stops": [<DeliveryStop>],
"item": { // Recommended
"quantity": "3",
"weight": "LESS_THAN_3KG",
"categories": ["FOOD_DELIVERY","OFFICE_ITEM"],
"handlingInstructions": ["KEEP_UPRIGHT"]
},
"isRouteOptimized": true, // optional
}
}
Responses
201
Quotation Created
{
"data": {
"quotationId": "1514140994227007571",
"scheduleAt": "2022-04-13T07:18:38.00Z",
"expiresAt": "2022-04-13T07:23:39.00Z",
"serviceType": "MOTORCYCLE",
"specialRequests": [
"TOLL_FEE_10",
"PURCHASE_SERVICE_1"
],
"language": "EN_HK",
"stops": [
{
"stopId": "1514140995971838016",
"coordinates": {
"lat": "22.3354735",
"lng": "114.1761581"
},
"address": "Innocentre, 72 Tat Chee Ave, Kowloon Tong"
},
{
"stopId": "1514140995971838017",
"coordinates": {
"lat": "22.2812946",
"lng": "114.1598610"
},
"address": "Statue Square, Des Voeux Rd Central, Central"
}
],
"isRouteOptimized": false,
"priceBreakdown": {
"base": "90",
"specialRequests": "13",
"vat": "21",
"totalBeforeOptimization": "124",
"totalExcludePriorityFee": "124",
"total": "124",
"currency": "HKD"
},
"item": {
"weight": "LESS_THAN_3_KG",
"categories": [
"OFFICE_ITEM",
"OTHERS"
]
},
"distance": {
"value": "5836",
"unit": "m"
}
}
}
422
Not enough stops, number of stops should be between 2 and 16
{ "message": "ERR_INSUFFICIENT_STOPS" }
422
Reached maximum number of stops (including the pick-up point), should be between 2 and 17
{ "message": "ERR_TOO_MANY_STOPS" }
422
Invalid market, getting a quotation from a market not supported
{ "message": "ERR_INVALID_MARKET" }
422
Invalid phone number, refer to Phone Validation
{ "message": "ERR_INVALID_PHONE_NUMBER" }
422
scheduleAt
datetime is in the past
{ "message": "ERR_INVALID_SCHEDULE_TIME" }
422
No such service type, make sure to stick to Service types in each markets
{ "message": "ERR_INVALID_SERVICE_TYPE" }
422
No such special request(s), make sure that special requests match with selected Service types
{ "message": "ERR_INVALID_SPECIAL_REQUEST" }
422
Out of service area
{ "message": "ERR_OUT_OF_SERVICE_AREA" }
422
Fail to reverse from address to location, providelat
andlng
{ "message": "ERR_REVERSE_GEOCODE_FAILURE" }
POST
/v3/quotations
Request a quotation.
Will return an object containing quotationId
, stops
, special requests
, price
and currency
based on information provided.
Body
serviceType |
string |
The type of vehicle. Please check our Get City Info Endpoint available in each market |
stops |
DeliveryStop[] |
Array of DeliveryStop s (minimum 2, maximum 16) |
language |
string |
Language for addresses in stops , see Language |
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 each market |
isRouteOptimized |
boolean |
|
item |
Object |
Object of delivery item's information |
scheduleAt
Our API will interpret the scheduleAt
time in UTC format (Coordinated Universal Time) only. Therefore please make sure you submit your requests factoring this in. Please see the example below.
You would like to place an order with a scheduleAt time of 2020-07-10 15:00, local time in Singapore. Singapore is UTC +8 timezone. Therefore your scheduleAt
time entry should be 2020-07-10T07:00:00.000Z
. Please find below your current timezone compared side-by-side with UTC.
Your Local Time | UTC Time |
---|---|
- ISO 8601 format
Delivery Stop
Delivery Stop
{
"coordinates": {
"lat": "22.3353139",
"lng": "114.1758402"
},
"address": "Jl. Perum Dasana"
}
coordinates.lat |
string |
Latitude - up to 15 decimal value |
coordinates.lng |
string |
Longitude - up to 15 decimal value |
address |
string |
Street address in plain text |
Item Information
Information about the delivered item. This will help Lalamove drivers deliver more reliably and efficiently.
Item Information
{
"item":{
"quantity":"12",
"weight":"LESS_THAN_3_KG",
"categories":[
"FOOD_DELIVERY",
"OFFICE_ITEM"
],
"handlingInstructions":[
"KEEP_UPRIGHT",
"FRAGILE"
]
}
}
quantity |
string |
Number of items |
weight |
string |
Weight of items in ENUM |
categories |
Array |
Categories of the items |
handlingInstructions |
Array |
Handling instructions for items |
Quotation Details
GET
Sandbox: https://rest.sandbox.lalamove.com/v3/quotations/{quotationId}
Production: https://rest.lalamove.com/v3/quotations/{quotationId}
Retrieve a quotation's information
const quotDetail = await sdKClient.Quotation.retrieve(market: string, quotationId: string);
Responses
200
{
"data": {
"quotationId": "1514140994227007571",
"scheduleAt": "2022-04-13T07:18:38.00Z",
"expiresAt": "2022-04-13T07:23:39.00Z",
"serviceType": "MOTORCYCLE",
"specialRequests": [
"TOLL_FEE_10",
"PURCHASE_SERVICE_1"
],
"language": "EN_HK",
"stops": [
{
"stopId": "1514140995971838016",
"coordinates": {
"lat": "22.3354735",
"lng": "114.1761581"
},
"address": "Innocentre, 72 Tat Chee Ave, Kowloon Tong"
},
{
"stopId": "1514140995971838017",
"coordinates": {
"lat": "22.2812946",
"lng": "114.1598610"
},
"address": "Statue Square, Des Voeux Rd Central, Central"
}
],
"isRouteOptimized": false,
"priceBreakdown": {
"base": "90",
"specialRequests": "13",
"vat": "21",
"totalBeforeOptimization": "124",
"totalExcludePriorityFee": "124",
"total": "124",
"currency": "HKD"
},
"item": {
"weight": "LESS_THAN_3_KG",
"categories": [
"OFFICE_ITEM",
"OTHERS"
]
}
}
Place Order
POST
Sandbox: https://rest.sandbox.lalamove.com/v3/orders
Production: https://rest.lalamove.com/v3/orders
cURL --location --request POST 'https://rest.sandbox.lalamove.com/v3/orders' \
-H 'Content-Type: application/json' \
-H 'Authorization: hmac {API_KEY}:{timestamp}:{Signature}' \
-H 'MARKET: HK' \
-H 'Request-ID: cd8c5259-5719-4efc-8431-eecf02a66238' \
--data-raw '{"data"...}'
const orderPayload = SDKClient.OrderPayloadBuilder.orderPayload()
.withIsPODEnabled(true)
.withQuotationID(quotation.id)
.withSender({
stopId: quotation.stops[0].stopId,
name: "Michal",
phone: "+85256847123",
})
.withRecipients([
{
stopId: quotation.stops[1].stopId,
name: "Rustam",
phone: "+85256847456",
},
]),
.withMetadata (
{
"restaurantOrderId": "1234",
"restaurantName": "Rustam's Kebab",
}
)
.build();
const order = await sdKClient.Order.create("HK", orderPayload);
Body
{
"data": {
"quotationId": "1471722666401517645",
"sender": {
"stopId": "112345623",
"name": "Michal",
"phone": "11955555555"
},
"recipients": [
{
"stopId": "112345678",
"name": "Karen",
"phone": "+660923447537",
"remarks": "YYYYYY" // optional
}
],
"isPODEnabled": true, // optional
"partner": "Lalamove Partner 1", // optional
"metadata": {
"restaurantOrderId": "1234",
"restaurantName": "Rustam's Kebab"
}
}
}
Responses
201
Order Created
{
"data": {
"orderId": "107900701184",
"quotationId": "1471722666401517645",
"priceBreakdown": {
"base": "100",
"extraMileage": "10",
"surcharge": "20",
"...": "",
"totalExcludePriorityFee": "130",
"total": "150",
"currency": "THB",
"priorityFee":"20"
},
"driverId": "33522",
"shareLink": "https://share.lalamove.com/?TH1234556&lang=th_TH&version=2",
"status": "COMPLETED",
"distance": {
"value": "16200",
"unit": "m"
},
"stops": [
{
"coordinates": {
"lat": "22.3353139",
"lng": "114.1758402"
},
"address": "Jl. Perum Dasana",
"name": "dodo",
"phone": "+660923447537"
},
{
"stopId": "1231231231",
"coordinates": {
"lat": "22.3203648",
"lng": "114.169773"
},
"address": "Jl. Kartini, Ruko No. 1E",
"name": "dodo",
"phone": "+660923447537",
"POD": {
"status": "DELIVERED",
"image": "POD_IMAGE_URL",
"deliveredAt": "2022-01-20T06:26:39.721Z"
}
}
],
"metadata": {
"restaurantOrderId": "1234",
"restaurantName": "Rustam's Kebab"
}
}
}
402
You have insufficient credit. Please top up your wallet
{ "message": "ERR_INSUFFICIENT_CREDIT" }
429
Too Many Requests
{ "message": "ERR_RATE_LIMIT_EXCEEDED" }
POST
/v3/orders
Provide the quotationID
and stopId
received from /quotations
and add contact information for both the sender
and recipients
. In order to ensure a smooth transaction, kindly ensure that you are sending 2 orders per second at maximum.
Body
quotationId |
string |
quotationId from /quotations |
sender.name |
string |
Name of the sender. This information will be displayed to the driver. |
sender.phone |
string |
Phone number of the sender. This information will be displayed to the driver. |
recipients |
DeliveryDetails[] |
An array of DeliveryDetails , containing recipient contact and instruction per stop |
Optional Fields | ||
---|---|---|
isPODEnabled |
boolean |
Request driver to carry out "Proof Of Delivery" for all stops in the order. Default to false . See Proof Of Delivery for details. |
partner |
string |
Specify Partner's name for effective tracking and organization. This field is only applicable for channel partners. Please contact partner.support@lalamove.com if you would like to request for your Partner ID |
metadata |
key-value pair |
An object with key-value pairs containing client-specific information |
Response
orderId |
Lalamove Order ID |
quotationId |
Used Quotation ID |
priceBreakdown |
Breakdown of the delivery price |
priorityFee |
Priority fee if it exists |
driverId |
Driver ID once the order is matched. Default value will be "" |
shareLink |
Sharelink of the order. See 'Sharelink' for more details |
status |
Latest status of the order |
distance |
Distance between the pick-up and drop-off locations. See Distance for more details |
stops |
An array of combined object of stop & delivery details |
metadata |
An object with key-value pairs containing client-specific information. This object will only be available if you include it in your order request payload |
DeliveryDetails
DeliveryDetails
{
"stopId": "11841184218725152",
"name": "Sachin",
"phone": "+6600000000",
"remarks": "ORDER#94\r\n1. Tshirt จำนวน 1\r\n2. Hoodie จำนวน 1\r\n"
}
Contact person, mobile phone number and remarks for each Delivery Stop excluding the pick-up point.
stopId |
number |
Identifier for each stop returned from Lalamove. |
name |
string |
Name of the given stop's recipient |
phone |
string |
Phone number of the given stop's recipient, check out Phone Number Validation for exact validation logic. Must be a valid number with region code (ex: +65) |
Optional fields | ||
---|---|---|
remarks |
string |
Additional info about the delivery. eg. building, floor and flat. Use newline \r\n for better readability. Up to 1500 characters. |
Order Details
GET
Sandbox: https://rest.sandbox.lalamove.com/v3/orders/{id}
Production: https://rest.lalamove.com/v3/orders/{id}
GET
/v3/orders/{id}
Params
id |
<orderId> (returned by /v3/orders/ ) |
const orderDetail = await sdKClient.Order.retrieve(market, order.id);
Responses
200
{
"data": {
"orderId": "107900701184",
"quotationId": "1471722666401517645",
"priceBreakdown": {...},
"driverId": "33522",
"shareLink": "https://share.lalamove.com/?TH1234556&lang=th_TH&version=2",
"status": "COMPLETED",
"distance": {
"value": "16200",
"unit": "m"
},
"stops": [
{
"coordinates": {
"lat": "22.3353139",
"lng": "114.1758402"
},
"address": "Jl. Perum Dasana",
"name": "dodo",
"phone": "+660923447537"
},
{
"coordinates": {
"lat": "22.3203648",
"lng": "114.169773"
},
"address": "Jl. Kartini, Ruko No. 1E",
"name": "dodo",
"phone": "+660923447537",
"POD": {
"status": "DELIVERED",
"image": "POD_IMAGE_URL",
"deliveredAt": "2022-01-20T06:26:39.721Z"
}
}
],
"metadata": {
"restaurantOrderId": "1234",
"restaurantName": "Rustam's Kebab"
}
}
}
Response
orderId |
Lalamove Order ID |
quotationId |
Used Quotation ID |
priceBreakdown |
Breakdown of the delivery price. See Price Breakdown |
priorityFee |
Priority fee if it exists |
driverId |
Driver ID once the order is matched. Default value will be "" |
shareLink |
Sharelink of the order. See 'Sharelink' for more details |
status |
Latest status of the order |
distance |
Distance between the pick-up and drop-off locations. See Distance for more details |
stops |
An array of combined object of stop & delivery details |
metadata |
An object with key-value pairs containing client-specific information. This object will only be available if you include it in your order request payload |
Share Link
Share link is meant to be used for sharing delivery information with a 3rd party personnel. The returned link is the same as if a user press "Share" in the Lalamove app. No login is required to view the sharelink.
Proof Of Delivery
Proof Of Delivery (POD) is a request that you can put when you placed the order. If you submit an order requesting POD, the driver will be notified to get signature(s) from the recipient(s) or take photos as a proof of a success delivery.
If you want to enable POD for your delivery, please include "isPODEnabled":true
in the request body
.
status in POD |
Description |
---|---|
PENDING |
The driver hasn't completed the delivery to the stop yet |
DELIVERED |
The driver has completed the order and has taken a photo at the stop |
SIGNED |
The driver has completed the order and received recipient's signature |
FAILED |
The driver couldn't complete the delivery to the stop |
Metadata
Metadata enables you to attach your include your specific information into the order. This will be useful in populating your company-specific information that you want to use as a reference in our order.
In order to do so, add your metadata as key-value pairs inside metadata
object
Kindly check on the code examples on the side for reference.
Driver Details
GET
Sandbox: https://rest.sandbox.lalamove.com/v3/orders/{orderId}/drivers/{id}
Production: https://rest.lalamove.com/v3/orders/{orderId}/drivers/{id}
Responses:
200
{
"data": {
"driverId": "33522",
"name": "David",
"phone": "37013701",
"plateNumber": "**LAM0V*",
"photo": "<PROFILE_PHOTO_URL>",
"coordinates": {
"lat": "13.740167",
"lng": "100.535237",
"updatedAt": "2021-12-01T14:30.00Z"
}
}
}
GET
/v3/orders/{orderId}/drivers/{driverId}
Retrieve driver's information.
This information is available starting 1 hour prior to datetime specified in scheduleAt
datetime or once the driver arrived at the pick up location, whichever is earlier. It will 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 or /orders/{id} response |
Response
driverId |
<LALAMOVE_DRIVER_ID> |
name |
Name of the driver |
phone |
Phone number of the driver. To be encrypted in the future for privacy |
plateNumber |
License plate of the driver's vehicle. First two digits and the last digit is masked with asterisk for privacy |
coordinates |
Last updated location of the driver |
Add Priority Fee
POST
https://rest.sandbox.lalamove.com/v3/orders/{orderId}/priority-fee
https://rest.lalamove.com/v3/orders/{orderId}/priority-fee
Body
{
"data": {
"priorityFee": "20"
}
}
POST
/v3/orders/{orderId}/priority-fee
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 greater than the previous one.
- 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).
This is a sample of add priority fee scenario.
Responses
200
See /orders or /orders/{orderId} for more details on the response
{
"data": {
"orderId": "107900701184",
"quotationId": "1471722666401517645",
"priceBreakdown": {
...
"priorityFee": "20"
},
"driverId": "33522",
"shareLink": "https://share.lalamove.com/?TH1234556&lang=th_TH&version=2",
"status": "COMPLETED",
"distance": {...},
"stops": [...]
}
}
402
You do not have enough credits for the action, please top-up your wallet.
{ "message": "ERR_INSUFFICIENT_CREDIT" }
422
The amount you attempted to add does not reach the minimum amount allowed..
{ "message": "ERR_EXCEED_MIN_TIPS" }
422
The amount you attempted to add exceed the maximum amount allowed.
{ "message": "ERR_EXCEED_MAX_TIPS" }
422
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" }
422
You are trying to add priority fee beyond allowable order status(es).
{ "message": "ERR_INVALID_ORDER_STATUS" }
URL Params
orderId |
<LALAMOVE_ORDER_ID> |
Edit Order
PATCH
Sandbox: https://rest.sandbox.lalamove.com/v3/orders/{orderId}
Production: https://rest.lalamove.com/v3/orders/{orderId}
> Body
{
"data": {
"stops": [
{
"coordinates": {
"lat": "22.3354735",
"lng": "114.1761581",
},
"address": "Innocentre, 72 Tat Chee Ave, Kowloon Tong",
"name": "Michal",
"phone": "+85238485765",
"remarks": "please call when you have arrived"
},
{
"coordinates": {
"lat": "22.26308035863828",
"lng": "114.13081794602759",
},
"address": "Telegraph Bay, Cyberport Rd, 薄扶林 Cyberport 1",
"name": "Michal",
"phone": "+85212345679",
"remarks": "please leave the package on the porch"
},
],
},
};
Responses
201
Created
{
"data": {
"orderId": "152610308320",
"quotationId": "1526094807863316502",
"priceBreakdown": {
"base": "10",
"extraMileage": "10",
"surcharge": "11",
"specialRequests": "3",
"priorityFee": "20",
"totalExcludePriorityFee": "34",
"total": "54",
"currency": "HKD"
},
"driverId": "79973",
"shareLink": "https://share.sandbox.lalamove.com?HK100220516145738561910010013603412&lang=en_HK&sign=3b87850928c11309d26b6785d3e65336&source=api_wrapper",
"status": "ON_GOING",
"distance": {
"value": "14417",
"unit": "m"
},
"stops": [
{
"stopId": "1526094809054498905",
"coordinates": {
"lat": "22.3354735",
"lng": "114.1761581"
},
"address": "Innocentre, 72 Tat Chee Ave, Kowloon Tong",
"name": "Michal",
"phone": " 85238485765"
"remarks": "please call when you have arrived"
},
{
"stopId": "1526094809054498906",
"coordinates": {
"lat": "22.2630804",
"lng": "114.1308179"
},
"address": "Telegraph Bay, Cyberport Rd, 薄扶林 Cyberport 1",
"name": "Michal",
"phone": " 85212345679",
"remarks": "please leave the package on the porch",
"POD": {
"status": "PENDING"
}
}
],
"item": {
"weight": "LESS_THAN_3_KG",
"categories": [
"OFFICE_ITEM",
"OTHERS"
]
}
}
}
422
Cancellation Forbidden
{ "message": "Cannot edit order, editing times exceeded" }
422
Unprocessable Entity
{ "message": "Cannot edit order" }
PATCH
/v3/orders/{orderId}
We only allow each particular order to be edited ONCE. Edit Order is only available wherein the Delivery Status is ONGOING
- which means the order was matched to a driver and before it's been picked up.
The only information that can be edited are the drop-off details, the available edit options are either:
- Editing existing drop-off locations; or
- Adding new drop-off points; or
- Remove existing drop-off points but must retain a minimum of 1
You must provide coordinate(s) and address(es) for editing order. The Pick-up details must be in exact values as originally placed, otherwise the Edit Order will fail. Should there be any price changes resulting from Order Edit, it will be reflected immediately. Kindly note that you need to include all the remarks that you submitted when you place the order, otherwise the remarks will be removed.
URL Params
orderId |
<LALAMOVE_ORDER_ID> |
This is a sample of the edit order scenarios.
Cancel Order
DELETE
https://rest.lalamove.com/v3/orders/{orderId}
Responses
204
409
Cancellation Forbidden
{ "message": "ERR_CANCELLATION_FORBIDDEN" }
DELETE
/v3/orders/{orderId}
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
orderId |
<LALAMOVE_ORDER_ID> |
Change Driver
DELETE
https://rest.lalamove.com//v3/orders/{orderId}/drivers/{driverId}
Responses
204
422
Cancellation Forbidden
{ "message": "ERR_CHANGE_DRIVER" }
DELETE
/v3/orders/{orderId}/drivers/{driverId}
If the driver is not moving or not responsive, you will be able to change driver after 15 minutes of matching and before order is picked up by the driver. No additional fee would be incurred.
URL Params
orderId |
<LALAMOVE_ORDER_ID> |
driverId |
<LALAMOVE_DRIVER_ID> |
Body
reason |
Reason for changing the driver. Must pass valid reasons. See below values for more details |
Reasons
Value | Description |
---|---|
DRIVER_LATE |
Driver is late for delivery |
DRIVER_ASKED_CHANGE |
Driver requested the user to change |
DRIVER_UNRESPONSIVE |
Driver is not responding |
DRIVER_RUDE |
Driver is rude |
This is a sample of the change driver scenario.
Get City Info
GET
Sandbox: https://rest.sandbox.lalamove.com/v3/cities
Production: https://rest.lalamove.com/v3/cities
Responses
200
{
"data": [
{
"locode": "TH BKK",
"name": "Bangkok",
"services": [
{
"key": "CAR",
"description": "Ideal for small to medium goods requiring extra care",
"dimensions": {
"length": {
"value": "0.9",
"unit": "m"
},
"width": {
"value": "1",
"unit": "m"
},
"height": {
"value": "0.7",
"unit": "m"
}
},
"load": {
"value": "100",
"unit": "kg"
},
"specialRequests": [
{
//this example shows an upcoming new key with 2 available specifications
"name": "EXTRA_LENGTH_2",
"description": "Extra Length of 2.5 M (standard 1.8 M)",
"parent_type": "Extra Length",
"max_selection": 1,
"effective_time": "2023-10-20T06:26:39.721Z",
"offline_time": ""
},
{
"name": "EXTRA_LENGTH_1",
"description": "Extra Length of 2.1 M (standard 1.8 M)",
"parent_type": "Extra Length",
"max_selection": 1,
"effective_time": "2023-10-20T06:26:39.721Z",
"offline_time": ""
},
{
// this example shows an active key an upcoming offline date
"name": "DOOR_TO_DOOR",
"description": "Door to Door by Driver",
"max_selection": 1,
"effective_time": "",
"offline_time": "2023-10-20T06:26:39.721Z"
},
},
{
// this example shows an active key which doesn't have any scheduled offline date
"name": "ROUND_TRIP",
"description": "Round Trip",
"max_selection": 1,
"effective_time": "",
"offline_time": ""
}
]
},...
}]
}
}
GET
/v3/cities
Adjust the "Market" value in your request header to retrieve information on supported configuration for all cities in the specified market. Please periodically query this endpoint to receive the latest configuration. The information provided in the API response are as follows:
- Cities: city name and its corresponding location code (locode), i.e: Bangkok -->
TH BKK
- Services: available vehicles (services) along with its specification
- Special requests: different special requests are provided for each service type.
Special Requests Object Components
Field | Description |
---|---|
name |
Name of the special request. Use this value in your order payload if you want to use the additional service |
description |
Description of the special request |
parent_type |
Some special requests are structured in parent-child association with single or multi-selection capabilities. This is to indicate which special requests belong to the same parent. |
max_selection |
The maximum number of special requests under the same parent_type that can be applied for 1 quotation request. You can still choose special requests of different parent_type values can still be placed without complying with the max_selection criteria. |
effective_time |
The time when a new special request key will be available for use. The value of this field is only available before the key is online. This time stamp is displayed in UTC timezone. |
offline_time |
The time when an existing special request key will be disabled. The value of this field is only available before the key is disabled. This time stamp is displayed in UTC timezone. |
Webhook
PATCH
Sandbox: https://rest.sandbox.lalamove.com/v3/webhook
Production: https://rest.lalamove.com/v3/webhook
Automatically receive your order status updates using our webhook!
Body
{
"data": {
"url": "YOUR_WEBHOOK_URL"
}
}
Responses
200
{
"data": {
"url": "YOUR_WEBHOOK_URL"
}
}
422
{
"errors": {
"id": "ERR_INVALID_RESPONSE"
"message": "Non-200 response received",
"detail": "'url' validation failed: value is not a valid url"
}
}
There are 2 options to setup the webhook:
- Via API
Make sure your Webhook URL is sending 200 to our requests. For best practices, please refer to our deck.
Call the following endpoint to setup your webhook URL: PATCH
/v3/webhook
Params
url |
URL for Lalamove to send Webhook responses |
- Via Partner Portal
Configure your webhook URL and webhook version through the Webhook section under Developers tab in our Partner Portal. Once you succesfully set up your webhook URL, you can start seeing the webhook messages under Webhook Attempts section of this page.
Webhook Update Types
You will receive a webhook push if any of the followings happen to your orders:
1. Status change (ORDER_STATUS_CHANGED
)
Kindly refer to the Order Status section for the list of applicable order statuses.
2. Driver assigned (DRIVER_ASSIGNED
)
3. Order amount changed (ORDER_AMOUNT_CHANGED
)
4. Order replaced due to information changes by our customer service (ORDER_REPLACED
)
In this case, the initial orderID
will be replaced with the new one.
5. Wallet balance changed (WALLET_BALANCE_CHANGED
)
6. Order edited (ORDER_EDITED
)
Please refer to the following deck for further details and best practices on using our Webhook.
Errors
The Lalamove API uses the following error codes and format.
{
"errors": [
{
"id": "ERR_REQUIRED_FIELD",
"message": "Please verify your field.",
"detail": "'name' validation failed: value cannot be null or empty."
},
{
"id": "ERR_REQUIRED_FIELD",
"message": "Please verify your field.",
"detail": "'market' validation failed: value cannot be null or empty."
},
...
]
}
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 |
Request has been blocked for security reasons. |
404 -- Not Found |
The specified order or driver could not be found. |
422 -- Unprocessable Entity |
There are a list of possible reasons, please refer to error id , message , detail section for details. Another possible cause is access to the targeted order or driver details is unauthorized. Some of the common errors related to this error code are: |
- ERR_INSUFFICIENT_STOPS: Number of stops are less than 2 OR the request body structure is incorrect. I.e: {data: {...}} |
|
- ERR_ORDER_NOT_FOUND: The requested Lalamove Order ID does not exist. | |
- ERR_INVALID_FIELD: The field(s) in the request body is incorrect or written in wrong format. Kindly check the error message for further details. | |
- ERR_MISSING_FIELD: The required field(s) has not been included in the request body. Kindly check the error message for further details. | |
- ERR_TOO_MANY_STOPS: The number of stops requested is exceeded the allowable number of stops (1 pickup and 15 drop-offs). | |
- ERR_INVALID_QUOTATION_ID: The requested Lalamove Quotation ID is either wrong or expired. | |
429 -- Too Many Requests |
You're sending in too many requests. Rate limit for each API can be found on the table below Please check your RateLimit-Limit-Postxxx and RateLimit-Remaining-Postxxx in your header and wait accordingly until the RateLimit-Reset-Postxxx if there's no remaining rates left. ('xxx' represents the name of corresponding API) |
500 -- Internal Server Error |
We had a problem with our server. Try again later. |
API | Sandbox Rate Limit (Requests per Minute) | Production Rate Limit (Requests per Minute) |
---|---|---|
Get Quotation | 30 | 100 |
Get Quotation Details | 50 | 300 |
Place Order | 30 | 100 |
Get Order Details | 50 | 300 |
Get Driver Details | 50 | 300 |
Change Driver | 30 | 100 |
Cancel Order | 30 | 100 |
Add Priority Fee | 30 | 100 |
Get City Info | 50 | 300 |
Getting on Board
- 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
/v3/quotations
and/v3/orders
. - API testing in our Sandbox environment is not mandatory. However, it's recommended that you can test your intended business flow in this environment.
- Before rolling out the integration to production (or commonly known as "Go-Live"), make sure to top up your Production wallet in order to retreive your Production API credentials in Partner Portal.
- If applicable, ensure that your webhook URL has been configured correctly in Partner Portal. More details on Webhook setup can be found in Webhook section.
- Once you are ready, drop us a note at partner.support@lalamove.com
- You are set! Start submitting orders immediately.
Note: kindly check on the Authentication section for more detailed steps to retrieve your Sandbox and Production API Keys and Secrets.
Tutorial
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
Markets | City | POSTMAN Environment | POSTMAN Collection |
---|---|---|---|
Hong Kong, China | Hong Kong (HK ) |
Environment | Collection |
Support
Drop us an email at partner.support@lalamove.com with your questions or feedbacks. Your input is much appreciated! We will get back to you as soon as possible. Kindly refer to the table below on our Support SLA.
Environment | Impacting Services? | Response SLA | Resolution SLA |
---|---|---|---|
Production | Impacted | 2 hour | 8 hour |
Production | Not Impacted | 3 hour | 1 day |
Sandbox | Impacted | 5 hour | 2 days |
Sandbox | Not Impacted | 8 hour | 3 days |
Kindly note that the SLAs are bound to changes depending on the severity of the issue
In use of the Lalamove API and the Lalamove Services, this means you will be governed by and shall be subject to the API Terms & Conditions. You also acknowledged that before you use the Lalamove API and services, you have read, understood and voluntarily agreed to the relevant Terms & Conditions and Privacy Policy.