Everpro Open API (1.0.0)

Introduction

Welcome to Everpro API!

Everpro Open API contains specification for public api provided by Everpro for partners.
It describes how to communications between your service and Everpro RESTful Web Service.

Flow Diagram

The diagram below describes the process flow from the beginning of the courier price get rate to the shipping tracking process. flow-diagram

Swim Lane Diagram

The diagram below explains how the interaction flows between the Partner system and the Everpro system. We have two methods to get AWB and get Tracking which are callback method and endpoint method. Partners simply choose one method which they feel is most suitable for the Partner's system. flow-diagram

Client Auth

Generate token

Get Access Token

Request Body schema: application/json
required

Request Body

client_key
required
string

client_key key to generate token bearer

  • Contact us to get yours.
client_secret
required
string

client_secret key to generate token bearer

  • Contact us to get yours.

Responses

Request samples

Content type
application/json
{
  • "client_key": "aBcDEaF8ugo4aWFfK6JEMXtK3LNq5BLS",
  • "client_secret": "HRDbO8KL99xyyRVymkllku23xtpxU4vl"
}

Response samples

Content type
application/json
{
  • "data": {
    },
  • "message": "success create/get ...",
  • "request_id": "019564e5-8ab3-7bbe-98dc-164750ec045e",
  • "status": "success",
  • "status_code": 200,
  • "timestamp": "2022-04-14T05:55:35.006Z"
}

Location

Get Location Detail

  • Either address or postal_code must be filled.
  • If both are filled, postal_code value will be the priority.
  • Postal code data using reference data from the Ministry of Home Affairs.
  • If any `postal_code“ is invalid or different, please let us be informed.
Authorizations:
BearerToken
Request Body schema: application/json
required

Request Body

address
string

address of a location
It is mandatory to follow the format, otherwise it will return error for invalid format.
Example: Jl. Diponegoro No.22, Citarum, Kec. Bandung Wetan, Kota Bandung, Jawa Barat
With following information, separated by commas:

  • street address(name and number)
  • sub_district_name
  • district_name
  • city_name
  • province_name Space before and after comma will be trimmed.
postal_code
string

postal_code

Responses

Request samples

Content type
application/json
{
  • "address": "Jl. Diponegoro No.22, Citarum, Kec. Bandung Wetan, Kota Bandung, Jawa Barat",
  • "postal_code": "40115"
}

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "message": "success create/get ...",
  • "request_id": "019564e5-8ab3-7bbe-98dc-164750ec045e",
  • "status": "success",
  • "status_code": 200,
  • "timestamp": "2022-04-14T05:55:35.006Z"
}

Get Location Provinces

Get List of Provinces

Authorizations:
BearerToken
query Parameters
province_name
string

Province name keyword
* if empty will return all provinces
* if filling:
 * Minimum 3 Characters
 * Maximum 3 Characters
 * Must be alphabet

Responses

Request samples

const request = require('request');

const options = {
  method: 'GET',
  url: 'https://client-api-sandbox.everpro.id/location/v1/provinces',
  qs: {province_name: 'SOME_STRING_VALUE'},
  headers: {Authorization: 'REPLACE_KEY_VALUE'}
};

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "message": "success create/get ...",
  • "request_id": "019564e5-8ab3-7bbe-98dc-164750ec045e",
  • "status": "success",
  • "status_code": 200,
  • "timestamp": "2022-04-14T05:55:35.006Z"
}

Get Location Cities

Get Location Cities

Authorizations:
BearerToken
query Parameters
province_id
string

Province id

province_name
string

Province Name

city_name
string

City Name



* Param Rules: Must at least 1 Parameter
* Param Search Result:
 * Will only show result based on 1 parameter even both are provided
 * Prioritizing Province ID as search query if provided
 * Respond 404 and empty array if no result found

Responses

Request samples

const request = require('request');

const options = {
  method: 'GET',
  url: 'https://client-api-sandbox.everpro.id/location/v1/cities',
  qs: {
    province_id: 'SOME_STRING_VALUE',
    province_name: 'SOME_STRING_VALUE',
    city_name: 'SOME_STRING_VALUE'
  },
  headers: {Authorization: 'REPLACE_KEY_VALUE'}
};

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "message": "success create/get ...",
  • "request_id": "019564e5-8ab3-7bbe-98dc-164750ec045e",
  • "status": "success",
  • "status_code": 200,
  • "timestamp": "2022-04-14T05:55:35.006Z"
}

Get Location Districts

Get List of Districts

Authorizations:
BearerToken
query Parameters
city_id
string

City ID

district_name
string

District Name



* Param Rules: Must at least 1 Parameter
* Param Search Result:
 * Will only show result based on 1 parameter even both are provided
 * Prioritizing City ID as search query if provided
 * Respond 404 and empty array if no result found

Responses

Request samples

const request = require('request');

const options = {
  method: 'GET',
  url: 'https://client-api-sandbox.everpro.id/location/v1/districts',
  qs: {city_id: 'SOME_STRING_VALUE', district_name: 'SOME_STRING_VALUE'},
  headers: {Authorization: 'REPLACE_KEY_VALUE'}
};

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "message": "success create/get ...",
  • "request_id": "019564e5-8ab3-7bbe-98dc-164750ec045e",
  • "status": "success",
  • "status_code": 200,
  • "timestamp": "2022-04-14T05:55:35.006Z"
}

Get Location SubDistritcs

Get Location SubDistritcs

Authorizations:
BearerToken
query Parameters
district_id
string

District ID

sub_district_name
string

Sub District Name

postal_code
string

Postal Code



* Param Rules: Must at least 1 Parameter
* Param Search Result:
 * Will only display results based on the first parameter (district_id) if all data is filled in
 * Prioritizing District ID as search query if available
 * Respond 404 and empty array if no result found

Responses

Request samples

const request = require('request');

const options = {
  method: 'GET',
  url: 'https://client-api-sandbox.everpro.id/location/v1/sub-districts',
  qs: {
    district_id: 'SOME_STRING_VALUE',
    sub_district_name: 'SOME_STRING_VALUE',
    postal_code: 'SOME_STRING_VALUE'
  },
  headers: {Authorization: 'REPLACE_KEY_VALUE'}
};

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "message": "success create/get ...",
  • "request_id": "019564e5-8ab3-7bbe-98dc-164750ec045e",
  • "status": "success",
  • "status_code": 200,
  • "timestamp": "2022-04-14T05:55:35.006Z"
}

Shipment

Get Logistic Rates

Get All of Courier Rates (Basic API)

Authorizations:
BearerToken
Request Body schema: application/json
required

Request Body

cod_price
integer

the amount to be paid by the recipient

  • required if is_cod = true for prepaid
  • it will be sum of package_price + insurance_price + shipment_price
destination_latitude
number

destination latitude

  • required if you want to choose a specific courier
  • must be a valid latitude
destination_longitude
number

destination longitude

  • required if you want to choose a specific courier
  • must be a valid longitude
destination_postal_code
required
string

destination postal code

destination_sub_district_name
string

destination sub district name (aka. kelurahan/desa in Indonesia)

height
integer >= 1

height of package must be greater than or equal to 1

include_flat_rate
boolean

toggle enable flat rate returned on rate response

is_cod
boolean

cod condition TRUE if COD

is_use_insurance
boolean

insurance condition TRUE if use insurance

item_price
integer

price of package

length
integer >= 1

length of package must be greater than or equal to 1

logistic_codes
Array of strings

get rate with selected logistic code left it blank to get rate for any logistic code

origin_latitude
number

origin latitude

  • required if you want to choose a specific courier ( ex: Gosend, Grab, Lalamove, Borzo, Deliveree )
  • must be a valid latitude
origin_longitude
number
  • required if you want to choose a specific courier
  • must be a valid longitude
origin_postal_code
required
string

origin postal code

origin_sub_district_name
string

origin sub district name (aka. kelurahan/desa in indonesia)

package_type_id
required
integer

id of package type must be a valid id:

  1. Regular
  2. Organic
  3. Fragile
  4. Liquid
  5. Electronic
  6. Motor
  7. Frozen Food
shipment_type
required
string

type of shipment enum ( PICKUP / DROP )

weight
required
number

weight of package must be greater than 0 and can be decimal eg: 0.3

width
integer >= 1

width of package must be greater than or equal to 1

Responses

Request samples

Content type
application/json
{
  • "cod_price": 1000,
  • "destination_latitude": -6.167452,
  • "destination_longitude": 106.7104442,
  • "destination_postal_code": "11850",
  • "destination_sub_district_name": "Semanan",
  • "height": 20,
  • "include_flat_rate": true,
  • "is_cod": true,
  • "is_use_insurance": true,
  • "item_price": 20000,
  • "length": 30,
  • "logistic_codes": [
    ],
  • "origin_latitude": -6.169353599999999,
  • "origin_longitude": 106.7197673,
  • "origin_postal_code": "11750",
  • "origin_sub_district_name": "Duri Kosambi",
  • "package_type_id": 1,
  • "shipment_type": "PICKUP",
  • "weight": 0.3,
  • "width": 40
}

Response samples

Content type
application/json
{
  • "data": {
    },
  • "message": "success create/get ...",
  • "request_id": "019564e5-8ab3-7bbe-98dc-164750ec045e",
  • "status": "success",
  • "status_code": 200,
  • "timestamp": "2022-04-14T05:55:35.006Z"
}

Get Logistic Rates V3

Get All of Courier Rates (Basic API)

Authorizations:
BearerToken
Request Body schema: application/json
required

Request Body

required
object

destination of the package using combination of id of sub district and latlong.

is_use_insurance
boolean

is_use_insurance is boolean flag to indicate if client want insurance applied

logistic_codes
Array of strings

logistic_codes is filter to get rate from specific logistic.

  • Let it blank to get rate from all available logistic code.
  • Please make sure client account have enable the logistic.

Available option(s):

  • IDX: ID Express
  • JNE: JNE
  • LNP: Lion Parcel
  • JTC: J&T Cargo
required
object

origin of the package using combination of id of sub district and latlong.

required
object

package define the weight, dimension, and price

payment_type
string
Value: "COD"

payment_type define how the payment will be done. Left it blank if it is not COD.

  • COD: for Cash on Delivery
shipment_type
required
string
Enum: "PICKUP" "DROP"

shipment_type define how the package will be picked up to logistic.

  • PICKUP: A courier will pick up to the origin address.
  • DROP: You will have to drop the package in the nearest logistic drop off.

Responses

Request samples

Content type
application/json
{
  • "destination": {
    },
  • "is_use_insurance": true,
  • "logistic_codes": [
    ],
  • "origin": {
    },
  • "package": {
    },
  • "payment_type": "COD",
  • "shipment_type": "PICKUP"
}

Response samples

Content type
application/json
{
  • "data": {
    },
  • "message": "success create/get ...",
  • "request_id": "019564e5-8ab3-7bbe-98dc-164750ec045e",
  • "status": "success",
  • "status_code": 200,
  • "timestamp": "2022-04-14T05:55:35.006Z"
}

Get Bulk Logistic Rates

Get Bulk All of Courier Rates (Basic API)

Authorizations:
BearerToken
Request Body schema: application/json
required

Request Body

Array of objects

Responses

Request samples

Content type
application/json
{
  • "data": [
    ]
}

Response samples

Content type
application/json
{
  • "data": {
    },
  • "message": "success create/get ...",
  • "request_id": "019564e5-8ab3-7bbe-98dc-164750ec045e",
  • "status": "success",
  • "status_code": 200,
  • "timestamp": "2022-04-14T05:55:35.006Z"
}

Get Pickup Time

This endpoint is for getting a pickup time by rate code. You can use this endpoint after get rates.

Authorizations:
BearerToken
query Parameters
rate_codes
required
Array of strings
Example: rate_codes=SIUNT

The rate code from get rate response. For multiple rate codes, please use comma separated without space. Example : "SIUNT"

timezone
required
string
Example: timezone=Asia/Jakarta

The timezone that will be use for converting the pickup time to this timezone. Example : "Asia/Jakarta". Reference : WIB -> Asia/Jakarta WITA -> Asia/Makassar WIT -> Asia/Jayapura more : https://en.wikipedia.org/wiki/List_of_tz_database_time_zones

Responses

Request samples

const request = require('request');

const options = {
  method: 'GET',
  url: 'https://client-api-sandbox.everpro.id/shipment/v1/pickup-times',
  qs: {rate_codes: 'SOME_ARRAY_VALUE', timezone: 'SOME_STRING_VALUE'},
  headers: {Authorization: 'REPLACE_KEY_VALUE'}
};

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});

Response samples

Content type
application/json
{
  • "data": {
    },
  • "message": "success create/get ...",
  • "request_id": "019564e5-8ab3-7bbe-98dc-164750ec045e",
  • "status": "success",
  • "status_code": 200,
  • "timestamp": "2022-04-14T05:55:35.006Z"
}

Get Order List For User

  • Sorting is limited to order_no, awb_number, destination, package_desc, courier, total_price. Skip if column is not sortable.
Authorizations:
BearerToken
query Parameters
start_date
string

start order date to get (YYYY-MM-DD), if left blank, will use 5 years time range by default. Warning: Default might change in the future.

end_date
string

end order date to get (YYYY-MM-DD), cannot be less than start_date.

search
string

search shipment order number to get

status_id
Array of integers

status order to filter, see status_id in Response detail for API Order List

filename
string

get order list by bulk upload filename

sort
Array of strings

multi column sorting, example usage sort=-order_no,+total_price, this will sort order_no DESC, total_price with ASC. Default is `created_at“ DESC

page
integer

support for pagination.

limit
integer

limit per page, default is 10 with maximum 50 per page.

Responses

Request samples

const request = require('request');

const options = {
  method: 'GET',
  url: 'https://client-api-sandbox.everpro.id/shipment/v1/orders',
  qs: {
    start_date: 'SOME_STRING_VALUE',
    end_date: 'SOME_STRING_VALUE',
    search: 'SOME_STRING_VALUE',
    status_id: 'SOME_ARRAY_VALUE',
    filename: 'SOME_STRING_VALUE',
    sort: 'SOME_ARRAY_VALUE',
    page: 'SOME_INTEGER_VALUE',
    limit: 'SOME_INTEGER_VALUE'
  },
  headers: {Authorization: 'REPLACE_KEY_VALUE'}
};

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});

Response samples

Content type
application/json
{
  • "data": {
    },
  • "message": "success create/get ...",
  • "request_id": "019564e5-8ab3-7bbe-98dc-164750ec045e",
  • "status": "success",
  • "status_code": 200,
  • "timestamp": "2022-04-14T05:55:35.006Z"
}

Create Shipment Order

Create a Shipment Order

Authorizations:
BearerToken
Request Body schema: application/json
required

Request Body

client_order_no
string

client_order_no is order number set by client.

  • value must be unique.
  • if blank,client_order_no will be autogenerated, with format TRD<EPOCH UNIX>.
cod_price
integer

cod_price the amount to be paid by the recipient.

  • required if is_cod set as true.
  • must be + package_price + insurance_price + shipment_price.
height
integer >= 1

height in centimeter(cm)

insurance_price
integer

insurance_price will be calculated during validation.

  • required if is_use_insurance set as true.
  • if insurance_price has value more than 0, insurance will be automatically applied.
is_cod
boolean

is_cod is a flag to determine the payment type, set true for COD

  • default false
is_use_insurance
boolean

is_use_insurance is boolean flag to indicate if client want insurance applied.

  • if is_use_insurance set false but insurance_price is not 0, insurance will be automatically applied.
length
integer >= 1

length in centimeter(cm)

max_duration
integer

max_duration of shipment
must be greater or equal to 1 DEPRECATED, no longer needed

min_duration
integer

min_duration of shipment
must be greater or equal to 1 DEPRECATED, no longer needed

order_reference_id
string <= 255 characters

order_reference_id is reference id set by client.

  • not unique, can be used for several shipment order.
  • only accept alphanumeric [0-9a-zA-Z] & special characters -,./()'
package_count
integer

package_count for multi koli, determine amount of package handle multi koli.

  • (optional) the default value is 1.
package_desc
required
string >= 3 characters

package_desc (if exceed 150 char, description will be trimmed)

package_price
required
integer

package_price of the package in Rupiah(Rp)

package_type_id
required
integer

package_type_id must be a valid id of:

    1. Regular
    1. Organic
    1. Fragile
    1. Liquid
    1. Electronic
pickup_time
integer

pickup_time is time when the package requested to be pickup.

  • UNIX timestamp in UTC.
  • required if shipment_type set as PICKUP.
rate_code
required
string

rate_code is the rate code of chosen shipment service.

receiver_address
required
string

receiver_address (if exceed 250 char, address will be trimmed)

receiver_address_note
string

receiver_address_note additional note for address.

receiver_email
string

receiver_email must be a valid email address.

receiver_latitude
number

receiver_latitude required if you want to choose an instant courier (ex: Gosend, Grab)

receiver_longitude
number

receiver_longitude required if you want to choose an instant courier (ex: Gosend, Grab)

receiver_name
required
string >= 3 characters

receiver_name for shipper name

receiver_phone
required
string [ 10 .. 15 ] characters

receiver_phone limited to Indonesia(+62)

  • accepted format: +62xxxxxxxxxxx, 62xxxxxxxxxxx, or 08xxxxxxxxxxx
receiver_postal_code
required
string

receiver_postal_code must be a valid postal code.

receiver_sub_district_name
string

receiver_sub_district_name is the shipper's sub district name.

  • Optional, adding sub district name improve accuracy since postal code may represent multiple sub district.
shipment_price
required
integer

shipment_price define the price returned from API Get Logistic Rates.

  • will be recalculated during validation.
shipment_type
required
string

shipment_type define how the package will be picked up to logistic.

  • PICKUP: A courier will pick up to the origin address.
  • DROP: You will have to drop the package in the nearest logistic drop off point.
shipper_address
required
string

shipper_address (if exceed 250 char, address will be trimmed)

shipper_address_note
string

shipper_address_note additional note for address.

shipper_email
string

shipper_email must be a valid email address.

shipper_latitude
number

shipper_latitude required if you want to choose an instant courier (ex: Gosend, Grab)

shipper_longitude
number

shipper_longitude required if you want to choose an instant courier (ex: Gosend, Grab)

shipper_name
required
string >= 3 characters

shipper_name for shipper name

shipper_phone
required
string [ 10 .. 15 ] characters

shipper_phone limited to Indonesia(+62)

  • accepted format: +62xxxxxxxxxxx, 62xxxxxxxxxxx, or 08xxxxxxxxxxx
shipper_postal_code
required
string

shipper_postal_code must be a valid postal code.

shipper_sub_district_name
string

shipper_sub_district_name is the shipper's sub district name.

  • Optional, adding sub district name improve accuracy since postal code may represent multiple sub district.
shipping_note
string

shipping_note is additional information for the shipment.

weight
required
number

weight of the package, in kilogram(kg).

  • allow comma.
width
integer >= 1

width in centimeter(cm)

Responses

Request samples

Content type
application/json
{
  • "client_order_no": "INV01123233",
  • "cod_price": 1000,
  • "height": 1,
  • "insurance_price": 0,
  • "is_cod": false,
  • "is_use_insurance": false,
  • "length": 3,
  • "max_duration": 2,
  • "min_duration": 3,
  • "order_reference_id": "GB-2025010100001",
  • "package_count": 0,
  • "package_desc": "Kardus",
  • "package_price": 1000,
  • "package_type_id": 1,
  • "pickup_time": 1667296800,
  • "rate_code": "SIUNT",
  • "receiver_address": "Jl Unta no 22",
  • "receiver_address_note": "Depan warung",
  • "receiver_email": "[email protected]",
  • "receiver_latitude": -6.167452,
  • "receiver_longitude": 106.7104442,
  • "receiver_name": "Doe",
  • "receiver_phone": "628567890123456",
  • "receiver_postal_code": "11850",
  • "receiver_sub_district_name": "Semanan",
  • "shipment_price": 10000,
  • "shipment_type": "PICKUP",
  • "shipper_address": "Jl Komodo no 13",
  • "shipper_address_note": "Depan rumah",
  • "shipper_email": "[email protected]",
  • "shipper_latitude": -6.169353599999999,
  • "shipper_longitude": 106.7197673,
  • "shipper_name": "John",
  • "shipper_phone": "628123456789012",
  • "shipper_postal_code": "11750",
  • "shipper_sub_district_name": "Duri Kosambi",
  • "shipping_note": "Hati hati",
  • "weight": 1,
  • "width": 12
}

Response samples

Content type
application/json
{
  • "actual_cod_price": 14750,
  • "actual_insurance_price": 750,
  • "actual_price": 9000,
  • "client_order_no": "TRD1741161334",
  • "order_reference_id": "GB-2025010100001",
  • "requested_cod_price": 15500,
  • "requested_insurance_price": 500,
  • "requested_price": 10000
}

Create Shipment Order V3

  • Client have to use sub_district_id for shipper and receiver. Obtainable from API Get Location Detail.
  • Address will be trimmed if exceed 250 characters.
  • Package description will be trimmed if exceed 150 characters.
  • Final weight will be determined by choosing the heaviest after comparing weight and volumetric weight(height x length x width).
  • Compared from Create Shipment Order V1, insurance_price and shipment_price is hosted in Everpro.
  • Actual shipment_price, insurance_price, and cod_price might be different from user's initial submition. Final price will be determined later after invoice issued & reconciliation process.
Authorizations:
BearerToken
Request Body schema: application/json
required

Request Body

client_order_no
string

client_order_no is order number set by client.

  • value must be unique.
  • if blank,client_order_no will be autogenerated, with format TRD<EPOCH UNIX>.
cod_price
integer >= 0

cod_price is the amount to be paid by the recipient.

  • only calculated if Payment Type COD.
  • the formula is sum of package_price + insurance_price + shipment_price.
  • will be recalculated during validation.
insurance_price
integer >= 0

insurance_price will be calculated during validation.

  • if insurance_price has value more than 0, insurance will be automatically applied.
is_use_insurance
boolean

is_use_insurance is boolean flag to indicate if client want insurance applied.

  • if is_use_insurance set false but insurance_price is not 0, insurance will be automatically applied.
order_reference_id
string <= 255 characters

order_reference_id is reference id set by client.

  • not unique, can be used for several shipment order.
  • only accept alphanumeric [0-9a-zA-Z] & special characters -,./()'
required
object

package define the weight (kg), dimension (cm), koli (pcs), and description (if exceed 150 char, description will be trimmed)

payment_type
string
Value: "COD"

payment_type define how the payment will be done. Left it blank if it is not COD.

  • COD: for Cash on Delivery
pickup_time
string

pickup_time is the clien't request pickup time.

  • available option can be selected from API Get Pickup Time.
  • required if client choose shipment_type = PICKUP.
  • accepted time format RFC3339 2006-01-02T15:04:05+07:00.
  • must not be earlier than now.
rate_code
required
string

rate_code is the rate code of chosen shipment service.

required
object

receiver contain name, phone, email, address, and address note.

shipment_price
integer >= 0

shipment_price define the price returned from API Get Logistic Rates

  • will be recalculated during validation.
shipment_type
required
string
Enum: "PICKUP" "DROP"

shipment_type define how the package will be picked up to logistic.

  • PICKUP: A courier will pick up to the origin address.
  • DROP: You will have to drop the package in the nearest logistic drop off point.
required
object

shipper contain name, phone, email, address, and address note.

shipping_note
string

shipping_note is additional information for the shipment.

signed_key
required
string

signed_key obtained from Get Rate V3.

  • please only use signed_key from Get Rate V3.

Responses

Request samples

Content type
application/json
{
  • "client_order_no": "TRD1740557779",
  • "cod_price": 1000,
  • "insurance_price": 0,
  • "is_use_insurance": true,
  • "order_reference_id": "GB-2025010100001",
  • "package": {
    },
  • "payment_type": "COD",
  • "pickup_time": "2025-01-24T01:09:11.000Z",
  • "rate_code": "SIUNT",
  • "receiver": {
    },
  • "shipment_price": 9000,
  • "shipment_type": "PICKUP",
  • "shipper": {
    },
  • "shipping_note": "Hati hati, Pecah Belah.",
  • "signed_key": "RANDOMKEY"
}

Response samples

Content type
application/json
{
  • "actual_cod_price": 14750,
  • "actual_insurance_price": 750,
  • "actual_price": 9000,
  • "client_order_no": "TRD1741161334",
  • "order_reference_id": "GB-2025010100001",
  • "requested_cod_price": 15500,
  • "requested_insurance_price": 500,
  • "requested_price": 10000
}

Bulk Create Shipment Order

Bulk create shipment order, the response from the request will be sent via callback. Make sure your already set the bulk order callback url.

Authorizations:
BearerToken
Request Body schema: application/json
required

Request Body

required
Array of objects

Responses

Request samples

Content type
application/json
{
  • "data": [
    ]
}

Response samples

Content type
application/json
{
  • "data": null,
  • "message": "... request accepted",
  • "request_id": "string",
  • "status": "accepted",
  • "status_code": 202,
  • "timestamp": "2022-04-14T05:55:35.006Z"
}

Get Order Detail By Order Number

Get Order Detail By Order Number

  • This endpoint returns both order details and tracking information for the given order number
  • Order details include shipment information, addresses, package details, and pricing
  • Tracking information includes current status and tracking history of the shipment
Authorizations:
BearerToken
path Parameters
order_number
required
string

Order Number (Client Order Number or Awb Number)

Responses

Request samples

const request = require('request');

const options = {
  method: 'GET',
  url: 'https://client-api-sandbox.everpro.id/shipment/v1/orders/%7Border_number%7D',
  headers: {Authorization: 'REPLACE_KEY_VALUE'}
};

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});

Response samples

Content type
application/json
{
  • "data": {
    },
  • "message": "success create/get ...",
  • "request_id": "019564e5-8ab3-7bbe-98dc-164750ec045e",
  • "status": "success",
  • "status_code": 200,
  • "timestamp": "2022-04-14T05:55:35.006Z"
}

Request Generate Air Way Bill with Pickup Time

Request Generate Air Way Bill with Pickup Time

Authorizations:
BearerToken
path Parameters
client_order_no
required
string

client order number

Responses

Request samples

const request = require('request');

const options = {
  method: 'POST',
  url: 'https://client-api-sandbox.everpro.id/shipment/v1/orders/%7Bclient_order_no%7D/generate',
  headers: {Authorization: 'REPLACE_KEY_VALUE'}
};

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});

Response samples

Content type
application/json
{
  • "data": null,
  • "message": "success create/get ...",
  • "request_id": "019564e5-8ab3-7bbe-98dc-164750ec045e",
  • "status": "success",
  • "status_code": 200,
  • "timestamp": "2022-04-14T05:55:35.006Z"
}

Generate bulk Air Way Bill with Pickup Time

  • All input must be valid to ensure all AWB(Air Way Bill) Number be generated.
Authorizations:
BearerToken
Request Body schema: application/json
required

Request Body

Array
client_order_no
required
string

Client order number

is_flat_rate
boolean

Flat Rate

pickup_time
required
integer

Pickup time

Responses

Request samples

Content type
application/json
[
  • {
    }
]

Response samples

Content type
application/json
{
  • "data": null,
  • "message": "success create/get ...",
  • "request_id": "019564e5-8ab3-7bbe-98dc-164750ec045e",
  • "status": "success",
  • "status_code": 200,
  • "timestamp": "2022-04-14T05:55:35.006Z"
}

Get AWB Number

Get AWB Number

Authorizations:
BearerToken
path Parameters
client_order_no
required
string

Client Order Number

Responses

Request samples

const request = require('request');

const options = {
  method: 'GET',
  url: 'https://client-api-sandbox.everpro.id/shipment/v1/orders/%7Bclient_order_no%7D/awb',
  headers: {Authorization: 'REPLACE_KEY_VALUE'}
};

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});

Response samples

Content type
application/json
{
  • "data": {
    },
  • "message": "success create/get ...",
  • "request_id": "019564e5-8ab3-7bbe-98dc-164750ec045e",
  • "status": "success",
  • "status_code": 200,
  • "timestamp": "2022-04-14T05:55:35.006Z"
}

Get Label Shipment Order

  • Since label has AWB(Air Way Bill) Number printed on it, it is mandatory to obtain AWB first.
Authorizations:
BearerToken
path Parameters
awb_number
required
string

AWB (air way bill) Number

Responses

Request samples

const request = require('request');

const options = {
  method: 'GET',
  url: 'https://client-api-sandbox.everpro.id/shipment/v1/orders/%7Bawb_number%7D/label',
  headers: {Authorization: 'REPLACE_KEY_VALUE'}
};

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});

Response samples

Content type
application/json
{}

Bulk Get Label Shipment Order

  • Since label has AWB(Air Way Bill) Number printed on it, it is mandatory to obtain AWB first.
Authorizations:
BearerToken
Request Body schema: application/json
required

Request Body

awb_numbers
Array of strings

Array of AWB Number

Responses

Request samples

Content type
application/json
{
  • "awb_numbers": [
    ]
}

Response samples

Content type
application/json
{
  • "data": {
    },
  • "message": "success create/get ...",
  • "request_id": "019564e5-8ab3-7bbe-98dc-164750ec045e",
  • "status": "success",
  • "status_code": 200,
  • "timestamp": "2022-04-14T05:55:35.006Z"
}

Get Tracking Shipment Order

  • Track the latest status of a shipment order.
Authorizations:
BearerToken
path Parameters
awb_number
required
string

AWB(Air Way Bill) Number

Responses

Request samples

const request = require('request');

const options = {
  method: 'GET',
  url: 'https://client-api-sandbox.everpro.id/shipment/v1/orders/%7Bawb_number%7D/track',
  headers: {Authorization: 'REPLACE_KEY_VALUE'}
};

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});

Response samples

Content type
application/json
{
  • "data": {
    },
  • "message": "success create/get ...",
  • "request_id": "019564e5-8ab3-7bbe-98dc-164750ec045e",
  • "status": "success",
  • "status_code": 200,
  • "timestamp": "2022-04-14T05:55:35.006Z"
}

Bulk Tracking Shipment Order

Allow to tracking for multiple AWB(Air Way Bill) Number.

Authorizations:
BearerToken
Request Body schema: application/json
required

Request Body

awb_numbers
Array of strings

Responses

Request samples

Content type
application/json
{
  • "awb_numbers": [
    ]
}

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "message": "success create/get ...",
  • "request_id": "019564e5-8ab3-7bbe-98dc-164750ec045e",
  • "status": "success",
  • "status_code": 200,
  • "timestamp": "2022-04-14T05:55:35.006Z"
}

Cancel Shipment Order

Cancel the order if it hasn't been picked up by courier

Authorizations:
BearerToken
path Parameters
order_identifier
required
string

AWB (air way bill) Number or client_order_no

Request Body schema: application/json
required

Request Body

cancel_reason
required
string

the reason why this order will be cancelled

Responses

Request samples

Content type
application/json
{
  • "cancel_reason": "double entry"
}

Response samples

Content type
application/json
{
  • "data": null,
  • "message": "success create/get ...",
  • "request_id": "019564e5-8ab3-7bbe-98dc-164750ec045e",
  • "status": "success",
  • "status_code": 200,
  • "timestamp": "2022-04-14T05:55:35.006Z"
}

Bulk Cancel Order

Bulk Cancel Order By List of AWB Cancel the order if it hasn't been picked up by courier

Authorizations:
BearerToken
Request Body schema: application/json
required

List of awb numbers and cancel reason

awb_numbers
required
Array of strings

AWB number

cancel_reason
required
string

Cancel reason

Responses

Request samples

Content type
application/json
{
  • "awb_numbers": [
    ],
  • "cancel_reason": "double entry"
}

Response samples

Content type
application/json
{
  • "data": {
    },
  • "message": "success create/get ...",
  • "request_id": "019564e5-8ab3-7bbe-98dc-164750ec045e",
  • "status": "success",
  • "status_code": 200,
  • "timestamp": "2022-04-14T05:55:35.006Z"
}

Callback

Callback AWB (External)

Callback AWB is a mechanism to let client know when a shipment order assigned with a valid AWB number from logistic.

  • Since shipment order creation dependent to logistic, the AWB might not assigned immediately.
  • This mechanism let client know when the AWB is assigned. Alternatively, client may use API Get AWB Number to check if a client_order_no have the AWB yet.
  • Client must provide a callback endpoint in their system and validate the x-everpro-key header with secret shared during onboarding.
  • Client must provide the endpoint with method POST and return HTTP Status 200 as response.
  • Client can update their own callback url via using dashboard menu Pengaturan > Konfigurasi.
  • Everpro send the callback as soon as Everpro detect status update in shipment order.
  • Callback is sent at least once and retry on failure up to 6 times. It is 7 times attempts in total.
  • Callback retry begin at 15 interval minutes and exponentially increase.
  • Callback last retry will be 24 hours since the first attempt.
  • If client choose not to set or empty the callback tracking url, Everpro drop the callback.
header Parameters
x-everpro-key
required
string

x-everpro-key is header that sent by Everpro. See onboarding email for the value.

Request Body schema: application/json
required

Request Body

awb_number
string

awb_number is the AWB Number that used by logistic to identify a shipment order.

client_order_no
string

client_order_no is order number set by client, unique per shipment order.

logistic_reference_number
string

logistic_reference_number is reference number provided by logistic in addition of AWB Number.

order_reference_id
string

order_reference_id is reference id set by client, not unique.

Responses

Request samples

Content type
application/json
{
  • "awb_number": "IDE0011737461",
  • "client_order_no": "INV-2025-0001939",
  • "logistic_reference_number": "TGL-BD057-CBN07",
  • "order_reference_id": "GB-2025010100001"
}

Callback Tracking (External)

Callback Tracking is a mechanism for Everpro to let client know if a shipment order has status update.

  • Client must provide a callback endpoint in their system and validate the x-everpro-key header with secret shared during onboarding.
  • Client must provide the endpoint with method POST and return HTTP Status 200 as response.
  • Client can update their own callback url via using dashboard menu Pengaturan > Konfigurasi.
  • Everpro send the callback as soon as Everpro detect status update in shipment order.
  • Callback is sent at least once and retry on failure up to 6 times. It is 7 times attempts in total.
  • Callback retry begin at 15 minutes interval and exponentially increase.
  • Callback last retry will be 24 hours since the first attempt.
  • Callback only sent if there is changes in tracking_code.
  • If client choose not to set or empty the callback tracking url, Everpro drop the callback.
header Parameters
x-everpro-key
required
string

x-everpro-key is header that sent by Everpro. See onboarding email for the value.

Request Body schema: application/json
required

Request Body

awb_number
string

awb_number is the AWB Number that used by logistic to identify a shipment order.

cancel_reason
string

cancel_reason specifies the reason for the cancellation of an order. It is present only when the tracking_code is set to CANCELED. For all other tracking_code values, this field is omitted or left empty.

client_order_no
string

client_order_no is order number set by client, unique per shipment order.

order_reference_id
string

order_reference_id is reference id set by client, not unique.

tracking_code
string
Tracking Codes
Description
WAITING the shipment order is created, waiting for pickup / drop off
FAILED PICKUP the courier failed to pick up the package, for example due to packaging is not ready yet
PICKEDUP the shipment order is picked up by courier, in shipment process
IN PROCESS RETURN the shipment order in the process of returning to shipper
DELIVERED the shipment order completed with package received
REJECTED the shipment order being rejected by receiver, for example due to wrong address
IN TROUBLE the shipment order meet a technical problem, for example: Criss Cross
CANCELED the shipment order is canceled, the client_order_no cannot be reused
RETURN the shipment order completed with package returned to shipper
LOST/BROKEN the shipment order completed with package is lost or broken
FORCE MAJEURE the shipment order completed with package unable to be delivered or returned due to unforeseen events like natural disasters, strikes, wars or law enforcement

Responses

Request samples

Content type
application/json
{
  • "awb_number": "IDE0011737461",
  • "cancel_reason": "Cancel by user",
  • "client_order_no": "INV-2025-0001939",
  • "order_reference_id": "GB-2025010100001",
  • "tracking_code": "CANCELED"
}

Callback Bulk Order (External)

Callback Bulk Order is a mechanism to notify client when a bulk shipment orders creation are complete.

  • Callback only be sent if the order made from API Bulk Create Shipment Order
  • Everpro send callback when proccess of bulk shipment orders creation is done and count the success & failed creation.
  • Client must provide a callback endpoint in their system and validate the x-everpro-key header with secret shared during onboarding.
  • Clients must inform the endpoint to Everpro Support so Everpro can set it up for clients.
  • Client must provide the endpoint with method POST and return HTTP Status 200 as response.
  • There is no retry mechanism for this callback.
header Parameters
x-everpro-key
required
string

x-everpro-key is header that sent by Everpro. See onboarding email for the value.

Request Body schema: application/json
required

Request Body

success_count
integer

success_count is total of succesful created shipment order.

failed_count
integer

failed_count is total of failed created shipment order.

Array of objects
Array of objects

Responses

Request samples

Content type
application/json
{
  • "success_count": 100,
  • "failed_count": 0,
  • "success": [
    ],
  • "failed": [
    ]
}

Callback Last Mile (External)

Callback Last Mile is mechanism to notify client via callback when a the shipment order reach last mile.

  • Clients must inform the endpoint to Everpro Support so Everpro can set it up for clients.
  • Client must provide a callback endpoint in their system and validate the x-everpro-key header with secret shared during onboarding.
  • Clients must inform the endpoint to Everpro Support so Everpro can set it up for clients.
  • Client must provide the endpoint with method POST and return HTTP Status 200 as response.
  • There is no retry mechanism for this callback.
  • Supported 3pl:
    • JNE
    • JNT
    • SICEPAT
    • SAP
    • IDX
header Parameters
x-everpro-key
required
string

x-everpro-key is header that sent by Everpro. See onboarding email for the value.

Request Body schema: application/json
required

Request Body

client_order_no
string

client_order_no is order number set by client, unique per shipment order.

awb_number
string

awb_number is the AWB Number that used by logistic to identify a shipment order.

status
string

status is the tracking last mile status from logistic.

order_reference_id
string

order_reference_id is reference id set by client, not unique.

Responses

Request samples

Content type
application/json
{
  • "client_order_no": "INV-2025-0001939",
  • "awb_number": "IDE0011737461",
  • "status": "WITH DELIVERY COURIER [JAKARTA]",
  • "order_reference_id": "GB-2025010100001"
}