NAV Navbar
python shell javascript
  • Introduction
  • Changelog
  • Authentication
  • Location
  • Address
  • Shipment
  • Products
  • Shipping Rates
  • Orders
  • Webhook
  • Errors
  • Introduction

    Welcome to the Boxme API! You can use our API to access Boxme API endpoints.

    Prerequisites: Basic computer literacy, a basic understanding RESTful API, shipping service depend by market.

    You can send API request to us, after that we will introduce to you "how to integrate with Boxme system?"

    Boxme API request form

    Note: Response data are using UTC timezone. You can convert to your local time before show data to end users.

    Changelog

    Version 2.1

    Version 2.0

    Boxme warehouse

    Warehouse Warehouse name Warehouse country
    BMVN_HN Boxme Fulfillment Hanoi VietNam
    BMVN_HCM Boxme Fulfillment Ho Chi Minh VietNam
    BMTH_BK Boxme Fulfillment Bangkok Thailand
    BMID_JKT Boxme Fulfillment Jakarta Indonesia
    BMMY_SB Boxme Fulfillment Subang Malaysia
    BMHK_HK Boxme Sorting hub Hongkong Hongkong
    BMUS_SJ Boxme Consolidate Hub San Jose USA
    BMCN_SZ Boxme Consolidate Hub Shenzhen China
    BMCN_DQ Boxme Consolidate Hub Dongguan China
    BMCN_GZ Boxme Consolidate Hub Guangzhou China

    Delivery service code

    Country Contry Code Delivery Service Code Service name Global service Available at Fulfillment warehouse
    Thailand TH ALP_EXP Alphafast Nextday No Yes
    Thailand TH FLASH_PD Flash Express Parcel Domestic No Yes
    Thailand TH DHL_PD DHL Parcel Domestic No Yes
    Thailand TH DHL_DR DHL Parcel Domestic (Drop-off) No Yes
    Thailand TH KE_ND Kerry Nextday NO YES
    Thailand TH KE_2D Kerry 2Day NO YES
    Thailand TH DHL_PIE Packet International Economy YES YES
    Thailand TH DHL_PIS Packet International Standard YES YES
    Thailand TH DHL_PPS Packet Plus International Standard YES YES
    Thailand TH NJV_SD Sameday service NO NO
    Thailand TH NJV_ND Next day NO NO
    Thailand TH NJV_PD Standard service NO NO
    Thailand TH THP_EMS EMS Drop-Off NO NO
    Thailand TH ARM_PLX International Express Evelope YES NO
    Thailand TH ARM_PDX Document Express YES NO
    Thailand TH ARM_PPX Parcel Express YES NO
    Thailand TH CJ_ND Next day No NO
    Vietnam VN VTP_VCN Express service No YES
    Vietnam VN VTP_V36 Cargo 36h NO YES
    Vietnam VN VTP_V60 Cargo 60h NO YES
    Vietnam VN VTP_SCOD Express CoD service NO YES
    Vietnam VN VTP_VTK Economy service No YES
    Vietnam VN VTP_VVT Cargo economy service No YES
    Vietnam VN VTP_PTN Same day NO Yes
    Vietnam VN VTP_PHS Next day NO Yes
    Vietnam VN VTP_PHS On-demand delivery No YES
    Vietnam VN NT_CPN Express service NO YES
    Vietnam VN NT_PTK Economy service NO YES
    Vietnam VN NT_PDB Cargo economy service No YES
    Vietnam VN DHLE_PDO Economy service NO YES
    Vietnam VN DHLE_PDE Express service NO YES
    Vietnam VN GTS_PNM Express service NO YES
    Vietnam VN DHL_EV International Express Evelope YES YES
    Vietnam VN DHL_PC International Express Parcel YES YES
    Vietnam VN EMS_PHT On-demand delivery NO YES
    Vietnam VN EMS_CPN Express service NO YES
    Vietnam VN EMS_ECOD ECOD Express service NO YES
    Vietnam VN EMS_CPTT Domestic Economy NO YES
    Vietnam VN EMS_EXP International express service YES YES
    Vietnam VN KE_CPN Express service NO YES
    Vietnam VN KE_CPTK Economy service NO YES
    Vietnam VN GHTK_CPN Express service NO YES
    Vietnam VN S60_GTN Same day NO YES
    Vietnam VN S60_GQN Next day NO YES
    Vietnam VN S60_GHT On-demand delivery NO YES
    Vietnam VN EMS_PPX Parcel Express YES YES
    Vietnam VN BM_SD Boxme fulfillment NO YES
    Vietnam VN BM_MKP Marketplace fulfillment NO YES
    Vietnam VN BM_DBS Delivery by seller NO YES
    Indonesia ID REG_JNE JNE Regular Service NO YES
    Indonesia ID REG_JNT J&T Regular Service NO YES
    Indonesia ID REG_FIRST First Logistic Regular Service NO YES
    Indonesia ID REG_KURIER KURIER Regular Service NO YES
    Indonesia ID REG_SAP SAP Regular Service NO YES
    Indonesia ID REG_NJV Ninjavan Regular Service NO YES
    Malaysia MY DHL_PD DHLeC Parcel Domestic NO YES
    Malaysia MY SKY_PD Skynet Parcel Domestic No YES

    Authentication

    Get a key

    Before you can start using our APIs, you need an API key. It's easy. Just visit seller center and sign in with your account. Next step go to Settings menu -> Intergration to create API key.

    Once you've activated your key, you're ready to roll.

    Sandbox environment

    Oms system: https://sandbox.boxme.asia

    API URL: https://sandbox.boxme.asia/api/ (just change s.boxme.asia to sandbox.boxme.asia)

    Account : test@boxme.asia

    Password : 123456a@

    API key : 424d8beddf6fcaca4ad4bcecc4dff0d6057c4116987a4a8c94336aa56700c9ba

    Postman: Try with Postman

    Using Boxme API key

    To use the Boxme API key, construct a normal HTTPS request and include an Authorization header with the value of Token. Signing is not required.

    Example:

    Authorization: Token 424d0db4e09024c3f29120972ddb747d34e721941e33bace61eb6fced161ac85

    Please contact us if you have any questions support@boxme.asia.

    Location

    Get List Country

    import requests
    url     = "https://s.boxme.asia/api/v1/locations/countries/"
    
    headers = {
      'content-type': "application/json",
    }
    
    response = requests.request("GET", url)
    
    
    curl "https://s.boxme.asia/api/v1/locations/countries/"
      -H "Authorization: api key"
    
    
    

    The above command returns JSON structured like this:

    {
        "data": [
            {
                "id": 1,
                "country_code": "AF",
                "country_name": "Afghanistan",
                "phone_code": 93,
                "required_zipcode": false,
                "currency": "AFA"
            },
            {
                "id": 2,
                "country_code": "AL",
                "country_name": "Albania",
                "phone_code": 355,
                "required_zipcode": false,
                "currency": "ALL"
            },
            {
                "id": 3,
                "country_code": "DZ",
                "country_name": "Algeria",
                "phone_code": 213,
                "required_zipcode": true,
                "currency": "DZD"
            },
            {
                "id": 4,
                "country_code": "AS",
                "country_name": "American Samoa",
                "phone_code": 1684,
                "required_zipcode": true,
                "currency": "USD"
            },
            {
                "id": 5,
                "country_code": "AD",
                "country_name": "Andorra",
                "phone_code": 376,
                "required_zipcode": true,
                "currency": "ADP"
            },
            {
                "id": 6,
                "country_code": "AO",
                "country_name": "Angola",
                "phone_code": 244,
                "required_zipcode": false,
                "currency": "AON"
            },
            {
                "id": 7,
                "country_code": "AI",
                "country_name": "Anguilla",
                "phone_code": 1264,
                "required_zipcode": false,
                "currency": "XCD"
            }
            .......
        ]
    }
    
    

    Get list country in boxme system

    HTTP Request

    GET https://s.boxme.asia/api/v1/locations/countries/

    Get List Province & State

    import requests
    url     = "https://s.boxme.asia/api/v1/locations/countries/MY/provinces/"
    
    headers = {
      'content-type': "application/json",
    }
    
    response = requests.request("GET", url)
    
    
    curl "https://s.boxme.asia/api/v1/locations/countries/MY/provinces/"
      -H "Authorization: api key"
    
    
    

    The above command returns JSON structured like this:

    {
        "data": [
            {
                "id": 175,
                "country_code": "MY",
                "code": "",
                "province_name": "Kedah",
                "province_name_local": "Kedah",
                "province_name_convert": "kedah"
            },
            {
                "id": 176,
                "country_code": "MY",
                "code": "",
                "province_name": "Kelantan",
                "province_name_local": "Kelantan",
                "province_name_convert": "kelantan"
            },
            {
                "id": 177,
                "country_code": "MY",
                "code": "",
                "province_name": "Kuala Lumpur",
                "province_name_local": "Kuala Lumpur",
                "province_name_convert": "kualalumpur"
            },
            {
                "id": 178,
                "country_code": "MY",
                "code": "",
                "province_name": "Labuan",
                "province_name_local": "Labuan",
                "province_name_convert": "labuan"
            },
            {
                "id": 179,
                "country_code": "MY",
                "code": "",
                "province_name": "Melaka",
                "province_name_local": "Melaka",
                "province_name_convert": "melaka"
            } 
            .............
        ]
    }
    
    

    Get list country in boxme system

    HTTP Request

    GET https://s.boxme.asia/api/v1/locations/countries/MY/provinces/

    Get List District

    import requests
    url     = "https://s.boxme.asia/api/v1/locations/countries/MY/179/district/"
    
    headers = {
      'content-type': "application/json",
    }
    
    response = requests.request("GET", url)
    
    
    curl "https://s.boxme.asia/api/v1/locations/countries/MY/179/district/"
      -H "Authorization: api key"
    
    
    

    The above command returns JSON structured like this:

    {
        "data": [
            {
                "id": 3004,
                "country_code": "MY",
                "province": 179,
                "district_name": "Air Keroh",
                "district_name_local": "Air Keroh",
                "code": "",
                "district_name_convert": "airkeroh",
                "area": 0
    
            },
            {
                "id": 3005,
                "country_code": "MY",
                "province": 179,
                "district_name": "Alor Gajah",
                "district_name_local": "Alor Gajah",
                "code": "",
                "district_name_convert": "alorgajah",
                "area": 1
    
            },
            {
                "id": 3006,
                "country_code": "MY",
                "province": 179,
                "district_name": "Asahan",
                "district_name_local": "Asahan",
                "code": "",
                "district_name_convert": "asahan",
                "area": 0
    
            },
            .............
        ]
    }
    
    

    Get list district

    HTTP Request

    GET https://s.boxme.asia/api/v1/locations/countries/{country_code}/{province_id}/district/

    Request Response

    Parameter Data Type Required Description
    id integer yes District ID
    country_code string yes Country code (ISO 2-char country code)
    province string yes Province ID
    district_name string yes District name
    district_name_local string yes District local name
    area integer yes 1. Center of province, state

    Lookup zipcode

    import requests
    url     = "http://s.boxme.asia/api/v1/locations/lookup-zipcode/MY/8210"
    
    headers = {
      'content-type': "application/json",
    }
    
    response = requests.request("GET", url)
    
    
    curl "http://s.boxme.asia/api/v1/locations/lookup-zipcode/MY/8210"
    
    
    

    The above command returns JSON structured like this:

    {
        "data": [
          {
            "id": 1032,
            "country_code": "MY",
            "province": 174,
            "province_code": "",
            "province_name": "Johor",
            "district": 2883,
            "district_name": "Ayer Baloi",
            "zipcode": "82100",
    
          },
          {
            "id": 1032,
            "country_code": "MY",
            "province": 174,
            "province_code": "",
            "province_name": "Johor",
            "district": 2883,
            "district_name": "Ayer Baloi",
            "zipcode": "82100",
    
          },
        ]
    
    }
    
    

    Lookup zipcode

    HTTP Request

    GET http://s.boxme.asia/api/v1/locations/lookup-zipcode/{country_code}/{zipcode}

    Request Response

    Parameter Data Type Required Description
    id integer yes District ID
    country_code string yes Country code (ISO 2-char country code)
    province string yes Province ID
    province_code string yes Province name
    province_name string yes Province local name
    district string yes District ID
    district_name string yes District name
    zipcode string yes zipcode

    Address

    List All Addresses

    In Boxme system, the address included pick-up and return address of merchant.

    HTTP Request

    GET http://s.boxme.asia/api/v1/sellers/addresses/

    import requests
    url     = "http://s.boxme.asia/api/v1/sellers/addresses/"
    
    headers = {
      'content-type': "application/json",
    }
    
    response = requests.request("GET", url)
    
    
    curl "http://s.boxme.asia/api/v1/sellers/addresses/"
      -H "Authorization: api key"
    
    
    

    The above command returns JSON structured like this:

    {
        "data": {
            "count": 1,
            "next": null,
            "previous": null,
            "results": [{
                "id": 1,
                "country": "VN",
                "pickup_name": "Boxme Ha Noi-0906262181",
                "name_contact": "Boxme Ha Noi",
                "phone": "0906262181",
                "province_id": 1,
                "district_id": 7,
                "commune_id": 0,
                "zipcode": "",
                "address": "18 Tam Trinh, Minh Khai, Hai Bà Trưng, Hà Nội, Việt Nam, 18 Tam Trinh, Mai Động, Hai Bà Trưng, Hà Nội 90001, Vietnam,Quận Hai Bà Trưng, Hà Nội",
                "lat": "0.000000",
                "lng": "0.000000",
                "active": 1
            }]
        },
        "error": false,
        "error_code": "",
        "messages": "",
        "total": 1
    }
    
    

    Request Query

    Parameter Data Type Required Description
    address_type integer yes Type of address
    1 is pick-up address
    2 is return address
    page_size integer no Total address display once page.
    Default: 20
    page integer no Page number

    Request Response

    Parameter Data Type Description
    id integer Address ID
    country string Address country code (ISO 2-char country code)
    pickup_name string Address name
    name_contact string Address contact name
    phone string Address contact phone
    province_id integer State, Province ID. Refer to Location
    district_id integer District ID. Refer to Location
    commune_id integer Commune ID. Refer to Location
    zipcode string Address zipcode
    address string Address detail
    lat geo Latitude
    lng geo Longitude
    active integer Active or not

    Add Addresses

    import requests
    url     = "https://s.boxme.asia/api/v1/sellers/addresses/"
    payload = {
      "pickup_code": "",
      "pickup_name": "KHO BMVN_HCM",
      "name_contact": "Sandbox",
      "phone": "0987654321",
      "address": "",
      "country": "VN",
      "province_id": 79,
      "district_id": 886,
      "commune_id": 0,
      "zipcode": "",
      "priority": 1,
      "ff_center": 1,
      "ff_center_code": "BMVN_HCM",
      "address_type": 1
    }
    
    
    
    headers = {
      'content-type': "application/json",
      'authorization': "api key",
    }
    
    response = requests.request("POST", url, data=payload, headers=headers)
    
    
    
    curl "https://s.boxme.asia/api/v1/sellers/addresses/"
      -H "Authorization: api key"
    
    
    
    
    
    

    The above command returns JSON structured like this:

    {
        "data": {
        "pickup_id": 25898
        },
        "error": false,
        "error_code": "",
        "messages": "Create address success",
        "total": 0
    }
    

    Request Body

    Parameter Data Type Required Description
    pickup_code string yes Pickup code ( your pickup code)
    pickup_name string yes Pickup name
    name_contact string yes Name contact pickup
    phone string yes Phone contact pickup
    address string yes Address pickup
    country string yes VN, ID, TH, MY, PH
    province_id int yes Province id pickup
    district_id int yes District id pickup
    zipcode string yes Zipcode pickup
    priority string yes Default address pickup
    ff_center int yes Use fulfillment center of BOXME ( 1: Yes, 0: No)
    ff_center_code string yes Fulfillment code of BOXME (See list below)

    Result

    Key Data Type Description
    messages string API Respone message
    error_code string API error code
    error boolean True/False
    data object .
         pickup_id string Pickup id

    Shipment

    Level detail: Shipment >> Overpack >> Orders >> Parcels

    Create shipment

    import requests
    url     = "https://s.boxme.asia/api/v1/sellers/shipments/create"
    payload = {
      "shipping_method": 2,
      "warehouse_country": "VN",
      "warehouse": "BMVN_HN",
      "overpacks": [
        {
          "overpack_number": "LB937129321",
          "parcels": [
            {
              "parcel_number": "BM82011233061-1F2",
              "order_number": "BM82011233061",
              "tracking_number": "BM82011233061"
            },
            {
              "parcel_number": "BM82011233061-2F2",
              "order_number": "BM82011233061",
              "tracking_number": "BM82011233061"
            }
          ],
          "volume": "4000",
          "weight": "5000"
        }
      ]
    }
    
    
    
    headers = {
      'content-type': "application/json",
      'authorization': "api key",
    }
    
    response = requests.request("POST", url, data=payload, headers=headers)
    
    
    
    curl "https://s.boxme.asia/api/v1/sellers/shipments/create"
      -H "Authorization: api key"
    
    
    
    
    
    

    The above command returns JSON structured like this:

    {
        "messages": "Create shipment success",
        "total": 0,
        "error_code": "",
        "data": {
            "shipment_code": "CB-VN-21-84669595"
        },
        "error": false
    }
    

    Request Body

    Parameter Data Type Required Description
    shipping_method string yes 1. Inbound shipment,
    2. Consolidate shipment
    warehouse_country string yes VN, ID, TH, MY, PH
    warehouse string yes Boxme warehouse code ( BMVN_HN, BMID_BKS...). Please see list on introduction.
    overpacks list yes Please refer overpacks

    Overpacks detail

    Parameter Data Type Required Description
    overpack_number string yes Overpack number, unique.
    volume string yes LxHxW (cm)
    weight number yes Overpack weight.
    parcels list yes List parcels in overpack
          parcel_number string no Parcel number from Boxme system.
          order_number string yes Your order number
          tracking_number string yes Boxme tracking number.

    Result

    Key Data Type Description
    messages string API Respone message
    error_code string API error code
    error boolean True/False
    data object .
         shipment_code string Shipment code

    Products

    Get list products

    import requests
    url     = "https://s.boxme.asia/api/v1/sellers/products/"
    payload = {
        "keyword": "keyword searchsearchh if any ", 
        "sku" : "SKU001,SKU002",
        "warehouse" : "boxme warehouse id",
        "create_from": "create product, timestamp",
        "create_to": "create product, timestamp",
        "page_size": 25, // page size
        "page": 1  // page number
    }
    
    
    
    headers = {
      'content-type': "application/json",
      'authorization': "api key",
    }
    
    response = requests.request("GET", url, data=payload, headers=headers)
    
    
    
    curl "https://s.boxme.asia/api/v1/sellers/products/"
      -H "Authorization: api key"
    
    
    
    
    
    

    The above command returns JSON structured like this:

    {
        "data": {
            "previous": "",
            "next": "",
            "count": 1,
            "results": [
                {
                    "seller_id": 21,
                    "desc": "Giày dép đẹp",
                    "statistic": [
                        {
                            "warehouse": "HN01",
                            "quantity_in_stock": 20,
                            "waiting_outbound": 0,
                            "damaged_in_stock": 0
                        }
                    ],
                    "barcode_manufacturer": "",
                    "last_active_time": 1527655342,
                    "weight_packed": 155,
                    "price_wholesale": 50000,
                    "brand": "",
                    "ValueMap": 2,
                    "value": 2,
                    "label": "SKU002_Giầy dép",
                    "created_time": 1527655342,
                    "warehouse_condition": 1,
                    "barcode": "",
                    "active": 1,
                    "type_sku": "1",
                    "price": 50000,
                    "updated_time": 1527655342,
                    "weight": 150,
                    "volume": "20x30x40",
                    "country": "VN",
                    "tag": "",
                    "supplier_name": "ANDNK DÉP",
                    "min_quantity": 10,
                    "link": "",
                    "category_id": 1,
                    "images": [
                        "https://cf.shopee.vn/file/f8f22318ce2956540059173e6dffd0e3"
                    ],
                    "unit_weight": "g",
                    "seller_sku": "SKU002",
                    "name": "Giầy dép",
                    "price_sale": 50000,
                    "category_name": "CATE GIẦY DÉP",
                    "id": 2,
                    "bsin": "BS002"
                }
            ]
        },
        "total": 1,
        "error_code": "",
        "error": false,
        "messages": ""
    }
    

    Request Body

    Parameter Data Type Required Description
    keyword string yes Product name, sku to filter.
    sku string yes SKU list(separate by commas).
    warehouse string yes Boxme warehouse id.
    create_from datetime yes Datetime create product.
    create_to datetime yes Datetime create product.
    page_size number yes Number of product per page.
    page number yes Page number.

    Result

    Key Data Type Description
    bsin string Boxme serial indentity number.
    seller_sku string Seller SKU.
    barcode_manufacturer string Barcode manufacture.
    name string Product name.
    desc string Product description.
    weight integer Item weight.
    price float Item price.
    statistic object Detail quantity each warehouse by country.
          warehouse string Warehouse code (ex: HN01, HN02).
          quantity_in_stock integer Total number items stocking.
          waiting_outbound integer Total number items waiting pickup.
          damaged_in_stock integer Total number items damage.
    weight_packed integer Parcel weight per item.
    weight_unit string Weight unit (g or lb)
    country string Country store this product.

    Shipping Rates

    Calculate

    import requests
    url     = "https://s.boxme.asia/api/v1/courier/pricing/calculate"
    payload = {
        "ship_from": {
            "contact_name": "Kitti Settanyakit",
            "company_name": "",
            "address": "27 ซอยสุขาภิบาล 2 ซอย 23 แขวงดอกไม้",
            "address2": "",
            "phone": "0863364084",
            "phone2": "",
            "country": "TH",
            "province": 190,
            "district": 3377,
            "zipcode": 10250
        },
        "ship_to": {
            "contact_name": "Kitti Settanyakit",
            "company_name": "",
            "email": "",
            "address": "ม.เคซีเนเชอรอลซิิตี้ ถนนกาญจนาภ ิเษก แขวงสะพานสูง",
            "address2": "",
            "phone": "0863364084",
            "phone2": "",
            "country": "TH",
            "province": 190,
            "district": 3389,
            "zipcode": 10240
        },
        "shipments": {
            "content": "Product name",
            "total_parcel": 1,
            "total_amount": 120,
            "chargeable_weight": 1000,
            "description": "Call customer before deliver",
            "parcels": [
                {
                    "amount": 120,
                    "description": "",
                    "dg_code": null,
                    "dimension": {
                        "width": 17,
                        "height": 6,
                        "length": 11
                    },
                    "hs_code": "",
                    "images": [],
                    "inspect_note": "",
                    "items": [
                        {
                            "sku": "",
                            "origin_country": "TH",
                            "name": "Product name",
                            "weight": 1000,
                            "amount": 120,
                            "quantity": 1,
                            "desciption": "Men T-Shirt",
                            "label_code": ""
                        }
                    ],
                    "referral_code": "",
                    "weight": 1000,
                    "dg_cod": ""
                }
            ]
        },
        "config": {
            "order_type": "normal",
            "return_mode": 1,
            "insurance": "N",
            "document": "N",
            "currency": "THB",
            "unit_metric": "metric"
        },
        "payment": {
            "fee_paid_by": "sender",
            "tax_paid_by": "receiver",
            "cod_amount": 0
        },
        "referral": {
            "order_number": "CUSTOMER ORER NUMBER"
        }
    }
    
    headers = {
      'content-type': "application/json",
      'authorization': "api key",
    }
    
    response = requests.request("POST", url, data=payload, headers=headers)
    
    
    
    curl "https://s.boxme.asia/api/v1/courier/pricing/calculate"
      -H "Authorization: api key"
    
    
    
    
    
    

    The above command returns JSON structured like this:

    [
      {
        "data": {
            "couriers": [
                {
                    "total_fee": 527957.76,
                    "shipping_fee": 527957.76,
                    "tax": 0,
                    "duty": 0,
                    "vas": {
                        "cod": 0,
                        "insurance": 0,
                        "checking": 0
                    },
                    "discount": 0,
                    "cod_value": 0,
    
                    "min_delivery_time": 1,
                    "max_delivery_time": 2,
                    "currency": "VND",
                    "handover_options": "dropoff,pickup",
                    "handover_policy": "Free pickup",
                    "courier_name": "DHL",
                    "courier_id": 17,
                    "courier_logo": "http://v2.boxme.vn/assets/images/courier/dhl.svg",
                    "service_code": "DCM",
                    "service_name": "DHL Express WorldWide(Documents up to 2.0 KG)",
                    "insurance_policy": "http://boxme.asia/insurance-policy-url",
                    "dropoff_point": "http://boxme.asia/drop-off/vtp",
                    "delivery_time_rank": 1,
                    "fee_rank": 1,
                    "rating": 1
                },
                {
                    "total_fee": 551078.88,
                    "shipping_fee": 551078.88,
                    "tax": 0,
                    "duty": 0,
                    "vas": {
                        "cod": 0,
                        "insurance": 0
                    },
                    "discount": 0,
                    "cod_value": 0,
                    "min_delivery_time": 1,
                    "max_delivery_time": 2,
                    "currency": "VND",
                    "handover_options": "dropoff,pickup",
                    "handover_policy": "Free pickup",
                    "courier_name": "DHL",
                    "courier_id": 17,
                    "courier_logo": "http://v2.boxme.vn/assets/images/courier/dhl.svg",
                    "service_code": "NDC",
                    "service_name": "DHL Express WorldWide(Non-documents from 0.5 KG & Documents from 2.5 KG)",
                    "insurance_policy": "http://boxme.asia/insurance-policy-url",
                    "dropoff_point": "http://boxme.asia/drop-off/vtp",
                    "delivery_time_rank": 2,
                    "fee_rank": 2,
                    "rating": 2
                }
            ]
        },
        "error": false,
        "error_code": "",
        "messages": "Calculate fee successfully",
        "total": 0
      }
    ]
    

    Get shipping fee

    HTTP Request

    POST https://s.boxme.asia/api/v1/courier/pricing/calculate

    Request Body

    Parameter Data Type Required Description
    ship_from object yes Pickup address details.
         contact_name string yes Shipper name.
         company_name string no Shipper company name.
         address string yes Shipper address line 1.
         address2 string no Shipper address line 2.
         phone string yes Shipper Phone number. Accepted special characters are : - ( ) # + ..
         phone2 string no Shipper Phone number 2.
         country string yes Shipper Country code (ISO 2-char country code)
         province integer yes Shipper state or province id. Refer to Location
         district integer no Shipper district id. Refer to Location
    Only required for Viet Nam customers
         zipcode string yes Shipper zipcode.
    ship_to object yes Consignee address details.
         contact_name string yes Consignee name.
         company_name string no Consignee company name.
         address string yes Consignee address line 1.
         address2 string no Consignee address line 2.
         phone string yes Consignee Phone number. Accepted special characters are : - ( ) # + ..
         phone2 string no Consignee Phone number 2.
         country string yes Consignee Country code (ISO 2-char country code)
         province integer yes Consignee state or province id. Refer to Location
         district integer no Consignee district id. Refer to Location
    Only required for Viet Nam customers
         zipcode string yes Consignee zipcode.
    shipments object yes Shipments details.
         content string yes Parcel key content.
         total_parcel integer yes Total parcel of shipments.
         total_amount decimal yes Total shipments amount.
         description string no Detail parcel description.
         chargeable_weight string yes Chargeable weight of shipment.
    config object yes Config informations.
         delivery_service string no Shipping service code
         sort_mode interge no Sort by : best_price (default), best_time, best_rating
         order_type string yes Order type : normal (default), cross_border, consolidate, fulfill
         return_mode interge no Return mode.
    1: to pickup address (default) , 2 : to return address
         insurance string no Total shipments amount.
    Only accept Y or N
         document string yes Description.
    Only accept Y or N
         currency string yes 3-char ISO currency code for all monetary value fields.
         unit_metric string no metric or imperial
    payment object yes Payment informations.
         fee_paid_by string yes Default fee paid by sender, if you change to receiver then we will add fee to CoD amount.
         tax_paid_by string yes Default fee paid by receiver, if you change to sender then you will be charge (if any).
         cod_amount decimal yes Total CoD Amount(in 2 decimal points). We will calculate depend by fee_paid_by
    Formula: CoD Amount = cod_amount + total_fee (if fee_paid_by is receiver).
    referal object yes Referal informations.
         order_number string no Your order number ( exp: shopify order_id)

    Orders

    Create Order Domestic

    import requests
    url     = "https://s.boxme.asia/api/v1/courier/pricing/create_order"
    payload = {
      "ship_from": {
        "country": "TH",
        "pickup_id":123
    
      },
      "ship_to": {
        "contact_name": "Duong An",
        "company_name": "",
        "email": "",
        "address": "Thailand,Pom Prap Sattru Phai,Bangkok",
        "address2": "",
        "phone": "09356565",
        "phone2": "",
        "country": "TH",
        "province": 190,
        "district": 3353,
        "zipcode": "10100"
      },
      "shipments": {
        "content": "t-shirt, shoes",
        "total_parcel": 1,
        "total_amount": 120,
        "chargeable_weight": 1000,
        "description": "Please pick it up on 13:00",
        "parcels": [
          {
            "dimension": {
              "width": 0,
              "height": 0,
              "length": 0
            },
            "weight": 1000,
            "items": [
              {
                "sku": "",
                "origin_country": "VN",
                "name": "t-shirt",
                "weight": 1000,
                "amount": 200,
                "quantity": 1
              }
            ]
          }
        ]
      },
      "config": {
        "order_type": "normal",
        "insurance": "N",
        "currency": "THB",
        "unit_metric": "metric",
        "unique_order_number":"N"
      },
      "payment": {
        "fee_paid_by": "sender",
        "cod_amount": 0
      },
      "referral": {
        "order_number": "XX-XX-XX"
      }
    }
    
    headers = {
      'content-type': "application/json",
      'authorization': "api key",
    }
    
    response = requests.request("POST", url, data=payload, headers=headers)
    
    
    
    curl "https://s.boxme.asia/api/v1/courier/pricing/create_order"
      -H "Authorization: api key"
    
    
    
    
    
    

    The above command returns JSON structured like this:

    {
        "data": {
            "tracking_number": "BM81262653033",
            "cod_value": 0,
            "fee": {
                "shipping_fee": 12000,
                "cod_fee": 0,
                "insurance_fee": 0,
                "checking_fee": 0
            }
        },
        "error": false,
        "error_code": "",
        "messages": "Create order successfully.",
        "total": 0
    }
    
    

    Please check balance before create orders, you can not create orders if your balance not enought. For fulfillment order, we auto process and you can not cancel it after cutoff time.

    HTTP Request

    POST https://s.boxme.asia/api/v1/courier/pricing/create_order

    Request Body

    Parameter Data Type Required Description
    ship_from object yes Pickup address details.
         country string yes Shipper Country code (ISO 2-char country code).
         pickup_id integer yes ID of pickup address, must add country above.
    ship_to object yes Consignee address details.
         contact_name string yes Consignee name.
         company_name string no Consignee company name.
         address string yes Consignee address line 1.
         address2 string no Consignee address line 2.
         phone string yes Consignee Phone number. Accepted special characters are : - ( ) # + ..
         phone2 string no Consignee Phone number 2.
         country string yes Consignee Country code (ISO 2-char country code)
         province integer yes Consignee state or province id. Refer to Location
         district integer no Consignee district id. Refer to to Location
    Only required for Viet Nam customers
         zipcode string yes Consignee zipcode.
    shipments object yes Shipments details.
         content string yes Parcel key content.
         total_parcel integer yes Total parcel of shipments.
         total_amount decimal yes Total shipments amount.
         description string no Note for shipments or driver.
         chargeable_weight decimal yes Chargeabe weight (lbs, gram).
         parcels list yes Parcel list
    config object yes Config informations.
         delivery_service string no Shipping service code
         sort_mode string no Sort by : best_price (default), best_time, best_rating
         order_type string yes Order type : normal (default), cross_border, consolidate, fulfill
         return_mode integer yes Return mode.
    1: to pickup address (default) , 2 : to return address
         insurance string no Total shipments amount.
    Only accept Y or N
         preview string no Accept buyer open box and preview product before payment(only Vietnam support). Only accept Y or N
         currency string yes 3-char ISO currency code for all monetary value fields.
         unit_metric string no metric or imperial, default is metric
         unique_order_number string no Y or N, default is N. We check unique within 10days, default we checked phone number within 3mins ( all rules excluded orders cancelled)
    payment object yes Payment informations.
         fee_paid_by string yes Default fee paid by sender, if you change to receiver then we will add fee to CoD amount.
         cod_amount decimal yes Total CoD Amount(in 2 decimal points). We will calculate depend by fee_paid_by
    Formula: CoD Amount = cod_amount + total_fee (if fee_paid_by is receiver).
    referral object yes Referral informations.
         order_number string no Your order number ( exp: shopify order_id)


    parcels object.

    Parameter Data Type Required Description
    weight string yes Parcel weight.
    description string yes Parcel description.
    items list yes List items of parcel.


    items object.

    Parameter Data Type Required Description
    sku string no Item SKU, require for fulfillment orders.
    origin_country string no Manufacture country .
    name string yes Item name.
    description string yes Product description.
    weight integer yes Item weight.
    amount decimal yes Item value ( per item).
    quantity integer yes Total quanity.

    Create Order Fulfillment

    import requests
    url     = "https://s.boxme.asia/api/v1/courier/pricing/create_order"
    payload = {
      "ship_from": {
        "country": "TH",
        "pickup_id":1133
    
      },
      "ship_to": {
        "contact_name": "Duong An",
        "company_name": "",
        "email": "",
        "address": "Thailand,Pom Prap Sattru Phai,Bangkok",
        "address2": "",
        "phone": "09356565",
        "phone2": "",
        "country": "TH",
        "province": 190,
        "district": 3353,
        "zipcode": "10100"
      },
      "shipments": {
        "content": "t-shirt, shoes",
        "total_parcel": 1,
        "total_amount": 120,
        "chargeable_weight": 1000,
        "description": "Please pick it up on 13:00",
        "parcels": [
          {
            "dimension": {
              "width": 0,
              "height": 0,
              "length": 0
            },
            "weight": 1000,
            "description": "Please pick it up on 13:00",
            "items": [
              {
                "sku": "SKU001",
                "label_code": "",
                "origin_country": "VN",
                "name": "t-shirt",
                "desciption": "",
                "weight": 1000,
                "amount": 200,
                "quantity": 1
              }
            ]
          }
        ]
      },
      "config": {
        "create_by":"",
        "order_type": "fulfill",
        "return_mode": 1,
        "insurance": "N",
        "document": "Y",
        "currency": "THB",
        "unit_metric": "metric",
        "unique_order_number":"N"
    
      },
      "payment": {
        "fee_paid_by": "sender",
        "cod_amount": 0
      },
      "referral": {
        "order_number": "XX-XX-XX"
      }
    }
    
    headers = {
      'content-type': "application/json",
      'authorization': "api key",
    }
    
    response = requests.request("POST", url, data=payload, headers=headers)
    
    
    
    curl "https://s.boxme.asia/api/v1/courier/pricing/create_order"
      -H "Authorization: api key"
    
    
    
    
    
    

    The above command returns JSON structured like this:

    {
        "data": {
            "tracking_number": "BM81262653033",
            "cod_value": 0,
            "fee": {
                "shipping_fee": 12000,
                "cod_fee": 0,
                "insurance_fee": 0,
                "checking_fee": 0
            }
        },
        "error": false,
        "error_code": "",
        "messages": "Create order successfully.",
        "total": 0
    }
    
    

    Please check balance before create orders, you can not create orders if your balance not enought. For fulfillment order, we auto process and you can not cancel it after cutoff time.

    HTTP Request

    POST https://s.boxme.asia/api/v1/courier/pricing/create_order

    Request Body

    Parameter Data Type Required Description
    ship_from object yes Pickup address details.
         country string yes Shipper Country code (ISO 2-char country code).
         pickup_id integer yes ID of pickup address, must add country above.
    ship_to object yes Consignee address details.
         contact_name string yes Consignee name.
         company_name string no Consignee company name.
         address string yes Consignee address line 1.
         address2 string no Consignee address line 2.
         phone string yes Consignee Phone number. Accepted special characters are : - ( ) # + ..
         phone2 string no Consignee Phone number 2.
         country string yes Consignee Country code (ISO 2-char country code)
         province integer yes Consignee state or province id. Refer to Location
         district integer no Consignee district id. Refer to to Location
    Only required for Viet Nam customers
         zipcode string yes Consignee zipcode.
    shipments object yes Shipments details.
         content string yes Parcel key content.
         total_parcel integer yes Total parcel of shipments.
         total_amount decimal yes Total shipments amount.
         description string no Note for shipments or driver.
         chargeable_weight decimal yes Chargeabe weight (lbs, gram).
         parcels list yes Parcel list
    config object yes Config informations.
         create_by string no Staff ID ( referal your CRM system)
         delivery_service string no Shipping service code
         sort_mode string no Sort by : best_price (default), best_time, best_rating
         order_type string yes Order type : normal (default), cross_border, consolidate, fulfill
         return_mode integer yes Return mode.
    1: to pickup address (default) , 2 : to return address
         insurance string no Total shipments amount.
    Only accept Y or N
         preview string no Accept buyer open box and preview product before payment(only Vietnam support). Only accept Y or N
         currency string yes 3-char ISO currency code for all monetary value fields.
         unit_metric string no metric or imperial, default is metric
         unique_order_number string no Y or N, default is N. We check unique within 10days, default we checked phone number within 3mins ( all rules excluded orders cancelled)
    payment object yes Payment informations.
         fee_paid_by string yes Default fee paid by sender, if you change to receiver then we will add fee to CoD amount.
         cod_amount decimal yes Total CoD Amount(in 2 decimal points). We will calculate depend by fee_paid_by
    Formula: CoD Amount = cod_amount + total_fee (if fee_paid_by is receiver).
    referral object yes Referral informations.
         order_number string no Your order number ( exp: shopify order_id)


    parcels object.

    Parameter Data Type Required Description
    weight string yes Parcel weight.
    description string yes Parcel description.
    items list yes List items of parcel.


    items object.

    Parameter Data Type Required Description
    sku string no Item SKU, require for fulfillment orders.
    origin_country string no Manufacture country .
    name string yes Item name.
    description string yes Product description.
    weight integer yes Item weight.
    amount decimal yes Item value ( per item).
    quantity integer yes Total quanity.

    Shipping Label

    import requests
    url     = "http://s.boxme.asia/api/v1/orders/generate-awb-label/ "
    payload = {
        "list_tracking": ["BM8104221956","BM8509833018"]
      "page_size": "A5"
    }
    
    headers = {
      'content-type': "application/json",
      'authorization': "api key",
    }
    
    response = requests.request("POST", url, data=payload, headers=headers)
    
    
    
    curl "http://s.boxme.asia/api/v1/orders/generate-awb-label/"
      -H "Authorization: api key"
    
    
    
    
    
    

    The above command returns JSON structured like this:

    {
        "messages": "",
        "data": {
            "label_url": "http://s.boxme.asia/orders/awb-label/MjFmZjliMmUtOWFkOS00MTgzLTk3ZjYtNGUyOTg5YTJiZGY2"
        },
        "error": false,
        "total": 0,
        "error_code": ""
    }
    
    

    Get AWB label

    HTTP Request

    POST http://s.boxme.asia/api/v1/orders/generate-awb-label/

    Request Body

    Parameter Data Type Required Description
    list_tracking list yes List tracking number.
    Max: 20 tracking
    page_size list yes Paper size .
    A5 or A4

    Request Response

    Parameter Data Type Required Description
    label_url string yes AWB label url (PDF)

    Cancel Order

    import requests
    url     = "http://s.boxme.asia/api/v1/orders/cancel/BM8509833018/"
    payload = {
    
    }
    
    headers = {
      'content-type': "application/json",
      'authorization': "api key",
    }
    
    response = requests.request("POST", url, data=payload, headers=headers)
    
    
    
    curl "http://s.boxme.asia/api/v1/orders/cancel/BM8509833018/"
      -H "Authorization: api key"
    
    
    
    
    
    

    The above command returns JSON structured like this:

    {
        "data": {},
        "error": false,
        "error_code": "",
        "messages": "Success",
        "total": 0
    }
    
    

    HTTP Request

    POST http://s.boxme.asia/api/v1/orders/cancel/{tracking_number}

    Request Body

    Parameter Data Type Required Description
    tracking_number string yes Tracking number need to cancel

    Request Response

    Parameter Data Type Required Description

    Approve Order

    import requests
    url     = "http://s.boxme.asia/api/v1/orders/approve/BM8509833018/"
    payload = {
    
    }
    
    headers = {
      'content-type': "application/json",
      'authorization': "api key",
    }
    
    response = requests.request("POST", url, data=payload, headers=headers)
    
    
    
    curl "http://s.boxme.asia/api/v1/orders/approve/BM8509833018/"
      -H "Authorization: api key"
    
    
    

    The above command returns JSON structured like this:

    {
        "data": {},
        "error": false,
        "error_code": "",
        "messages": "Update tracking number: BM8509833018 is success",
        "total": 0
    }
    
    

    HTTP Request

    POST http://s.boxme.asia/api/v1/orders/approve/{tracking_number}

    Request Body

    Parameter Data Type Required Description
    tracking_number string yes Tracking number need to approve

    Request Response

    Parameter Data Type Required Description

    Return Order

    import requests
    url     = "http://s.boxme.asia/api/v1/courier/intergrate/confirm_return_tracking_code"
    payload = {
        "tracking_code" : "BM1234567890",
      "note"          : "Reason for return order"
    }
    
    headers = {
      'content-type': "application/json",
      'authorization': "api key",
    }
    
    response = requests.request("POST", url, data=payload, headers=headers)
    
    
    
    curl "http://s.boxme.asia/api/v1/courier/intergrate/confirm_return_tracking_code"
      -H "Authorization: api key"
    
    
    
    
    
    

    The above command returns JSON structured like this:

    {
        "data": {},
        "error": false,
        "error_code": "",
        "messages": "Success",
        "total": 0
    }
    
    

    HTTP Request

    POST http://s.boxme.asia/api/v1/courier/intergrate/confirm_return_tracking_code

    Request Body

    Parameter Data Type Required Description
    tracking_code string yes Tracking number need to return
    note string yes Reason for return

    Request Response

    Parameter Data Type Required Description

    Reshipping Order

    import requests
    url     = "http://s.boxme.asia/api/v1/courier/intergrate/confirm_delivery_tracking_code"
    payload = {
        "tracking_code" : "BM1234567890",
      "note"          : "Reason for reshipping order"
    }
    
    headers = {
      'content-type': "application/json",
      'authorization': "api key",
    }
    
    response = requests.request("POST", url, data=payload, headers=headers)
    
    
    
    curl "http://s.boxme.asia/api/v1/courier/intergrate/confirm_delivery_tracking_code"
      -H "Authorization: api key"
    
    
    
    
    
    

    The above command returns JSON structured like this:

    {
        "data": {},
        "error": false,
        "error_code": "",
        "messages": "Success",
        "total": 0
    }
    
    

    HTTP Request

    POST http://s.boxme.asia/api/v1/courier/intergrate/confirm_delivery_tracking_code

    Request Body

    Parameter Data Type Required Description
    tracking_code string yes Tracking number need to reshipping
    note string yes Reason for reshipping

    Request Response

    Parameter Data Type Required Description

    Get Order Fail Delivery

    import requests
    url     = "https://s.boxme.asia/api/v1/orders/rma/list/"
    payload = {
        'page': 1
      'page_size': 50,
      'create_from': 1560099600
      'create_to': 1562778000
    response = requests.request("GET", url, data=payload, headers=headers)
    
    
    curl "https://s.boxme.asia/api/v1/orders/rma/list/"
      -H "Authorization: api key"
    
    
    

    The above command returns JSON structured like this:

    {
    
        "data": {
            "count": 2,
            "next": "",
            "previous": "",
            "results": [
                {
                    "rma_id": 264862,
                    "country": "VN",
                    "rma_number": "RMA676970803",
                    "tracking_number": "BM82203301707",
                    "task_id": 0,
                    "rma_type": 1,
                    "seller_info": {
                        "seller_id": 236216,
                        "email": "chien54xd6@gmail.com",
                        "user_name": "Vũ Ngọc Hải",
                        "address": "",
                        "phone": "0984689451"
                    },
                    "order_info": {
                    },
                    "status": 100,
                    "status_name": "Chờ xử lý",
                    "status_name_en": "Opening",
                    "status_icon": "icon-clock",
                    "status_color": "badge badge-primary",
                    "return": {
                    },
                    "receiver_info": {
                    },
                    "quantity": 1,
                    "actual_quantity": 1,
                    "created_time": 1562726943,
                    "updated_time": 1562726943,
                    "lead_time": 1562899743,
                    "returned_time": 1562899743,
                    "successed_time": 0,
                    "rma_note": "kh hủy",
                    "rma_note_customer": "",
                    "accepted_time": 0
                }
            ]
        },
        "error": false,
        "error_code": "",
        "messages": "",
        "total": 2
    }
    
    

    HTTP Request

    GET https://oms.boxme.asia/api/v1/orders/rma/list/

    Request Body

    Parameter Data Type Required Description
    key string no Tracking number that you and to search
    create_from int no Filter list delivery failed by created time
    create_to int no Filter list delivery failed by created time
    page string yes Number of page
    page_size string yes Total item show in one page

    Request Response

    Parameter Data Type Description
    rma_number string Number of RMA
    tracking_number string Boxme tracking number
    rma_note string Reason of fail delivery
    order_info.courier_name string Courier's name
    order_info.courier_tracking_code string Courier's tracking number
    order_info.weight int Total order weight
    order_info.over_weight int Over weight
    order.info.amount float Total order amount
    order.info.money_collect float Total CoD amount
    order.info.status int Order status
    order.info.status_name_en string Order status name in english
    order.info.status_name string Order status name in local

    Webhook

    Receive a webhook

    A sample JSON of a hook Boxme sends:

        {
        "TrackingCode": "BM8953566102",
        "CourierTrackingCode": "BM8953566102",
        "Fee": [{
            "FeeCode": "cod_fee",
            "FeeValue": 10010,
            "Currency": "VND"
        }, {
            "FeeCode": "handling_fee",
            "FeeValue": 3300,
            "Currency": "VND"
        }, {
            "FeeCode": "overweight_fee",
            "FeeValue": -42592,
            "Currency": "VND"
        }, {
            "FeeCode": "shipping_fee",
            "FeeValue": 55297,
            "Currency": "VND"
        }, {
            "FeeCode": "special_fee",
            "FeeValue": 550,
            "Currency": "VND"
        }],
        "OrderCode": "p_39623607",
        "Weight": 40,
        "StatusCode": 304,
        "StatusName": "Đang vận chuyển",
        "Location": "TTKT Đà Lạt - Lâm Ðồng",
        "Note": "Đóng bảng kê đi ",
        "TimeStamp": 1539230967
    }
    

    A webhook is a tool for retrieving and storing data from certain events. Boxme sends webhooks when status changes in the lifespan of an Order. This documentation covers the core resources needed to receive webhooks from Boxme.

    Note: Go to Settings page > Intergration > Webhook API to config webhook

    We will issue a HTTP POST request to the URL specified every time an event occurs. The request's POST parameters will contain JSON data relevant to the event that triggered the request

    Please refer sample JSON in right side.

    Parameter Data Type Description
    TrackingNumber string Boxme tracking code.
    CourierTrackingNumber string Courier tracking code (maybe same like Boxme tracking code).
    OrderCode string Your order number.
    Fee list Return correct fee when orders have final status .
    Weight decimal Order weight (gram).
    StatusCode string Order status code, please refer List Order Status.
    StatusName string Order status name, please refer List Order Status.
    Location string Order Location.
    TimeStamp string Status updated time

    Use can go to Webhook test page send a test event.

    Order Status Event

    Status Code Status Name Detail
    200 Verified Order have been approved
    201 Picking
    202 Pickup failed
    203 On the way to drop-off
    210 Processing at warehouse
    211 Ready to ship at warehouse
    212 Out of stock
    220 Awaiting to sourcing
    230 Cross border processing
    231 Received at origin facility
    232 Departed at origin facility
    233 Cross border transit
    235 Customs cleared
    234 Customs onhold
    236 Received at desitination facility
    237 Departed at desitination facility
    300 Shipped
    310 Out for delivery
    400 Out of delivery
    410 Awaiting to return
    420 Return processing
    430 Return approved
    500 Returning
    510 Out of return
    511 Return refused
    520 Awaiting receive at facility
    530 Return to orgin facility
    610 Returned at orgin facility
    600 Returned Return to your warehouse or Boxme warehouse (Final status)
    700 Cancelled by sellers
    701 Cancelled by operator
    702 Cancelled by partner
    703 Cancelled by system
    704 Pending for audit Operator need check and verify next status of order
    800 Delivered Delivery successfull (Final status).
    810 Destroy parcel Destroy parcel and dont need return to pickup address (Final status)

    Webhook testing

    You can use for testing & check authentication

    Wehook test page

    Errors

    Error Code Meaning
    400 Bad Request -- Your request is invalid.
    401 Unauthorized -- Your API key is wrong.
    403 Forbidden -- Your API key is wrong..
    404 Not Found -- API could not be found.
    405 Method Not Allowed -- You tried to access with an invalid method.
    406 Not Acceptable -- You requested a format that isn't json.
    410 Gone -- The api requested has been removed from our servers.
    418 I'm a teapot.
    429 Too Many Requests -- You're requesting too many api ! Slow down!
    500 Internal Server Error -- We had a problem with our server. Try again later.
    503 Service Unavailable -- We're temporarily offline for maintenance. Please try again later.