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": {
    },
  • "errors": [
    ],
  • "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 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": [
    ],
  • "errors": [
    ],
  • "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": [
    ],
  • "errors": [
    ],
  • "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 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": [
    ],
  • "errors": [
    ],
  • "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": [
    ],
  • "errors": [
    ],
  • "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": [
    ],
  • "errors": [
    ],
  • "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 Supported Logistics/Couriers

This endpoint will show the list of couriers and its services that supported in Everpro

Authorizations:
BearerToken

Responses

Request samples

const request = require('request');

const options = {
  method: 'GET',
  url: 'https://client-api-sandbox.everpro.id/shipment/v1/logistics',
  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": {
    },
  • "errors": [
    ],
  • "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.

Available Status IDs:

ID Status Name Category
100 Unpaid Payment
101 Insufficient Payment Payment
102 Pending Payment Payment
200 Paid Paid
201 Paid in Cash Paid
202 Failed to Generate AWB Number Paid
300 Waiting for Pick Up Pickup/Drop
301 Waiting for Drop Off Pickup/Drop
302 Transferred to 3PL Pickup/Drop
303 Arrived at Sorting Hub Pickup/Drop
304 Failed Pickup Pickup/Drop
400 In Process Processing
401 Request to be Canceled Processing
402 In Process Return Processing
403 Arrived at Destination City Processing
404 Ongoing to Receiver Processing
500 Completed Completion
501 Rejected Completion
600 Complained Issue
601 Resolved Issue
602 In Trouble Issue
700 Cancelled Termination
701 Expired Termination
702 Return Termination
703 Lost / Broken Termination
704 Failed Termination
705 Force Majeure Termination
706 Repeat Delivery Termination
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 Available Status IDs table above for valid values

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": {
    },
  • "errors": [
    ],
  • "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
{}

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": {
    },
  • "errors": [
    ],
  • "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": {
    },
  • "errors": [
    ],
  • "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,
  • "errors": [
    ],
  • "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,
  • "errors": [
    ],
  • "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": [
    ],
  • "errors": [
    ],
  • "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": {
    },
  • "errors": [
    ],
  • "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 V2

Create a Shipment Order V2

Authorizations:
BearerToken
Request Body schema: application/json
required

Request Body

cashback
integer

cashback is cashback applied for the shipping, obtainable from Get Logistic Rates.

client_order_no
string

client_order_no is order number set by client.

  • value only required for postpaid, prepaid user can left this as blank.
cod_price
integer

cod_price is 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
height
number >= 1

height in centimeter(cm)

insurance_price
integer >= 0

insurance_price obtained from Get Logistic Rates.

  • Please ensure to get rate with is_use_insurance too.
is_cod
boolean

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

  • default false
is_flat_rate
boolean

is_flat_rate is flag if the rate use is marked as flat rate Use the same value as response in obtainable from Get Logistic Rates.

is_use_insurance
boolean

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

is_use_woodpacking
boolean

is_use_woodpacking is flag if the shipment uses wooden packing service

length
number >= 1

length in centimeter(cm)

max_duration
required
integer >= 1

max_duration obtainable from Get Logistic Rates.

min_duration
required
integer >= 1

min_duration obtainable from Get Logistic Rates.

package_desc
required
string

package_desc is package description

package_price
required
integer >= 1

package_price is price of package

package_type_id
required
integer

package_type_id must be a valid id of:

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

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 rate code for desired shipping logistic, obtainable from Get Logistic Rates.

rateID
integer

internal use

receiver_address
required
string

receiver_address is shipper address.

receiver_address_note
string

receiver_address_note is additional note set for address.

receiver_email
string

receiver_email is receiver email

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

receiver_nameis receiver name.

receiver_phone
required
string [ 10 .. 15 ] characters

receiver_phoneis receiver phone number. use one of this format: +62xxxxxxxxxxx, 62xxxxxxxxxxx, or 08xxxxxxxxxxx

receiver_postal_code
required
string

receiver_postal_code is desired postal code for origin. Please set origin_sub_district_name too for more accurate location.

receiver_sub_district_name
string

receiver_sub_district_name is receiver sub district name. Please use API Get Location Detail if you only have postal code.

shipment_price
required
integer

shipment_price define the price returned from API Get Logistic Rates

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 is shipper address.

shipper_address_note
string

shipper_address_note is additional note set for address.

shipper_email
string

shipper_email is shipper email.

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

shipper_name is shipper name.

shipper_phone
required
string [ 10 .. 15 ] characters

shipper_phone_number is shipper phone number. use one of this format: +62xxxxxxxxxxx, 62xxxxxxxxxxx, or 08xxxxxxxxxxx

shipper_postal_code
required
string

shipper_postal_code is desired postal code for origin. Please set origin_sub_district_name too for more accurate location.

shipper_sub_district_name
string

shipper_sub_district_nameis shipper sub district name. Please use API Get Location Detail if you only have postal code.

shipping_note
string

shipping_note is additional information for the shipment.

signed_key
string

SignedKey is the result generated from request and response value when get rates this is used to validate order data upon creating order

surcharge
integer

surcharge is the surcharge amount from wooden packing (and other surcharges)

weight
required
number >= 0

weight of the package, in kilogram(kg).

  • allow comma.
width
number >= 1

width in centimeter(cm)

Responses

Request samples

Content type
application/json
{
  • "cashback": 0,
  • "client_order_no": "INV01123233",
  • "cod_price": 1000,
  • "height": 1,
  • "insurance_price": 0,
  • "is_cod": false,
  • "is_flat_rate": true,
  • "is_use_insurance": false,
  • "is_use_woodpacking": true,
  • "length": 3,
  • "max_duration": 2,
  • "min_duration": 3,
  • "package_desc": "Kardus",
  • "package_price": 0,
  • "package_type_id": 1,
  • "pickup_time": "2024-12-09T16:09:53.000Z",
  • "rate_code": "YES19",
  • "rateID": 0,
  • "receiver_address": "Jl Unta no 22",
  • "receiver_address_note": "Depan warung",
  • "receiver_email": "[email protected]",
  • "receiver_latitude": -6.861247,
  • "receiver_longitude": 107.544621,
  • "receiver_name": "Doe",
  • "receiver_phone": "6288313321232",
  • "receiver_postal_code": "10560",
  • "receiver_sub_district_name": "Johar baru",
  • "shipment_price": 10000,
  • "shipment_type": "DROP",
  • "shipper_address": "Jl Komodo no 13",
  • "shipper_address_note": "Depan rumah",
  • "shipper_email": "[email protected]",
  • "shipper_latitude": -6.864209,
  • "shipper_longitude": 107.543852,
  • "shipper_name": "John",
  • "shipper_phone": "62883133223",
  • "shipper_postal_code": "40262",
  • "shipper_sub_district_name": "Burangrang",
  • "shipping_note": "Hati hati",
  • "signed_key": "string",
  • "surcharge": 0,
  • "weight": 1,
  • "width": 12
}

Response samples

Content type
application/json
{
  • "data": null,
  • "errors": [
    ],
  • "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

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 (Please set to TRUE if want to use insurance)

  • If true, the insurance fee will be calculated based on the package price.
  • Unsupported couriers may return 0 for insurance price, please set is_use_insurance when create order to false if the insurance_price is 0.
item_price
integer

item_price is the package price for insurance calculation. Required to be more than 0 for prepaid client.

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. To see the available logistics, you can check endpoint Get Supported Logistics

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
rate_codes
Array of strings

Optional. filter service codes (e.g. REG23, OKE). Only rates matching these codes will be returned.

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,
  • "rate_codes": [
    ],
  • "shipment_type": "PICKUP",
  • "weight": 0.3,
  • "width": 40
}

Response samples

Content type
application/json
{
  • "data": {
    },
  • "errors": [
    ],
  • "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"
}