Get started
API Endpoint: {BASE_URL}/api/public/{API_KEY}
To use this API, you need an API key.
Base URL :
Search address data by keyword
# Here is a curl example
curl \
-X GET {BASE_URL}/api/public/{API_KEY}/address/search?keyword=papua
Used to get origin and destination codes
GET
{BASE_URL}/api/public/{API_KEY}/address/search
In this API, {API_KEY} can be filled by any string because it
will not be validated, still using the structure, as its part
of our legacy system.
Result example :
{
"success": true,
"data": [
{
"COUNTRY_NAME": "Indonesia",
"closedSi": true,
"unsupportedSi": true,
"change": 1,
"_id": "5fc63038f8f44b34aa4c1cc4",
"PROVINCE_NAME": "PAPUA",
"CITY_NAME": "MERAUKE",
"DISTRICT_NAME": "MUTING",
"SUBDISTRICT_NAME": "SEED AGUNG (SEDAYU AGUNG PRASASTI)",
"ZIP_CODE": "99652",
"DESTINATION_CODE": "DJJ20411",
"createdAt": "2020-12-01T11:59:52.763Z",
"updatedAt": "2022-06-08T15:36:19.860Z",
"__v": 0,
"ORIGIN_CODE": "DJJ20400",
"CITY_NAME_SI": "Kab. Merauke",
"DESTINATION_CODE_SI": "DJJ20411",
"ORIGIN_CODE_SI": "MKQ",
"CODE_SAP": "PA1510"
},
]
}
QUERY PARAMETERS
| Field | Type | Description |
|---|---|---|
| keyword | String | Province / City / District / Subdistrict / Zip |
Add user's address
# Here is a curl example
curl \
-X POST {BASE_URL}/api/public/{API_KEY}/address \
-F 'PICKUP_AUTOFILL=5fc63038f8f44b34aa4c1cc4' \
-F 'PICKUP_ADDRESS=Jl. Sederhana No. 142' \
-F 'PICKUP_PIC_PHONE=085270391495' \
-F 'PICKUP_PIC=PIC Name' \
-F 'PICKUP_NAME=Seller or Store Name'
To add address to your account first need to get address data from
GET /address/search
POST
{BASE_URL}/api/public/{API_KEY}/address
Result example :
{
"success": true,
"data": {
"isHide": false,
"dontIncludeSubdistrict": false,
"isPlant": false,
"_id": "632d6c76361422945dbaafd8",
"PICKUP_AUTOFILL": "5fc63038f8f44b34aa4c1cc4",
"PICKUP_ADDRESS": "Jl. Sederhana No. 142",
"PICKUP_PIC_PHONE": "085270391495",
"PICKUP_PIC": "PIC Name",
"PICKUP_NAME": "Seller or Store Name",
"user_id": "5fc6289532d4f232eb029ac8",
"PICKUP_DISTRICT": "MUTING",
"PICKUP_SUBDISTRICT": "SEED AGUNG (SEDAYU AGUNG PRASASTI)",
"PICKUP_REGION": "PAPUA",
"PICKUP_CITY": "MERAUKE",
"PICKUP_CITY_SI": "Kab. Merauke",
"PICKUP_ZIP": "99652",
"PICKUP_DESTINATION_CODE": "DJJ20411",
"PICKUP_DESTINATION_CODE_SI": "DJJ20411",
"PICKUP_ORIGIN_CODE": "DJJ20400",
"PICKUP_ORIGIN_CODE_SI": "MKQ",
"PICKUP_SAP_CODE": "PA1510",
"PICKUP_FULL_AUTOFILL": "PAPUA, MERAUKE, MUTING, SEED AGUNG (SEDAYU AGUNG PRASASTI)",
"createdAt": "2022-09-23T08:21:10.243Z",
"updatedAt": "2022-09-23T08:21:10.243Z",
"__v": 0
}
}
BODY PARAMETERS
| Field | Type | Description |
|---|---|---|
| PICKUP_AUTOFILL | String |
_id of address data from this route
/address/search
|
| PICKUP_ADDRESS | String | Address text |
| PICKUP_PIC_PHONE | String | Phone Number |
| PICKUP_PIC | String | PIC Name |
| PICKUP_NAME | String | Seller or Store Name |
| SHIPPER_ADDR1 | String | (optional) If return address is different |
| SHIPPER_AUTOFILL | String |
(optional) _id of address data from this route
/address/search
|
| SHIPPER_CONTACT | String | (optional)Seller or Store Name |
| SHIPPER_PHONE | String | (optional) Phone Number |
| _id | String | (optional) Use address id to update existed address |
get user's addresses
# Here is a curl example
curl \
-X GET {BASE_URL}/api/public/{API_KEY}/address'
GET
{BASE_URL}/api/public/{API_KEY}/address
Result example :
{
"success": true,
"data": [
{
"isHide": false,
"dontIncludeSubdistrict": false,
"isPlant": false,
"_id": "632d6c76361422945dbaafd8",
"PICKUP_AUTOFILL": "5fc63038f8f44b34aa4c1cc4",
"PICKUP_ADDRESS": "Jl. Sederhana No. 142",
"PICKUP_PIC_PHONE": "085270391495",
"PICKUP_PIC": "PIC Name",
"PICKUP_NAME": "Seller or Store Name",
"user_id": "5fc6289532d4f232eb029ac8",
"PICKUP_DISTRICT": "MUTING",
"PICKUP_SUBDISTRICT": "SEED AGUNG (SEDAYU AGUNG PRASASTI)",
"PICKUP_REGION": "PAPUA",
"PICKUP_CITY": "MERAUKE",
"PICKUP_CITY_SI": "Kab. Merauke",
"PICKUP_ZIP": "99652",
"PICKUP_DESTINATION_CODE": "DJJ20411",
"PICKUP_DESTINATION_CODE_SI": "DJJ20411",
"PICKUP_ORIGIN_CODE": "DJJ20400",
"PICKUP_ORIGIN_CODE_SI": "MKQ",
"PICKUP_SAP_CODE": "PA1510",
"PICKUP_FULL_AUTOFILL": "PAPUA, MERAUKE, MUTING, SEED AGUNG (SEDAYU AGUNG PRASASTI)",
"createdAt": "2022-09-23T08:21:10.243Z",
"updatedAt": "2022-09-23T08:21:10.243Z",
"__v": 0
}
]
}
add time
# Here is a curl example
curl \
-X POST {BASE_URL}/api/public/{API_KEY}/time' \
-F 'address_id=62e27d67ecf5ae2893bc070a' \
-F 'date=11-27-2022' \
-F 'time=13:00'
Pickup time used in order creation POST
{BASE_URL}/api/public/{API_KEY}/time
Result example :
{
"success": true,
"data": [
{
"isHide": false,
"dontIncludeSubdistrict": false,
"isPlant": false,
"_id": "632d6c76361422945dbaafd8",
"PICKUP_AUTOFILL": "5fc63038f8f44b34aa4c1cc4",
"PICKUP_ADDRESS": "Jl. Sederhana No. 142",
"PICKUP_PIC_PHONE": "085270391495",
"PICKUP_PIC": "PIC Name",
"PICKUP_NAME": "Seller or Store Name",
"user_id": "5fc6289532d4f232eb029ac8",
"PICKUP_DISTRICT": "MUTING",
"PICKUP_SUBDISTRICT": "SEED AGUNG (SEDAYU AGUNG PRASASTI)",
"PICKUP_REGION": "PAPUA",
"PICKUP_CITY": "MERAUKE",
"PICKUP_CITY_SI": "Kab. Merauke",
"PICKUP_ZIP": "99652",
"PICKUP_DESTINATION_CODE": "DJJ20411",
"PICKUP_DESTINATION_CODE_SI": "DJJ20411",
"PICKUP_ORIGIN_CODE": "DJJ20400",
"PICKUP_ORIGIN_CODE_SI": "MKQ",
"PICKUP_SAP_CODE": "PA1510",
"PICKUP_FULL_AUTOFILL": "PAPUA, MERAUKE, MUTING, SEED AGUNG (SEDAYU AGUNG PRASASTI)",
"createdAt": "2022-09-23T08:21:10.243Z",
"updatedAt": "2022-09-23T08:21:10.243Z",
"__v": 0
}
]
}
BODY PARAMETERS
| Field | Type | Description |
|---|---|---|
| address_id | String | user's address _id |
| date | String | mm-dd-yyyy format |
| time | String | 9:00, 10:00, 11:00, 12:00, 13:00, 14:00, 15:00, 16:00, 17:00, 18:00 |
get my users (assignee)
# Here is a curl example
curl \
-X GET {BASE_URL}/api/public/{API_KEY}/my-users'
GET
{BASE_URL}/api/public/{API_KEY}/my-users
Result example :
{
"success": true,
"data": [
{
"_id": "67d116f5b68d715ee586ab96",
"name": "abbi",
"email": "[email protected]"
},
{
"_id": "67c58e190a9a21d23e220207",
"name": "Udin Conello",
"email": "[email protected]"
},
...
]
}
get time
# Here is a curl example
curl \
-X GET {BASE_URL}/api/public/{API_KEY}/time' \
-d 'address=62e27d67ecf5ae2893bc070a'
GET
{BASE_URL}/api/public/{API_KEY}/time
Result example :
{
"success": true,
"data": [
{
"_id": "62e27d81ecf5ae2893bc070b",
"date": "2023-02-24T12:00:00.000Z",
"time": "12:00"
},
{
"_id": "62ea1fcaf0e12d8a980d8eb9",
"date": "2023-12-22T10:00:00.000Z",
"time": "10:00"
},
]
}
Check Shipping Fee
# Here is a curl example
curl \
-X GET {BASE_URL}/api/public/{API_KEY}/order/estimate' \
-d 'origin_id=5fc62f5df8f44b34aa4c0d8c' \
-d 'destination_id=5fc64714f8f44b34aa4cdd60' \
-d 'courier=Sap' \
-d 'weight=1' \
-d 'COD_AMOUNT=123'
GET
{BASE_URL}/api/public/{API_KEY}/order/estimate
Result example :
{
"success": true,
"data": {
"price": 23000,
"coverage_cod": false,
"currency": "IDR",
"discountPercent": 20,
"discount": 4600,
"codFee": 4,
"estimatedPrice": 23004,
"estimatedSpecialPrice": 18404,
"unsupported_cod": false, // indicates if COD service is not supported for this area.
"unsupported": false, // indicates if courier service is not available for this area.
}
}
QUERY PARAMETERS
| Field | Type | Description |
|---|---|---|
| origin_id | String |
_id of address data from this route
/address/search
|
| destination_id | String |
_id of address data from this route
/address/search
|
| courier | String | The value should be "JNE" or "SiCepat" or "Sap" or "iDexpress" or "JT" or "Ninja" or "lion" or "anteraja" or "all". The default value will be "JNE". For "all" value will return array of each courier |
| weight | Number | (default: 1). Unit in kg(kilogram) |
| COD_AMOUNT | Number | COD Amount = Goods Value + Shipping Fee. Used to calculate the COD service fee.
For Shipping Fee, get the price from the response. |
Notes
- Possibilities for unsupported and unsupported_cod:
- if unsupported true and unsupported_cod true, it means CAN'T send to the destination BOTH COD AND NON COD
- if unsupported true and unsupported_cod false, it means CAN'T send to the destination BOTH COD AND NON COD
- if unsupported false & unsupported_cod true, it means can't send to destination with COD BUT still CAN send to destination with Non COD
- if unsupported false and unsupported_cod false, it means can send COD or Non COD
- Discount calculation in this API is based on user's shipping volume, you can refer to this page Diskon Ongkos Kirim. Unlike the Estimate Public API /allEstimatePublic which has a fixed 20% discount.
Check Shipping Fee Public
# Here is a curl example
curl \
-X GET {BASE_URL}/api/order/allEstimatePublic' \
-d 'origin_id=5fc62f5df8f44b34aa4c0d8c' \
-d 'destination_id=5fc64714f8f44b34aa4cdd60' \
-d 'weight=1' \
-d 'COD_AMOUNT=123'
GET
{BASE_URL}/api/order/allEstimatePublic
This api based on this page Cek Ongkos Kirim Mengantar
Note: This endpoint returns flat pricing with standardized discounts applied by Mengantar.
Result example :
{
"success": true,
"data": {
"JT": {
"unsupported": false,
"unsupported_cod": false,
"price": 21000,
"estimate_delivery": "-",
"discountPercent": 20,
"cargoDiscountPercent": 0,
"discount": 4200,
"cargoDiscount": 0,
"codFee": 4,
"estimatedPrice": 21004,
"estimatedSpecialPrice": 16804,
"cargoEstimatedPrice": 0,
"cargoEstimatedSpecialPrice": 0,
"estimatedDate": "2-4 hari",
"discountExtraPercent": 0,
"discountExtra": 0,
"cargoDiscountExtraPercent": 0,
"cargoDiscountExtra": 0
},
...otherCouriers
}
}
QUERY PARAMETERS
| Field | Type | Description |
|---|---|---|
| origin_id | String |
_id of address data from this route
/address/search
|
| destination_id | String |
_id of address data from this route
/address/search
|
| weight | Number | (default: 1). Unit in kg(kilogram) |
| COD_AMOUNT | Number | COD Amount = Goods Value + Shipping Fee. Used to calculate the COD service fee.
For Shipping Fee, get the price from the response. |
Notes
- Possibilities for unsupported and unsupported_cod:
- if unsupported true and unsupported_cod true, it means CAN'T send to the destination BOTH COD AND NON COD
- if unsupported true and unsupported_cod false, it means CAN'T send to the destination BOTH COD AND NON COD
- if unsupported false & unsupported_cod true, it means can't send to destination with COD BUT still CAN send to destination with Non COD
- if unsupported false and unsupported_cod false, it means can send COD or Non COD
- Discount will always be 20% from shipping fee for all users.
- This endpoint returns flat pricing - standardized prices with Mengantar's markup and discount structure applied.
Get Courier Performance
# Here is a curl example
curl -X POST '{BASE_URL}/public/{API_KEY}/order/getPerformancePublic' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-d '{"city": "JEMBER", "allEstimateData": {"JNE": {"insuranceCap": 0, "maxInsuranceFeeInternalCovered": 0, "insuranceFee": 0, "extraInsuranceCharged": 0, "insuranceFeePercentageCharged": 0, "price": 0, "discountPercent": 20, "cargoDiscountPercent": 5, "discount": 0, "cargoDiscount": 0, "codFee": 0, "estimatedPrice": 0, "estimatedSpecialPrice": 0, "cargoEstimatedPrice": 0, "cargoEstimatedSpecialPrice": 0, "estimatedDate": "2-4 hari", "discountExtraPercent": 0, "discountExtra": 0, "cargoDiscountExtraPercent": 0, "cargoDiscountExtra": 0, "estimate_delivery": "undefined", "unsupported": true}, "JNECargo": {"insuranceCap": 0, "maxInsuranceFeeInternalCovered": 0, "insuranceFee": 0, "extraInsuranceCharged": 0, "insuranceFeePercentageCharged": 0, "discountPercent": 20, "cargoDiscountPercent": 5, "discount": null, "cargoDiscount": 0, "codFee": 0, "estimatedPrice": null, "estimatedSpecialPrice": null, "cargoEstimatedPrice": 0, "cargoEstimatedSpecialPrice": 0, "estimatedDate": "2-4 hari", "discountExtraPercent": 0, "discountExtra": 0, "cargoDiscountExtraPercent": 0, "cargoDiscountExtra": 0, "estimate_delivery": "undefined", "price": 0, "unsupported": true}, "SiCepat": {"insuranceCap": 0, "maxInsuranceFeeInternalCovered": 0, "insuranceFee": 0, "extraInsuranceCharged": 0, "insuranceFeePercentageCharged": 0, "price": 50312, "currency": "IDR", "cargoPrice": 69439, "estimate_delivery": "1 - 2 Days", "estimate_delivery_cargo": "2 - 3 Days", "discountPercent": 20, "cargoDiscountPercent": 5, "discount": 10062.4, "cargoDiscount": 3471.95, "codFee": 0, "estimatedPrice": 50312, "estimatedSpecialPrice": 40250, "cargoEstimatedPrice": 69439, "cargoEstimatedSpecialPrice": 65967, "estimatedDate": "2-4 hari", "discountExtraPercent": 0, "discountExtra": 0, "cargoDiscountExtraPercent": 0, "cargoDiscountExtra": 0, "unsupported": false, "unsupportedOriginSicepat": true, "originId": "5fc62f6af8f44b34aa4c0e95", "destinationId": "5fc632def8f44b34aa4c4225", "unsupportedPickup": true}, "SiCepatCargo": {"insuranceCap": 0, "maxInsuranceFeeInternalCovered": 0, "insuranceFee": 0, "extraInsuranceCharged": 0, "insuranceFeePercentageCharged": 0, "price": 69439, "currency": "IDR", "cargoPrice": 69439, "estimate_delivery": "1 - 2 Days", "estimate_delivery_cargo": "2 - 3 Days", "discountPercent": 5, "cargoDiscountPercent": 5, "discount": 3471.95, "cargoDiscount": 3471.95, "codFee": 0, "estimatedPrice": 50312, "estimatedSpecialPrice": 40250, "cargoEstimatedPrice": 69439, "cargoEstimatedSpecialPrice": 65967, "estimatedDate": "2-4 hari", "discountExtraPercent": 0, "discountExtra": 0, "cargoDiscountExtraPercent": 0, "cargoDiscountExtra": 0, "unsupported": false, "unsupportedOriginSicepat": true, "originId": "5fc62f6af8f44b34aa4c0e95", "destinationId": "5fc632def8f44b34aa4c4225", "unsupportedPickup": true}, "SAP": {"insuranceCap": 0, "maxInsuranceFeeInternalCovered": 0, "insuranceFee": 0, "extraInsuranceCharged": 0, "insuranceFeePercentageCharged": 0, "price": 23000, "coverage_cod": true, "unsupported": false, "unsupported_cod": false, "currency": "IDR", "isFlat": false, "discountPercent": 20, "cargoDiscountPercent": 20, "discount": 4600, "cargoDiscount": 0, "codFee": 0, "estimatedPrice": 23000, "estimatedSpecialPrice": 17250, "cargoEstimatedPrice": 0, "cargoEstimatedSpecialPrice": 0, "estimatedDate": "2-4 hari", "discountExtraPercent": 5, "discountExtra": 1150, "cargoDiscountExtraPercent": 5, "cargoDiscountExtra": 0, "estimate_delivery": "2 - 4 days", "origin_data": {"price": 23000, "coverage_cod": true, "unsupported": false, "unsupported_cod": false, "currency": "IDR", "iDlite": false, "discountPercent": 20, "cargoDiscountPercent": 20, "discount": 4600, "cargoDiscount": 0, "codFee": 0, "estimatedPrice": 23000, "estimatedSpecialPrice": 17250, "cargoEstimatedPrice": 0, "cargoEstimatedSpecialPrice": 0, "estimatedDate": "2-4 hari", "discountExtraPercent": 5, "discountExtra": 1150, "cargoDiscountExtraPercent": 5, "cargoDiscountExtra": 0, "estimate_delivery": "2 - 4 days"}}, "SAPLite": {"insuranceCap": 0, "maxInsuranceFeeInternalCovered": 0, "insuranceFee": 0, "extraInsuranceCharged": 0, "insuranceFeePercentageCharged": 0, "iDlite": true, "price": 23000, "price1kg": 23000, "coverage_cod": true, "unsupported": false, "unsupported_cod": false, "currency": "IDR", "iDliteDiscount": 6900, "isNewDiscount": true, "discountPercent": 5, "cargoDiscountPercent": 20, "discount": 805, "cargoDiscount": 0, "codFee": 0, "estimatedPrice": 16100, "estimatedSpecialPrice": 15295, "cargoEstimatedPrice": 0, "cargoEstimatedSpecialPrice": 0, "estimatedDate": "2-4 hari", "discountExtraPercent": 0, "discountExtra": 0, "cargoDiscountExtraPercent": 0, "cargoDiscountExtra": 0, "estimate_delivery": "2 - 4 days"}, "SapCargo": {"insuranceCap": 0, "maxInsuranceFeeInternalCovered": 0, "insuranceFee": 0, "extraInsuranceCharged": 0, "insuranceFeePercentageCharged": 0, "price": 52500, "cargoPrice": 52500, "estimate_delivery": "2 - 4 days", "estimate_delivery_cargo": "3 - 6 days", "currency": "IDR", "unsupported_cod": true, "minimumWeightCargo": 5, "chargedWeight": 1, "inputWeight": 1, "discountPercent": 20, "cargoDiscountPercent": 20, "discount": 10500, "cargoDiscount": 10500, "codFee": 0, "estimatedPrice": 52500, "estimatedSpecialPrice": 39375, "cargoEstimatedPrice": 52500, "cargoEstimatedSpecialPrice": 39375, "estimatedDate": "2-4 hari", "discountExtraPercent": 5, "discountExtra": 2625, "cargoDiscountExtraPercent": 5, "cargoDiscountExtra": 2625}, "iDexpress": {"insuranceCap": 0, "maxInsuranceFeeInternalCovered": 0, "insuranceFee": 0, "extraInsuranceCharged": 0, "insuranceFeePercentageCharged": 0, "isNewDiscount": true, "price": 0, "estimate_delivery": "-", "price1kg": 0, "iDlite": false, "unsupported": true, "isFlat": false, "unsupported_cod": false, "discountPercent": 20, "cargoDiscountPercent": 10, "discount": 0, "cargoDiscount": 0, "codFee": 0, "estimatedPrice": 0, "estimatedSpecialPrice": 0, "cargoEstimatedPrice": 0, "cargoEstimatedSpecialPrice": 0, "estimatedDate": "2-4 hari", "discountExtraPercent": 0, "discountExtra": 0, "cargoDiscountExtraPercent": 0, "cargoDiscountExtra": 0}, "iDlite": {"insuranceCap": 0, "maxInsuranceFeeInternalCovered": 0, "insuranceFee": 0, "extraInsuranceCharged": 0, "insuranceFeePercentageCharged": 0, "price": 0, "iDlite": true, "estimate_delivery": "-", "unsupported": true, "isNewDiscount": true, "isFlat": false, "unsupported_cod": false, "priceLite": 0, "discountPercent": 5, "cargoDiscountPercent": 0, "discount": 0, "cargoDiscount": 0, "codFee": 0, "estimatedPrice": 0, "estimatedSpecialPrice": 0, "cargoEstimatedPrice": 0, "cargoEstimatedSpecialPrice": 0, "estimatedDate": "2-4 hari", "discountExtraPercent": 0, "discountExtra": 0, "cargoDiscountExtraPercent": 0, "cargoDiscountExtra": 0}, "JT": {"insuranceCap": 0, "maxInsuranceFeeInternalCovered": 0, "insuranceFee": 0, "extraInsuranceCharged": 0, "insuranceFeePercentageCharged": 0, "unsupported": false, "unsupported_cod": false, "price": 97978, "estimate_delivery": "-", "discountPercent": 20, "cargoDiscountPercent": 0, "discount": 19595.6, "cargoDiscount": 0, "codFee": 0, "estimatedPrice": 97978, "estimatedSpecialPrice": 78382, "cargoEstimatedPrice": 0, "cargoEstimatedSpecialPrice": 0, "estimatedDate": "2-4 hari", "discountExtraPercent": 0, "discountExtra": 0, "cargoDiscountExtraPercent": 0, "cargoDiscountExtra": 0}, "lion": {"insuranceCap": 0, "maxInsuranceFeeInternalCovered": 0, "insuranceFee": 0, "extraInsuranceCharged": 0, "insuranceFeePercentageCharged": 0, "currency": "IDR", "unsupported": false, "unsupported_cod": false, "estimatedDate": "3 - 5 Hari", "estimate_delivery": "3 - 5 Hari", "price": 42500, "discountPercent": 20, "cargoDiscountPercent": 0, "discount": 8500, "cargoDiscount": 0, "codFee": 0, "estimatedPrice": 42500, "estimatedSpecialPrice": 29325, "cargoEstimatedPrice": 0, "cargoEstimatedSpecialPrice": 0, "discountExtraPercent": 11, "discountExtra": 4675, "cargoDiscountExtraPercent": 11, "cargoDiscountExtra": 0}, "iDexpressCargo": {"insuranceCap": 0, "maxInsuranceFeeInternalCovered": 0, "insuranceFee": 0, "extraInsuranceCharged": 0, "insuranceFeePercentageCharged": 0, "price": 0, "cargoPrice": 0, "estimate_delivery": "-", "estimate_delivery_cargo": "-", "unsupported": true, "unsupported_cod": false, "discountPercent": 20, "cargoDiscountPercent": 10, "discount": 0, "cargoDiscount": 0, "codFee": 0, "estimatedPrice": 0, "estimatedSpecialPrice": 0, "cargoEstimatedPrice": 0, "cargoEstimatedSpecialPrice": 0, "estimatedDate": "2-4 hari", "discountExtraPercent": 0, "discountExtra": 0, "cargoDiscountExtraPercent": 0, "cargoDiscountExtra": 0}, "anteraja": {"currency": "IDR", "unsupported": true, "unsupported_cod": true, "estimate_delivery": "-", "price": 0, "discountPercent": 20, "cargoDiscountPercent": 0, "discount": 0, "cargoDiscount": 0, "codFee": 0, "estimatedPrice": 0, "estimatedSpecialPrice": 0, "cargoEstimatedPrice": 0, "cargoEstimatedSpecialPrice": 0, "estimatedDate": "2-4 hari", "discountExtraPercent": 10, "discountExtra": 0, "cargoDiscountExtraPercent": 10, "cargoDiscountExtra": 0}, "paxel": {"currency": "IDR", "unsupported": true, "unsupported_cod": true, "estimate_delivery": "-", "price": 0, "pickupSchedule": null, "discountPercent": 20, "cargoDiscountPercent": 0, "discount": 0, "cargoDiscount": 0, "codFee": 0, "estimatedPrice": 0, "estimatedSpecialPrice": 0, "cargoEstimatedPrice": 0, "cargoEstimatedSpecialPrice": 0, "estimatedDate": "2-4 hari", "discountExtraPercent": 12, "discountExtra": 0, "cargoDiscountExtraPercent": 12, "cargoDiscountExtra": 0}, "Ninja": {"insuranceCap": 0, "maxInsuranceFeeInternalCovered": 0, "insuranceFee": 0, "extraInsuranceCharged": 0, "insuranceFeePercentageCharged": 0, "price": 22000, "currency": "IDR", "discountPercent": 20, "cargoDiscountPercent": 20, "discount": 4400, "cargoDiscount": 0, "codFee": 0, "estimatedPrice": 22000, "estimatedSpecialPrice": 17600, "cargoEstimatedPrice": 0, "cargoEstimatedSpecialPrice": 0, "estimatedDate": "2-4 hari", "discountExtraPercent": 0, "discountExtra": 0, "cargoDiscountExtraPercent": 0, "cargoDiscountExtra": 0, "estimate_delivery": "-", "unsupported": false}, "pos": {"currency": "IDR", "unsupported": false, "unsupported_cod": false, "estimate_delivery": "2 HARI", "price": 7000, "discountPercent": 20, "cargoDiscountPercent": 0, "discount": 1400, "cargoDiscount": 0, "codFee": 0, "estimatedPrice": 7000, "estimatedSpecialPrice": 5600, "cargoEstimatedPrice": 0, "cargoEstimatedSpecialPrice": 0, "estimatedDate": "2-4 hari", "discountExtraPercent": 0, "discountExtra": 0, "cargoDiscountExtraPercent": 0, "cargoDiscountExtra": 0}}}'
POST
{BASE_URL}/api/public/{API_KEY}/order/getPerformancePublic
This api based on this page Cek Ongkos Kirim Mengantar
Note: This endpoint returns courier scores usually displayed alonside with courier estimate fee.
Result example :
{
"success": true,
"data": {
"couriers": [
{
"key": "JNE",
"score": 95
},
{
"key": "SiCepat",
"score": 100
},
{
"key": "Sap",
"score": 99
},
{
"key": "iDexpress",
"score": 97
},
{
"key": "JT",
"score": 98
},
{
"key": "Ninja",
"score": 95
},
{
"key": "lion",
"score": 96
},
{
"key": "paxel",
"score": 0
},
{
"key": "anteraja",
"score": 0
}
],
"bestCourier": "SiCepat",
"recommended": "JNE"
}
}
REQUEST HEADER
| Key | Value |
|---|---|
| Content-Type |
application/json
|
| Accept |
application/json
|
BODY PARAMETERS
| Field | Type | Description |
|---|---|---|
| city | String |
CITY_NAME of address data from this route
/address/search
|
| allEstimateData | Object |
response
.data
from this route
/order/estimate with query courier=all or /order/allEstimatePublic. Get all of it and wrap as allEstimateData for this request.
|
Check Shipping Fee 3PL
# Here is a curl example
curl \
-X GET {BASE_URL}/api/order/allEstimate3PL \
-d 'origin_id=5fc62de8f8f44b34aa4bdc49' \
-d 'destination_id=5fc64922f8f44b34aa4ce896' \
-d 'weight=1'
GET
{BASE_URL}/api/order/allEstimate3PL
3PL (Third Party Logistics) Endpoint: Standarized price Mengantar without any special promo or discount. Ideal for logistics partners and integrators who need raw courier rates but still using Mengantar.
Result example :
{
"success": true,
"data": {
"JNE": {
"unsupported": null,
"unsupported_cod": null,
"price": 14000,
"estimatedDate": "1 - 2 days"
},
"JNECargo": {
"unsupported": null,
"unsupported_cod": null,
"price": 45000,
"estimatedDate": "3 - 4 days",
"minimumWeightCargo": 5
}
...otherCouriers
}
}
QUERY PARAMETERS
| Field | Type | Description |
|---|---|---|
| origin_id | String |
_id of address data from this route
/address/search
|
| destination_id | String |
_id of address data from this route
/address/search
|
| weight | Number | (default: 1). Unit in kg(kilogram) |
Notes
- No Flat Pricing
- Possibilities for unsupported and unsupported_cod:
- if unsupported true and unsupported_cod true, it means CAN'T send to the destination BOTH COD AND NON COD
- if unsupported true and unsupported_cod false, it means CAN'T send to the destination BOTH COD AND NON COD
- if unsupported false & unsupported_cod true, it means can't send to destination with COD BUT still CAN send to destination with Non COD
- if unsupported false and unsupported_cod false, it means can send COD or Non COD
- minimumWeightCargo is shown only for couriers that support cargo shipments. It serves as an informational value indicating the minimum weight recommended for cargo orders.
Get Invoices and Balance
# Here is a curl example
curl \
-X GET {BASE_URL}/api/public/{API_KEY}/invoices' \'
GET
{BASE_URL}/api/public/{API_KEY}/invoices
Result example :
{
"success": true,
"data": [
{
"subItems": [],
"status": "statusCleared",
"courier": "system",
"needToNotify": false,
"adminCreated": false,
"_id": "632c19f216b1eb234a8e7ebb",
"user_id": "5fc6289532d4f232eb029ac8",
"user": {
"name": "Name",
"email": "[email protected]"
},
"inv_number": "SS2209220816416",
"expiration_date": "2022-09-24T08:16:00.000Z",
"type": "typeWithdraw",
"amount": 12345,
"total": 12345,
"createdAt": "2022-09-22T08:16:50.143Z",
"updatedAt": "2022-09-22T08:21:07.344Z",
"balanceAmount": 9635676,
"userBalanceData": {
"netValue": 30000000,
"realNetValue": 0
},
"balance": 9635676,
"api_req_id": "632c1aef994aea3981f68ae6",
"api_req_message": "Success",
"api_req_status": "DONE",
"api_type": "oy",
"paydAt": "2022-09-22T08:21:07.344Z"
},
],
"count": 19,
"balance": 9635676,
}
Create Order
# Here is a curl example
curl \
-X POST {BASE_URL}/api/public/{API_KEY}/order' \
-F 'courier=Sap' \
-F 'pickup={
type: "scheduledPickup",
volume: "volumeMotor",
address_id: "62e27d67ecf5ae2893bc070a",
time_id: "62e27d81ecf5ae2893bc070b"
}' \
-F 'orders=[{
"assignee: "5fc62dd8f8f44b34aa4bc9aa",
"COD": "12444",
"customerAddress": "address",
"customerName": "name",
"customerAddressDataId": "5fc62dd8f8f44b34aa4bc9aa",
"customerPhone": "123456",
"parcelContent": "asdasd",
"destinationMark": "Destination Mark",
"deliveryInstruction": "Delivery Instruction",
"dontIncludeSubdistrict": true,
"weight": 1,
"quantity": 1,
"customProducts": [
{
"name": "Baju Biru",
"variant": "XL / Biru",
"qty": 2,
"price": 120000
}
]
}]'
POST
{BASE_URL}/api/public/{API_KEY}/order
If balance is not enough will create unpaid orders with empty
cnote_no and unpaid = true
Result example :
{
"success": true,
"data": [
{
"assignee": null,
"receiverScore": {
"delivered": 0,
"rts": 0,
"undelivered": 0,
"rate": 0
},
"isBreach": false,
"COD_AMOUNT": 1000,
"status": "active",
"statusCategory": "active",
"isDraft": false,
"isDeleted": false,
"isArchived": false,
"isPaid": true,
"isPreviouslyUnPaid": false,
"isPreviouslyError": false,
"history": [],
"plan": "Standart JNE",
"isHideForPrint": false,
"isHideCityAndPhoneForPrint": false,
"ticketStatus": "none",
"dontIncludeSubdistrict": true,
"isChatResponseSent": false,
"screenshots": [],
"printedDates": [],
"isPlant": false,
"fakeStatus": false,
"issueType": "none",
"trackingAdmins": [],
"CourierAdminReply": false,
"followedBy": [],
"urgent": false,
"possibleClaim": "",
"_id": "6332f5ba8c3ea4bc8e15f72e",
"customProductOrderIds": ["BAJUBIRU-1776989288251"],
"destinationMark": "destinationMark",
"PICKUP_NAME": "address",
"PICKUP_PIC": "address",
"PICKUP_PIC_PHONE": "12312345",
"PICKUP_ADDRESS": "123123",
"PICKUP_DISTRICT": "GROGOL PETAMBURAN",
"PICKUP_CITY": "JAKARTA BARAT",
"PICKUP_SERVICE": "REG",
"PICKUP_VEHICLE": "MOTOR",
"ORDER_ID": "22092742ED56",
"SHIPPER_NAME": "address",
"SHIPPER_ADDR1": "123123",
"SHIPPER_CITY": "JAKARTA BARAT",
"SHIPPER_ZIP": "11460",
"SHIPPER_REGION": "DKI JAKARTA",
"SHIPPER_COUNTRY": "INDONESIA",
"SHIPPER_CONTACT": "address",
"SHIPPER_PHONE": "12312345",
"RECEIVER_NAME": "name",
"RECEIVER_ADDR1": "address",
"RECEIVER_CITY": "DOMPU",
"RECEIVER_ZIP": "84217",
"RECEIVER_REGION": "NUSA TENGGARA BARAT (NTB)",
"RECEIVER_COUNTRY": "INDONESIA",
"RECEIVER_CONTACT": "name",
"RECEIVER_PHONE": "123456",
"ORIGIN_CODE": "JK0702",
"DESTINATION_CODE": "LO02",
"SERVICE_CODE": "REG",
"WEIGHT": 1,
"QTY": 2,
"GOODS_DESC": "asdasd",
"GOODS_AMOUNT": 1000,
"INSURANCE_FLAG": "Y",
"SPECIAL_INS": "deliveryInstruction",
"MERCHANT_ID": "5fc6289532d4f232eb029ac8",
"TYPE": "PICKUP",
"COD_FLAG": "2",
"COD_FEE": 33,
"PICKUP_REGION": "DKI JAKARTA",
"insuranceamount": 0,
"address_id": "62e27d67ecf5ae2893bc070a",
"RECEIVER_SUBDISTRICT": "KARIJAWA",
"RECEIVER_DISTRICT": "DOMPU",
"cnote_no": "DMP00097790689",
"sapData": {
"origin_branch_code": "JKB",
"destination_branch_code": "BMU",
"tlc_branch_code": "BMU",
"label": "http://apisanbox.coresyssap.com/shipment/label/printout?awb_no=DMP00097790689&api_key=DEV_m4rK3tPlac3%23_2019"
},
"time_id": "62e27d81ecf5ae2893bc070b",
"user_id": "5fc6289532d4f232eb029ac8",
"user": {
"email": "[email protected]",
"name": "Name"
},
"batch_id": "6332f5b98c3ea4bc8e15f72d",
"batch": "22092720165C00",
"estimatedPrice": 43033,
"estimatedSpecialPrice": 34433,
"discount": 8600,
"price": 43000,
"zone": "A",
"lastStatusChange": "2022-09-27T20:08:00.000Z",
"receiver_id": "6332f0b166de6c6340029582",
"createdDate": "2022-09-27T13:08:08.687Z",
"proofHistory": [],
"chats": [],
"createdAt": "2022-09-27T13:08:10.263Z",
"updatedAt": "2022-09-27T13:08:10.263Z",
"branch": "LO0",
"branchOrigin": "JK0",
"__v": 0
}
],
"batch": "22092720165C00",
"batch_id": "6332f5b98c3ea4bc8e15f72d",
"errors": [],
}
BODY PARAMETERS
| Field | Type | Description |
|---|---|---|
| courier | String | The value should be "JNE" or "SiCepat" or "Sap" or "iDexpress" or "JT" or "Ninja" or "lion" or "anteraja". |
| assignee | String | (Optional) The value should be user_id (_id) from Get Assignee API. |
| pickup | Object | Pickup data |
| pickup.address_id | String | User's address _id |
| pickup.type | String | scheduledPickup, dropOff |
| pickup.time_id | String | time _id (required for type 'scheduledPickup') |
| pickup.volume | String | volumeTruck, volumeMobil, volumeMotor (required for type 'scheduledPickup') |
| orders | Array | Array of orders objects |
| orders.goodsValue | Number | NON-COD value |
| orders.COD | Number | COD value = Goods Value + Shipping Fee + COD Fee (required if goodsValue is empty). |
| orders.customerAddressDataId | String | _if from /api/address/search |
| orders.customerAddress | String | Customer Address |
| orders.customerName | String | Customer Name |
| orders.weight | Number | The total weight in kg. If orders.customProducts contains valid items, this value must equal the sum of qty × weight for all items (matching the in-app product list logic). |
| orders.quantity | Number | Quantity. If orders.customProducts contains valid items, this value must equal the sum of each line quantity (qty / orderQuantity) for all items (matching the in-app product list logic). |
| orders.parcelContent | String | Parcel Content / Product Name |
| orders.customProducts | Array<Object> | (Optional) Manual product lines; stored like in-app Tambah Manual (productOrder collection). Currently supported only when courier is JNE, SiCepat, Sap, or JNT. |
| orders.customProducts[].name | String | Product name (required when customProducts is provided) |
| orders.customProducts[].variant | String/Object | (Optional) Variant text shown in label product table |
| orders.customProducts[].qty | Number | Quantity. Alias accepted: quantity, orderQuantity |
| orders.customProducts[].price | Number | (Optional) Product price. Alias accepted: harga, regularPrice |
| orders.customProducts[].weight | Number | (Optional) Product weight in kg. Default to 1 if omitted |
| orders.destinationMark | String | (Optional) |
| orders.deliveryInstruction | String | (Optional) |
| orders.dontIncludeSubdistrict | Boolean | (Optional) |
| orders.cargo | Boolean | (Optional) if true then it will proceed with Cargo type. Couriers that have cargo option: (JNE, SiCepat, Sap, iDexpress) |
⚠ Important — JT Premium, Ninja & SiCepat: Batch Concurrency
For couriers where the tracking number (cnote_no / resi) is generated on our side — currently JT Premium, Ninja, and SiCepat — the system assigns numbers sequentially per account.
To ensure tracking numbers are unique and correctly assigned, only one batch can be processed at a time per account.
Do not send multiple batch requests concurrently (e.g. firing several API calls in parallel from your system). Instead, group all orders into a single batch and send them in one request.
If a concurrent request is detected (JT Premium), the API will respond with:
{
"success": false,
"message": "Sedang ada proses pembuatan order JT Premium yang berjalan. Mohon gabungkan semua order dalam 1 batch yang sama daripada mengirim beberapa batch secara bersamaan."
}
HTTP status: 409 Conflict
Pay Unpaid
# Here is a curl example
curl \
-X POST {BASE_URL}/api/public/{API_KEY}/order/pay-unpaid' \
-F 'courier=Sap' \
-F 'batch_id=6332f5b98c3ea4bc8e15f72d'
POST
{BASE_URL}/api/public/{API_KEY}/order/pay-unpaid
Will return count of paid orders
Result example :
{
"success": true,
"count": 1,
}
BODY PARAMETERS
| Field | Type | Description |
|---|---|---|
| batch_id | String | Batch _id |
Get orders
# Here is a curl example
curl \
-X GET {BASE_URL}/api/public/{API_KEY}/order \
-d 'page=1' \
-d 'size=50' \
-d 'dateRange={"startDate":"2021-09-23T00:00:00.000Z","endDate":"2022-09-23T23:59:59.999Z"}' \
-d 'courier=Sap' \
-d 'cod=NON_COD' \
-d 'no_update_after_day=4' \
-d 'no_update_after_hour=48' \
-d 'category=collected_customer' \
-d 'status={"DELIVERED": true}'
GET
{BASE_URL}/api/public/{API_KEY}/order
Result example :
{
"success": true,
"data": [
{
"assignee": null,
"receiverScore": {
"delivered": 0,
"rts": 0,
"undelivered": 0,
"rate": 0
},
"isBreach": false,
"COD_AMOUNT": 1123123,
"status": "active",
"isDeleted": false,
"ticketStatus": "none",
"printedDates": [
"2022-09-15T10:30:37.562Z"
],
"_id": "6322e2b3e120e6fdd6094d5b",
"destinationMark": "",
"ORDER_ID": "2209155C0E35",
"SHIPPER_NAME": "address",
"SHIPPER_CONTACT": "address",
"RECEIVER_NAME": "12312",
"RECEIVER_ADDR1": "12312",
"RECEIVER_ADDR2": "",
"RECEIVER_ADDR3": "",
"RECEIVER_CITY": "SAMPANG",
"RECEIVER_REGION": "JAWA TIMUR",
"RECEIVER_PHONE": "123123",
"ORIGIN_CODE": "CGK10000",
"DESTINATION_CODE": "JI2401",
"GOODS_DESC": "123123",
"GOODS_AMOUNT": "150000", // Parcel Value
"RECEIVER_SUBDISTRICT": "BANYUATES",
"RECEIVER_DISTRICT": "BANYUATES",
"cnote_no": "0137812206123519",
"user_id": "5fc6289532d4f232eb029ac8",
"user": {
"email": "[email protected]",
"name": "Name"
},
"batch": "22091515CCED71",
"lastStatusChange": "2022-09-15T15:30:00.000Z",
"receiver_id": "62fca167ad74ee28aa6ca3f6",
"createdAt": "2022-09-15T08:30:43.310Z"
},
]
}
QUERY PARAMETERS
| Field | Type | Description |
|---|---|---|
| page | String | Page Number |
| size | String | Orders count on page |
| courier | String | The value should be "JNE" or "SiCepat" or "Sap" or "iDexpress" or "JT" or "Ninja" or "lion" or "anteraja". |
| ticketFilter | String | withticket, without, open, replied |
| receiverFilter | String | 1,2,3,4,5,6,7,8,9,10 |
| dateRange.startDate | Date | 2021-09-23T00:00:00.000Z |
| dateRange.endDate | Date | 2021-09-23T00:00:00.000Z |
| batch | String | batch _id |
| tracking_id | String | Tracking ID (to get one order with status history) |
| order_id | String | ORDER ID (to get one order with status history) |
| cod | String | COD or NON_COD |
| status | String | statuses separeted by comma |
| category | String | collected_customer, yet_to_collect, need_attention, rts, pending_pickup, redelivery, undelivered, delivery_problem, over_sla, already_been_undelivered, been_undelivered_wo_ticket, been_undelivered_wo_proof |
| no_update_after_hour | String | 48 |
| no_update_after_day | String | 4,6,8,10,12,14,21 |
| reseller | Boolean | show reseller order |
Order Status
Status response of the third-party expedition in order, if you want to simplify, you can only know the status of DELIVERED, RTS, and other than that is ON GOING.
Delete Orders
For courier anteraja, orders can be deleted after 5 minutes from order created.
# Here is a curl example
curl \
-X DELETE {BASE_URL}/api/public/{API_KEY}/order' \
-F 'courier=Sap' \
-F 'ids=["6332f9dfdeff6b0cae5e6c11", "6332f9dfdeff6b0cae5e6c12"]'
DELETE
{BASE_URL}/api/public/{API_KEY}/order
Result example :
{
"success": true,
}
BODY PARAMETERS
| Field | Type | Description |
|---|---|---|
| ids | Array | Array of ids |
| orderIds | Array | (optional) Array of ORDER_ID (if ids is exists, then do not send orderIds, or else, it will override the ids) |
Get batches
# Here is a curl example
curl \
-X GET {BASE_URL}/api/public/{API_KEY}/batch \
-d 'page=1' \
-d 'size=50' \
-d 'dateRange={"startDate":"2021-09-23T00:00:00.000Z","endDate":"2022-09-23T23:59:59.999Z"}' \
-d 'courier=Sap''
GET
{BASE_URL}/api/public/{API_KEY}/batch
Result example :
{
"success": true,
"data": [
{
"isDraft": false,
"isDeleted": false,
"isArchived": false,
"orders": 0,
"error": 0,
"unpaid": 0,
"delivered": 0,
"undelivered": 0,
"rts": 0,
"reconciled": 0,
"active": 0,
"totalToPay": 0,
"totalToPaySpecial": 0,
"printErrorBills": false,
"plan": "Standart JNE",
"isActive": true,
"printedDates": [],
"_id": "63330dd0d87f79e901f35824",
"user_id": "5fc6289532d4f232eb029ac8",
"user": {
"email": "[email protected]",
"name": "Name"
},
"address": {
"PICKUP_NAME": "address",
"PICKUP_PIC": "address",
"PICKUP_PIC_PHONE": "12312345",
"PICKUP_ADDRESS": "123123",
"PICKUP_DISTRICT": "GROGOL PETAMBURAN",
"PICKUP_CITY": "JAKARTA BARAT"
},
"address_id": "62e27d67ecf5ae2893bc070a",
"id": "22092721DBC7B5",
"newBatchId": 1,
"invalidOrders": null,
"draftData": null,
"createdAt": "2022-09-27T14:50:56.477Z",
"updatedAt": "2022-09-27T14:50:56.477Z",
"__v": 0
},
]
}
QUERY PARAMETERS
| Field | Type | Description |
|---|---|---|
| page | String | Page Number |
| size | String | Orders count on page |
| courier | String | The value should be "JNE" or "SiCepat" or "Sap" or "iDexpress" or "JT" or "Ninja" or "lion" or "anteraja". |
Delete Batch
# Here is a curl example
curl \
-X DELETE {BASE_URL}/api/public/{API_KEY}/batch' \
-F 'courier=Sap' \
-F 'id=6332f9dfdeff6b0cae5e6c11'
DELETE
{BASE_URL}/api/public/{API_KEY}/batch
Result example :
{
"success": true,
}
BODY PARAMETERS
| Field | Type | Description |
|---|---|---|
| id | Array | Batch id |
Get Receiver Score Number
# Here is a curl example
curl \
-X GET {BASE_URL}/api/public/{API_KEY}/getReceiverScoreByNumberUser?search=8123456789
GET
{BASE_URL}/api/public/{API_KEY}/getReceiverScoreByNumberUser
Return Receiver Score per courier
Result example :
{
"success": true,
"data": {
"_id": "64719ada8f853438986abb2a",
"phone": "8123456789",
"JNE": {
"total": 36,
"value": 10542000,
"inProgress": 3652,
"delivered": 35,
"rts": 1,
"undelivered": 0,
"rate": 9.7
},
"SiCepat": {
"total": 3,
"value": 350000,
"inProgress": 654,
"delivered": 2,
"rts": 1,
"undelivered": 0,
"rate": 6.7
},
"Sap": {
"total": 3,
"value": 710000,
"inProgress": 528,
"delivered": 2,
"rts": 0,
"undelivered": 1,
"rate": 6.7
},
"iDexpress": {
"total": 1,
"value": 75000,
"inProgress": 1151,
"delivered": 1,
"rts": 0,
"undelivered": 0,
"rate": 10
},
"JT": {
"total": 4,
"value": 450000,
"inProgress": 2970,
"delivered": 2,
"rts": 1,
"undelivered": 1,
"rate": 5
},
"Ninja": {
"total": 4,
"value": 880000,
"inProgress": 285,
"delivered": 4,
"rts": 0,
"undelivered": 0,
"rate": 10
},
"createdAt": "2023-05-27T05:53:30.132Z",
"updatedAt": "2025-06-04T07:05:33.146Z"
}
}
QUERY PARAMETERS
| Field | Type | Description |
|---|---|---|
| search | String | reciever phone number |