Access to the API is provided over HTTPS. The endpoint is — https://api.apm.group/

All requests must be sent using the POST method.

The API supports two data formats:

The response format matches the request format. JSON is used by default.

The number of invalid-password attempts is limited (the IP address is blocked for 3 hours once the limit is reached).

To use the API, you must have a verified account on https://apm.group and a valid Token.

The Token is valid only for the IP address from which it was generated. It has no expiration date (it is refreshed upon regeneration together with the IP address used). If you need to use multiple accounts from the same IP address, you must notify the site administration.

The parameters token and name are required for using the API (the generation process is described below).

#1 Token generation (needed to work with the API)

POST https://api.apm.group/token

Request parameters#

Request Type of data Description
username* string login on the site
password* string password from the account

Response parameters#

Response Type of data Description
name string login of the user
token string key for working with the API

JSON Request

{
  "username":"user1@mail.com",
  "password":"myrealpassword"
}

JSON Response

{
  "name":"user1",
  "password":"ZtAZABfaQ78-EXT44M_HKvxyefVj8JM7"
}

POST https://api.apm.group/product/search

Request Parameters#

Request Type of data Description
name* string login of the user
token* string access token #
code* string String with the code of the product item.
It is possible to specify several positions through «||» (no more than 10).
Example «37566ere||3674555||mpu-010»
analogs bool Responds to the return of a list of analogs for the searched product item.
Allowed values «true» or «false».
By default «false».

JSON Request

{
  "name": "user1",
  "token": "ZzcM5gWnNLizvVRxFcrTfK7PKlDbCa0W",
  "code": "263202F100",
  "analogs": true
}

Response Parameters#

Response Value Description
analogProducts List of analogs for the detail with the data
mainProduct List of warehouses with the description of the detail
263202F100_code 263202F100 Requested code «263202F100» with the suffix «_code»
available 6 Maximum order quantity
make Timken Manufacturer
code 367MPU Product code (case-sensitive)
price 13.59 Price of the product in the warehouse currency
name Bearing Name of the product
weight 0.05 Weight
min_lot 1 Minimum allowed order quantity
delivery 3/10 Deli very time (days)
priceName EM Warehouse name
currency_id 1 Id of the currency, in which the warehouse price is specified
supplier_id 1 Id of the supplier
id 0 Id of the product
Can take zero value
price_info 13.59 Price in the user's currency
currency_user USD User's currency, in which the value is specified. Set in the user's personal account

JSON Response

{
    "263202F100_code": {
        "mainProducts": [
            {
                "id": "1714422",
                "code": "263202F100",
                "name": " Oil filter MOBIS ",
                "price": 7.05,
                "currency_id": "1",
                "available": "7",
                "min_lot": "1",
                "make": "MOBIS",
                "weight": "0.114",
                "delivery": null,
                "priceName": "USD",
                "supplier_id": "3",
                "price_info": 7.05,
                "currency": "USD"
            },
            {
                "price": 10.08,
                "id": "1",
                "code": "263202F100",
                "name": "mpu020",
                "currency_id": "1",
                "available": "5",
                "min_lot": "1",
                "make": "mpu020 manufacturer",
                "weight": "0.200",
                "delivery": "15",
                "supplier_id": "7",
                "priceName": "DC1072",
                "price_info": 10.08,
                "currency": "USD"
            },
  . . .
            {
                "available": "5",
                "make": "Hyundai / KIA",
                "code": "263202F100",
                "price": 13.18,
                "name": "OIL FILTER",
                "weight": "0.128",
                "min_lot": "1",
                "delivery": "16/50",
                "priceName": "US6",
                "currency_id": "1",
                "supplier_id": "1",
                "id": "0",
                "price_info": 13.18,
                "currency": "USD"
            }
        ],
        "analogProducts": [
            {
                "available": "10",
                "make": "ASHIKA",
                "code": "10ECO096",
                "price": 1.93,
                "name": "OIL FILTER",
                "weight": "0",
                "min_lot": "1",
                "delivery": "5/0",
                "priceName": "TRD",
                "currency_id": "1",
                "supplier_id": "8",
                "id": "0",
                "price_info": 1.93,
                "currency": "USD"
            },
  . . .
            {
                "available": "5",
                "make": "Hyundai / KIA",
                "code": "263202F010",
                "price": 5.97,
                "name": "FUEL FILTER",
                "weight": "0.495",
                "min_lot": "1",
                "delivery": "19/45",
                "priceName": "JA2",
                "currency_id": "1",
                "supplier_id": "1",
                "id": "0",
                "price_info": 5.97,
                "currency": "USD"
            }
        ]
    }
}

Warehouse Decoding#

Warehouse code Description
AA1; AB1; AB2; AL1; ALM; AM1; AQ1; AR1; AS1; AW1; AX1; AZ1; BH; DD1; DN1; DU; DWC1; DWC2; DWC3; DWC4; DWC6; DWC7; DWC8; EE1; ER1; FA1; HD1; KW1; MB1; MDS1; MG1; ML1; MU1; NFI; ST1; TMO; TZ1; WD1; ZF1 warehouses in UAE
DWC9; KW1 warehouses in Kuwait
JP1; JP3 warehouses in Japan
DU1; DU2; DU3; DU4; DU5; DU6; DU7; JA1; JA2; JA3; EU; KOR1; KOR2 warehouses with unreliable availability data and suppliers with low ratings

Currency Decoding#

1 – USD

4 – AED

Full example of the response is provided at the end of the description. P.2

#3 Creation of order

POST https://api.apm.group/order/create

Request Parameters#

Parameter Type Description
delivery Includes customer details, delivery time, and delivery type. If omitted, these fields are filled with the user data provided during registration.
order* Contains all order line items
fio Full Name
city
address
phone
reference
notes
delivery_type* Allowed values:
  1. 1 - self-pickup
  2. 2 - delivery
delivery_status Delivery type
Allowed values:
  1. 1 - by plane
  2. 2 - by container (default)
  3. 3 - delivery within the UAE (UAE only)
id* 123456 product 'id'. Can be empty (taken from the search response)
code* TM5 Product code
price* 17.33 Unit price in currency of the warehouse. (Alternatively, you may provide 'price_info', which is the price in the customer’s account currency.)
make* Toyota Manufacturer
priceName* TP1 Warehouse name
supplier_id* 1 Can be empty (taken from the search response)
quantity 1 Quantity of products
by default, the value is set to 1
api_reference Text information allowing the customer to identify the order line item. Maximum value 128 characters
CoeffMaxAgree Maximum allowed markup coefficient of the customer’s sale price over the price shown on the website.
By default - 1.015%

Response Parameters#

Response Description
item_id order-item id in our system. Returns 0 in case of an error
order_id order id in our system. Returns 0 in case of an error
code product code
quantity number of product units in the order item
price price of the product in the warehouse currency
price_info product price in the user’s currency (the currency is taken from the user’s account settings)
supplier_id value specified during order creation
currency user’s currency for the 'price_info' value (the currency is taken from the user’s account settings)
supplier_id value specified during order creation
delivery_status delivery type. See decoding above
api_reference text information allowing the customer to identify the order line item
status status of the order item. Can take the following values:
  1. ok - order item created without errors
  2. in - exceeding the maximum markup coefficient of the customer’s sale price over the price shown on the website
  3. nf - product not found
  4. os - product temporarily out of stock
  5. ml - the quantity of the ordered product is less than the minimum allowed for the order
  6. qc - the quantity of products in the order item has been changed
  7. info - text description of the order item status or changes made to it, errors

JSON Request

{
    "name": "test_name",
    "token": "ZzcM5gWnNLizvVRxFcrTfK7PKlDbCa0W",
    "order": [
        {
            "id": "1714422",
            "code": "263202F100",
            "name": "Oil filter MOBIS",
            "price": 7.00,
            "currency_id": "3",
            "make": "MOBIS",
            "delivery": 2,
            "priceName": "USD",
            "supplier_id": "3",
            "quantity": 2,
            "CoeffMaxAgree": 0.01
        },
        {
            "id": "1714428",
            "code": "252822G000",
            "name": "Pulley",
            "price_info": 407.99,
            "currency_id": "3",
            "make": "MOBIS",
            "delivery": 1,
            "priceName": "USD",
            "supplier_id": "3",
            "quantity": 1,
            "api_reference": "1000925328"
        },
        {
            "id": "1",
            "code": "263202F100",
            "name": "Pulley",
            "price_info": 276.1,
            "currency_id": "1",
            "make": "MOBIS",
            "delivery": 1,
            "priceName": "DC1072",
            "supplier_id": "7",
            "quantity": 1,
            "api_reference": "contractor"
        },
        {
            "id": "0",
            "code": "263202F100",
            "name": "Pulley",
            "price": 5.91,
            "currency_id": "1",
            "make": "HYUNDAI/KIA",
            "delivery": 1,
            "priceName": "TRD",
            "supplier_id": "8",
            "quantity": 1,
            "api_reference": "TRD"
        },
        {
            "id": "0",
            "code": "263202F100",
            "name": "Pulley",
            "price": 5.999,
            "currency_id": "1",
            "make": "Hyundai / KIA",
            "delivery": 2,
            "priceName": "JA2",
            "supplier_id": "1",
            "quantity": 1,
            "api_reference": "api_ref"
        },
        {
            "id": "0",
            "code": "wrong_code",
            "name": "Pulley",
            "price": 5.91,
            "currency_id": "1",
            "make": "HYUNDAI/KIA",
            "delivery": 1,
            "priceName": "TRD",
            "supplier_id": "8",
            "quantity": 1,
            "api_reference": "TRD"
        }
    ],
    "delivery": {
        "fio": "test",
        "city": "test",
        "address": "Tank st.",
        "phone": "+38099665544",
        "reference": "4ty",
        "notes": "for tests",
        "delivery_type": 1,
        "delivery_city": "delivery_city",
        "delivery_street": "delivery_street",
        "delivery_house": "13",
        "delivery_apartment": "9"
    }
}

The info field in the response may contain details related to order creation, such as insufficient stock (item unavailable) or adjusted item quantity (if the requested quantity exceeds available stock, the system automatically adjusts it and describes the change in this field).

When creating an order, not all order items are guaranteed to be placed into a single order in our system. Order items are grouped by delivery type and by warehouse, and therefore may be assigned to different orders with different order numbers in our system.

#4 Viewing Your Orders

POST https://api.apm.group/order/search

Request Parameters#

Request Description
order_id order number
Optional field (if omitted, the last 20 orders will be displayed)
updated_at Unix timestamp indicating the moment from which orders updated after that time should be returned (used for automatic delivery-status updates, etc.)
.This field is optional.

JSON Request

{
  "name": "test_name",
  "token": "ZzcM5gWnNLizvVRxFcrTfK7PKlDbCa0W",
  "order_id": 7893
}

JSON Response

[
    {
        "id": 7893,
        "user_id": 733,
        "created_at": 1545658177,
        "updated_at": 1545658178,
        "fio": "test",
        "city": "test",
        "address": "test",
        "phone": "+380933898555",
        "notes": "From API. for tests",
        "admin_notes": null,
        "payment_type": 2,
        "delivery_type": 1,
        "delivery_city": "delivery_city",
        "delivery_street": "test",
        "delivery_house": "+380933898555",
        "delivery_apartment": null,
        "status": "WAIT_PAY",
        "currency_id": 1,
        "first_payment_percent": null
    }
]

#5 Viewing order items with the ability to search by client-assigned identifiers (recommended method for retrieving the status of an order item)

POST https://api.apm.group/order/searchitems

IMPORTANT!

Order items may be split depending on stock availability, price changes, and similar factors. For example: an order item was created with a quantity of 6 units of part MPU020. The product may be shipped in parts — first 4 units, then 2 units (or the remaining 2 units may be unavailable, and only 4 units are in stock). In such a case, the order item can be split into two items. The quantities in the original and the new item will be adjusted accordingly to 4 units and 2 units. These two items will belong to the same order (order_id) and will have the same api_reference value, as well as the same manufacturer, warehouse, part number (MPU020), etc.

Request Parameters#

Request Description
order_id order number
Optional (by default, the last 20 ordered product positions will be displayed)
api_reference text information allowing the customer to identify the order item. For tracking order items.
This field is optional.
To search for multiple order items with different api_reference values in a single request, list them in a string, separated by `||`.

Response Parameters#

Response Description
supplier_detail_id auxiliary parameter allowing to track which order item was split (an order item may be split multiple times, for example, an order item was split into 3 items, each with values !000151259553/2, !000151259553/3, !000151259553/4).
status The `status` value in the response - the current status of the order item.
Can take the following values:
  1. EMPTY - order not in progress
  2. NEW - new
  3. BOUGHT - purchased
  4. IN_WORK - in work
  5. IN_STOCK - in stock
  6. NOT_AVAILABLE - not available
  7. READY_TO_SEND - ready to send
  8. WAIT_PAY - waiting for payment
  9. GIVEN - given
  10. PRICE_INCREASE - price increase
  11. DUBAI - in stock in the UAE warehouse
  12. USER_REFUSE - customer refusal
order_id order number in our system
id order item number in our system
quantity actual quantity in the order item (original_quantity – takes the value of the originally specified quantity in case of a value change)
price price in the warehouse currency
currency_price price in the user's currency (specified in the account settings https://apm.group/profile/settings)
delivery_status delivery type. See above

JSON Request

{
    "name": "test_name",
    "token": "ZzcM5gWnNLizvVRxFcrTfK7PKlDbCa0W",
    "api_reference": "123#321||123#322"
}

JSON Response

[
    {
        "id": 22088,
        "order_id": 7910,
        "price": "5.9100",
        "quantity": 1,
        "status": "EMPTY",
        "currency_price": "5.9100",
        "delivery_status": 1,
        "original_quantity": null,
        "status_date": 1545666564,
        "api_reference": "123#322",
        "supplier_detail_id": null
    },
    {
        "id": 22087,
        "order_id": 7909,
        "price": "10.0800",
        "quantity": 1,
        "status": "EMPTY",
        "currency_price": "10.0800",
        "delivery_status": 1,
        "original_quantity": null,
        "status_date": 1545666563,
        "api_reference": "123#321",
        "supplier_detail_id": null
    }
]

#6 Viewing order items

POST https://api.apm.group/order/searchorderitems

Request Parameters#

Request Description
order_id order number
Optional field (if omitted, all items will be displayed sorted by time with a selection by the specified time)
status_date Time in Unix format.
Optional field.
To select items that have been changed, starting from this time.

The `status` value is the current status of the order item. Possible values with descriptions are presented in section 5.

JSON Request

{
    "name": "test_name",
    "token": "ZzcM5gWnNLizvVRxFcrTfK7PKlDbCa0W",
    "order_id": 7908
}

JSON Response

[
    {
        "id": 22086,
        "order_id": 7908,
        "price": "5.9700",
        "quantity": 1,
        "status": "EMPTY",
        "currency_price": "5.9700",
        "delivery_status": 1,
        "original_quantity": null,
        "status_date": 1545666561,
        "api_reference": "api_ref"
    }
]

Examples of requests and responses#

#7 Response to a multi-item product search request including analogs

JSON Request

{
    "name":"test_name",
    "token":"ZzcM5gWnNLizvVRxFcrTfK7PKlDbCa0W",
    "code":"263202F100||mpu020",
    "analogs":true
}

JSON Response

{
    "263202F100_code": {
        "mainProducts": [
            {
                "id": "1714422",
                "code": "263202F100",
                "name": "Oil filter MOBIS",
                "price": 7.05,
                "currency_id": "1",
                "available": "3",
                "min_lot": "1",
                "make": "MOBIS",
                "weight": "0.114",
                "delivery": null,
                "priceName": "USD",
                "supplier_id": "3",
                "price_info": 7.05,
                "currency": "USD"
            },
            {
                "price": 10.08,
                "id": "1",
                "code": "263202F100",
                "name": "mpu020",
                "currency_id": "1",
                "available": "5",
                "min_lot": "1",
                "make": "mpu020manufacturer",
                "weight": "0.200",
                "delivery": "15",
                "supplier_id": "7",
                "priceName": "DC1072",
                "price_info": 10.08,
                "currency": "USD"
            },
            {
                "available": "15",
                "make": "HYUNDAI/KIA",
                "code": "263202F100",
                "price": 5.91,
                "name": "Oil filter",
                "weight": "0.14",
                "min_lot": "1",
                "delivery": "2/0",
                "priceName": "TRD",
                "currency_id": "1",
                "supplier_id": "8",
                "id": "0",
                "price_info": 5.91,
                "currency": "USD"
            },
            {
                "available": "5",
                "make": "Hyundai / KIA",
                "code": "263202F100",
                "price": 5.97,
                "name": "Oil filter",
                "weight": "0.128",
                "min_lot": "1",
                "delivery": "17/45",
                "priceName": "JA2",
                "currency_id": "1",
                "supplier_id": "1",
                "id": "0",
                "price_info": 5.97,
                "currency": "USD"
            },
        ]
    }
}

#8 Example of generating `token` (JSON) on PHP

$data='{"username":"test@ok.com","password":"000000000"}';
$ch = curl_init('https://api.apm.group/token');
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS,$data);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
var_dump(curl_exec($ch));
curl_close($ch);

#9 Example of generating `token` (XML)


$data='<root>
<password>000000000</password>
<username>test@ok.com</username>
</root>'
$ch = curl_init('https://api.apm.group/token');
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS,$data);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/xml'));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
var_dump(curl_exec($ch));
curl_close($ch);

#10 Example of searching for parts by code


$data='{"name":"test@ok.com.ua","token":"GuqnhVObR16LvDiZb_lsoyrBGKPtaEGv","code":"252822G000","analogs":true}';
$ch = curl_init('https://api.apm.group/product/search');
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS,$data);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
var_dump(curl_exec($ch));
curl_close($ch);
curl_close($ch);

#11 Delivery

POST https://api.apm.group/tracking/items

Request Parameters#

Parameter Type Description
name* string Email for authorization
token* string Token for authorization
limit integer Number of items per page. Default value is 100. Maximum value is 100.
page integer Page number. Default value is 1.
The remaining fields are for filtering
code string Filter by product code
reference string Filter by order item reference
order_id integer Filter by order ID
status string Filter by order item status
stock string Filter by warehouse code

JSON Request

{
    "name": "<EMAIL>",
    "token": "<TOKEN>",
    "limit": 10,
    "page": 1,
    "code": "K1245",
    "reference": "ref_2_0",
    "order_id": 144601,
    "status": "BOUGHT",
    "stock": "WD1"
}

JSON Response

{
    "items": [
        {
            "item_id": 1147738,
            "order_id": 144601,
            "order_status": "NOT_AVAILABLE",
            "order_reference": null,
            "brand": "FILTRON",
            "code": "K1245",
            "reference": "ref_2_0 pos 2",
            "name": "",
            "weight": 0.111,
            "delivery": "40/60",
            "warehouse": "EX1",
            "price_usd": 5.56,
            "price_info": 5.56,
            "currency": "USD",
            "quantity": 2,
            "add_packing": false,
            "status": "FACT_NOT_AVAILABLE",
            "order_date": "2023-10-12 10:10:09",
            "updated": "2023-10-12 10:10:10",
            "delivery_status": "1"
        },
        {
            "item_id": 1147737,
            "order_id": 144601,
            "order_status": "NOT_AVAILABLE",
            "order_reference": null,
            "brand": "FILTRON",
            "code": "K1245",
            "reference": "ref_2_0 pos 1",
            "name": "",
            "weight": 0.111,
            "delivery": "40/60",
            "warehouse": "EX1",
            "price_usd": 5.56,
            "price_info": 5.56,
            "currency": "USD",
            "quantity": 2,
            "add_packing": false,
            "status": "FACT_NOT_AVAILABLE",
            "order_date": "2023-10-12 10:10:09",
            "updated": "2023-10-12 10:10:10",
            "delivery_status": "1"
        }
    ],
    "total_count": 188,
    "page_count": 94,
    "current_page": 1,
    "per_page": 2
}

Note: The response example data is taken from a test user, so all statuses are in rejection.

Response Parameters#

Parameter Type Description
items array Array of order items
total_count integer Total number of items matching the filter
page_count integer Total number of pages
current_page integer Current page number
per_page integer Number of items per page
Version from 22.11.2025