About API
SolEx B2B platform API has been designed for developers who want to automate data flow between systems and optimize sales processes. Its functionalities make it possible to:
- Automatically place orders – directly from external systems such as online stores, ERP systems, or custom applications. The end user doesn't need to enter data manually; orders can be sent directly to the B2B platform.
- Use the B2B platform as a product database – enabling real-time access to up-to-date information on availability, pricing, descriptions, and product images. This significantly simplifies product offer management across other sales channels, such as online stores.
- Create custom integrations – the API offers flexibility that allows the development of tailor-made solutions suited to specific business needs. For example, the B2B platform can be integrated with CRM systems, marketing automation tools, or internal analytics solutions.
As a result, full integration of the sales environment becomes possible - without the need to manually transfer data - while ensuring information consistency across the entire ecosystem.
https://[your-platform-address]
Authentication POST
This endpoint is used to authenticate a client and retrieve a temporary token for further API access. Authentication is based on a combination of the client's API key, current timestamp, and client identifier hashed using the MD5 algorithm.
Since the hash is generated based on the current timestamp, it must be regenerated when refreshing the token.
Usage Notes- First you have to generate MD5 hash.
- Ensure the API key is converted to uppercase before generating the hash.
- The timestamp must match exactly the format YYYY-MM-DD HH:MM:SS and reflect the current UTC time.
- The token returned should be included in the Authorization header for all subsequent requests as
"Authorization": "Bearer " + tokenso API can identify you.
https://[your-platform-address]/static/ApiExamples/GettingToken.html
Response parameters:
| Parameter | Value | Description | Data Type |
|---|---|---|---|
| AccessToken | string |
Token to use in further API methods | string |
| TokenType | string |
Token type | string |
| ExpiresIn | integer |
Token expiration time in seconds | int |
// Generate necessary data for example in JavaScript: const apiKey = "AAAAAAAA-AAAA-AAAA-AAAA-AAAAAAAAAAAA"; // User's API key const timestamp = new Date().toISOString().slice(0, 19).replace('T', ' '); // Date Format: YYYY-MM-DD HH:MM:SS const clientId = 10; // Example client number associated with API Key const rawString = `${upperApiKey}${timestamp}${clientId}`; // Merge necessary data into one string const hash = CryptoJS.MD5(rawString).toString(); // Generate MD5 hash const requestData = { Hash: hash, ClientId: clientId, Timestamp: timestamp }; console.log(requestData); // We can now use generated data to prepare a cURL requestcurl -X POST "https://[your-platform-address]/api3/token" ^ -H "Content-Type: application/json" ^ -d "@body.json"
{
"Hash": "8fcf8e0609e5107142dd4df279ce04a2",
"ClientId": "10",
"Timestamp": "2025-08-05 08:31:05"
}
{
"AccessToken": "12345678-abcd-1234-abcd-1234abcd5678",
"TokenType": "bearer",
"ExpiresIn": 3600
}
PRODUCTS
Searching products GET
This method allows you to search and filter products based on a variety of parameters. You can narrow down the results using keywords, specific field filters, product IDs, SKUs, EANs, categories, and more. The response contains a paginated list of products with configurable fields, pricing, availability, attributes, and media data.
Use this method to retrieve a filtered list of products from the catalog. You can specify which fields to return, apply search conditions, define sorting rules, and limit results by product IDs, SKUs, EANs, or categories.
Request parameters avaiable to use in request:field, optionsId, categoryId, where, preset, orderBy, order, productsId, productsSku, productsEan, modificationTimestamp
You can find detailed information about each of them below.
Request parameters:
Response parameters:
curl -X GET "https://[your-platform-address]/api3/product/findProduct?field=Ean%2CName&optionsId=1&productsId=12%2C13" ^
-H "Authorization: Bearer 12345678-abcd-1234-abcd-1234abcd5678"
{
"Count": 2,
"PageSize": 2147483647,
"PageNumber": 1,
"HasMore": false,
"CollectionType": "Product",
"Items": [
{
"Id": 12,
"Name": "Example product 1",
"Ean": "1234567890123"
},
{
"Id": 13,
"Name": "Example product 2",
"Ean": "3210987654321"
}
]
}
CLIENT ADDRESSES
Get client address GET
You can retrieve a complete list of addresses that are currently assigned to your client account. This functionality allows you to review all stored delivery locations associated with your profile in one place, ensuring that you have full visibility over your saved contact details.
These addresses are not just for reference – they can be seamlessly reused in a variety of subsequent operations within the platform, such as placing a new order or specifying a delivery location without the need to enter the same information repeatedly.
Response parameters:
curl -X GET "https://[your-platform-address]/api3/address/clientAddress" ^
-H "Authorization: Bearer 12345678-abcd-1234-abcd-1234abcd5678"
{
"Items": [
{
"Id": "452000000000",
"Country": "Polska",
"Region": "śląskie",
"Name": "John Smith",
"Street": "Maple Street",
"City": "New York",
"PostalCode": "10-001",
"Phone": "600123321",
"CountryId": 1,
"RegionId": 1,
"Email": "john.smith@example.com",
"ApartmentNumber": "12B",
"HouseNumber": "120",
"TaxNumber": null,
"OneTimeAdress": false
}
]
}
Add new address POST
This method is used to add a new address to the customer's account. This is a shipping addresses required in the ordering process. The response typically returns a unique identifier of the newly created address for future reference.
Structure of object:
| Field | Type | Required/Validated | Description |
|---|---|---|---|
| Name | string |
Yes (regex validation) | Full name of the recipient. |
| Street | string |
Yes (regex validation) | Street name. |
| City | string |
Yes (regex validation) | City name. |
| PostalCode | string |
No (regex validation) | Postal code (e.g., "10-001"). |
| Phone | string |
No (regex validation) | Contact phone number. |
| CountryId | integer |
Yes | Country identifier. |
| RegionId | integer |
No | Region/province identifier. |
string |
No (regex validation) | Contact email address. | |
| HouseNumber | string |
No (regex validation) | House number. |
| ApartmentNumber | string |
No (regex validation) | Apartment number. |
| TaxNumber | string |
No (regex validation) | Tax Identification Number (NIP/VAT ID). |
| OneTimeAdress | boolean |
No | Set to true for one-time addresses. Default false.Temporary address deleted after ERP synchronization. |
curl -X POST "https://[your-platform-address]/api3/address/clientAddress" ^
-H "Authorization: Bearer 12345678-abcd-1234-abcd-1234abcd5678" ^
-H "Content-Type: application/json" ^
-d "@body.json"
{
"CountryId": 1,
"Name": "John Smith Home Address",
"Street": "Maple Street",
"City": "New York",
"HouseNumber": "120",
"ApartmentNumber": "1A",
"PostalCode": "10-001",
"RegionId": 12,
"Email": "john.smith@example.com",
"Phone": "600123321",
"TaxNumber": "0000000000",
"OneTimeAddress": true
}
"-1" // Id of new address
WAYBILLS
Add new waybill POST
This endpoint allows you to create a new waybill for a given order ID. You can attach a PDF file which contains a waybill. Once the request is processed successfully, the system returns the identifier of the newly added attachment.
You have to add an attachment containing shipping label in PDF format. The file must be uploaded together with the request in multipart/form-data.
Returns ID of new attachment or message: There is already a waybill for the order witch that ID.
curl -X POST "https://[your-platform-address]/api3/order/waybill/-12345" ^
-H "Authorization: Bearer 12345678-abcd-1234-abcd-1234abcd5678" ^
-F "file=@waybill.pdf"
-123 // Id of new attachment
// OR message if there is already a waybill for the order witch that ID
{
"Message": "Istnieje już list przewozowy dla zamówienia o ID: -12345"
}
Get waybill for order GET
Available response parameters
| Field | Type | Description | Data type |
|---|---|---|---|
| RelativePath | integer |
Relative path to waybill file | int |
| Size | integer |
File size | int |
| Url | string |
Url to waybill | string |
| UploadDate | string |
Receiver name | string |
curl -X GET "https://[your-platform-address]/api3/order/waybill/-12345" ^
-H "Accept: application/json" ^
-H "Authorization: Bearer 12345678-abcd-1234-abcd-1234abcd5678"
{
"RelativePath": "/Zasoby/OrderWaybill/-12345/d92057ea-16f0-4bb9-9f82-fc9339162663.pdf",
"Size": 8175,
"Url": null,
"UploadDate": "2025-09-03T12:48:12.78"
}
ORDERS
Add new order POST
This request is used to place a new order in the system via the API. It requires providing key details such as the selected payment and delivery methods, an optional comment, and a list of products with their identifiers and quantities. The request must also include the delivery address ID that is already stored in the system. Additionally, the request allows passing extra parameters in the AdditionalProperties array, which can be used to extend the order definition with custom attributes (e.g., promo codes or special handling instructions).
"!! TESTING order via SolEx API !!" or similar so order would not be processed by the staff during tests!
Request parameters:
Response parameters:
| Parameter | Type | Description | Data Type |
|---|---|---|---|
| OrderId | int |
Unique identifier of the created order. Negative values may indicate a test or temporary order. | integer |
| BasketStatements[].Message | string |
General message related to the basket (e.g., warnings, validations, additional information). | string |
| BasketStatements[].Type | string |
Type of the basket message. | string |
| BasketProductsStatements[].Message | string |
Message related to specific products in the basket (e.g., stock warnings, availability notes). | string |
| BasketProductsStatements[].Type | string |
Type of the product-related message. | string |
curl -X POST "https://[your-platform-address]/api3/order" ^
-H "Content-Type: application/json" ^
-H "Authorization: Bearer 12345678-abcd-1234-abcd-1234abcd5678" ^
-d "@body.json"
{
"PaymentName": "string",
"DeliveryName": "string",
"Comment": "!! TESTING order via SolEx API !!",
"OrderLines": {
"KeyType": "Ean",
"Lines":
[
{ "Key": "996633", "Quantity": 7 },
{ "Key": "4779039731181", "Quantity": 2 }
]
},
"AddressId": 2400000000,
"AdditionalProperties": []
}
{
"OrderId": -12345,
"BasketStatements": [
{
"Message": " Example warning message for basket",
"Type": "warning"
}
],
"BasketProductsStatements": [
{
"Message": " Example warning message for products",
"Type": "warning"
}
]
}
Get delivery options GET
This method is used to retrieve a complete list of all delivery methods available in the system. It provides general information about each delivery option, such as its identifier and name, without applying any restrictions at this stage. It returns an array of all delivery options availabile.
This method is intended primarily for displaying or storing the full catalog of delivery methods, which can later be cross-checked during order placement to ensure the chosen option is valid for the given transaction.
Response parameters:
| Parameter | Value | Description | Data Type |
|---|---|---|---|
| Id | integer |
Identifier of the delivery option | int |
| Name | string |
Delivery option name | string |
curl -X GET "https://[your-platform-address]/api3/order/delivery" ^
-H "Authorization: Bearer 12345678-abcd-1234-abcd-1234abcd5678"
{
"Items": [
{
"Id": 1,
"Name": "Delivery option 1"
},
{
"Id": 2,
"Name": "Delivery option 2"
}
]
}
Get payment options GET
This method is used to retrieve a list of all available payment methods. These options can be presented to the customer during the checkout process, allowing them to select their preferred method of payment.
The response typically includes details such as the payment identifier and name.
Response parameters:
| Parameter | Value | Description | Data Type |
|---|---|---|---|
| Id | integer |
Identifier of the delivery option | int |
| Name | string |
Payment option name | string |
curl -X GET "https://[your-platform-address]/api3/order/payment" ^
-H "Authorization: Bearer 12345678-abcd-1234-abcd-1234abcd5678"
{
"Items": [
{
"Id": 1,
"Name": "Payment option 1"
},
{
"Id": 2,
"Name": "Payment option 2"
}
]
}
BASKETS
Creating new basket POST
This method is used to create a new shopping basket. It initializes an empty basket that can later be filled with products, assigned to a customer, and processed through the checkout flow. The response typically includes a unique basket identifier, which should be used in subsequent operations related to that basket such as adding products or finalizing a basket.
Request parameters
| Parameter | Value | Description | Required | Data Type |
|---|---|---|---|---|
| BasketName | string |
Name of newly created basket | Yes | string |
| ShowOnFront | boolean |
Indicates if the basket should be displayed on the frontend | No | bool |
| SetActual | boolean |
Indicates if the basket should be choosen as a main basket in frontend | No | bool |
Response:
| Parameter | Value | Description | Data Type |
|---|---|---|---|
| BasketId | integer |
Identifier of new basket | int |
curl -X POST "https://[your-platform-address]/api3/basket" ^
-H "Content-Type: application/json" ^
-H "Authorization: Bearer 12345678-abcd-1234-abcd-1234abcd5678" ^
-d "@body.json"
{
"BasketName": "New basket name",
"ShowOnFront": true,
"SetActual": true
}
{
"BasketId": "54321"
}
Delete basket DELETE
This method is used to remove the current shopping basket. Once executed, all items previously added to the basket will be cleared, and the basket will no longer be available for further operations. This method is typically used when a customer cancels their order or decides to start a new shopping process.
Request parameters
| Parameter | Value | Description | Required | Data Type |
|---|---|---|---|---|
| Id | integer |
Identifier of the basket to remove | Yes | int |
curl -X DELETE "https://[your-platform-address]/api3/basket/12345" ^
-H "Content-Type: application/json" ^
-H "Authorization: Bearer 12345678-abcd-1234-abcd-1234abcd5678"
"Basket '12345' deleted."
Get baskets list GET
This method is used to retrieve a list of all shopping baskets associated with the customer or account. The response typically includes details such as basket identifiers, creation dates, current status, and summary information about the contents. This allows the customer or system to manage multiple baskets, review their state, or continue a previously started shopping process.
Response parameters:
| Parameter | Value | Description | Data Type |
|---|---|---|---|
| BasketId | string |
Unique identifier of the basket | string |
| BasketName | string |
Product SKU (stock keeping unit) | string |
| ShowOnFront | boolean |
Indicates if the basket should be displayed on the frontend | bool |
| IsActual | boolean |
Indicates whether the item is marked as the current (active) one | bool |
curl -X GET "https://[your-platform-address]/api3/basket/list" ^
-H "Content-Type: application/json" ^
-H "Authorization: Bearer 12345678-abcd-1234-abcd-1234abcd5678"
[
{
"BasketId": "12345",
"BasketName": "Example basket",
"ShowOnFront": true,
"IsActual": true
}
]
Get basket GET
Retrieves detailed information about a specific basket, including its items, quantities, and related metadata.
Path parameters:
| Parameter | Value | Description | Required | Data Type |
|---|---|---|---|---|
| id | string |
Id of basket, which data is requested | Yes | string |
Response parameters:
curl -X GET "https://[your-platform-address]/api3/basket/12345" ^
-H "Content-Type: application/json" ^
-H "Authorization: Bearer 12345678-abcd-1234-abcd-1234abcd5678"
{
"BasketId": "12345",
"Items": [
{
"Id": 98765,
"Sku": "ProductSymbol",
"Ean": "1234567890123",
"Quantity": 1.00,
"NetPrice": 4.9410,
"Description": null,
"AddDate": "2025-08-19T12:13:36.167",
"Type": 1
}
],
"Comment": null,
"DeliveryId": null,
"Delivery": null,
"DeliveryCost": null,
"PaymentId": null,
"Payment": null,
"DeliveryAddressId": null,
"DeliveryAddress": null,
"TotalNetValue": {
"Value": 14.823000,
"Currency": "PLN"
},
"TotalNetValueProducts": {
"Value": 14.823000,
"Currency": "PLN"
},
"AdditionalProperties": {
"AdditionalField1": null,
"AdditionalField2": null
},
"ShowOnFront": true
}
Change basket fields PATCH
Updates an existing basket with new data such as payment & delivery methods or customer-related information etc.
Parameters description:
| Parameter | Value | Description | Required | Data Type |
|---|---|---|---|---|
| PaymentId | integer |
Identifier of the new payment method | No | int|null |
| DeliveryId | integer |
Identifier of the new delivery method | No | int|null |
| Comment | string |
Additional comment added to the order | No | string|null |
| AddressId | integer |
Identifier of the delivery address | No | int|null |
| ShowOnFront | boolean |
Indicates if the basket should be displayed on the frontend | No | bool |
| AdditionalProperties | Array |
Custom additional fields defined in the system | No | Array<object> |
| AdditionalProperties[].Key | string |
Name of additional field | Yes (if AdditionalProperties defined) | string |
| AdditionalProperties[].Values[] | Array |
List of values for additional field | Yes (if AdditionalProperties defined) | Array<string> |
curl -X PATCH "https://[your-platform-address]/api3/basket/12345" ^
-H "Content-Type: application/json" ^
-H "Authorization: Bearer 12345678-abcd-1234-abcd-1234abcd5678" ^
-d "@body.json"
{
"PaymentId": 1,
"DeliveryId": 1,
"Comment": "!! TESTING order via SolEx API !!",
"AddressId": 123,
"ShowOnFront": true,
"AdditionalProperties": [
{
"Key": "AdditionalField1",
"Values": [
"ExampleValue"
]
}
]
}
Add products to basket POST
This method is used to add one or more products to an existing shopping basket. The request includes the basket identifier along with product details such as product ID, quantity, and optional attributes (e.g., variants or customizations). The response confirms that the products have been added and usually returns updated basket information, including totals and item details.
Request parameters:
| Parameter | Value | Description | Required | Data Type |
|---|---|---|---|---|
| ProductKey | Object |
Container for product identification details | Yes | <object> |
| ProductKey.KeyType | "Ean" |
Type of product key (e.g., Ean, SKU) |
Yes | string |
| ProductKey.Key | "4779039731181" |
Actual product identifier (e.g., Ean number) | Yes | long |
| Quantity | "1" |
Quantity of the product to be added | Yes | string |
| UnitId | "-3" |
Identifier of the unit in which the product is measured (e.g., -3 for pieces) | Yes | string |
| Config | Object |
Configuration options for validation and error handling. | No | object |
| Config.ErrorOnProductQuantityChange | boolean |
If set to true, an error is returned when the product quantity is adjusted automatically. |
No | bool |
| Config.ErrorOnProductWarning | boolean |
If set to true, an error is returned when the product has warnings (e.g., limited availability). |
No | bool |
curl -X POST "https://[your-platform-address]/api3/basket/51972/item" ^
-H "Content-Type: application/json" ^
-H "Authorization: Bearer 12345678-abcd-1234-abcd-1234abcd5678" ^
-d "@body.json"
{
"ProductKey":
{
"KeyType": "Ean",
"Key": "4779039731181"
},
"Quantity": "1",
"UnitId": "-3",
"Config":
{
"ErrorOnProductQuantityChange": true,
"ErrorOnProductWarning": true
}
}
"Basket item added."
Remove product from the basket DELETE
This method is used to remove a specific product from an existing shopping basket. The request requires the basket identifier and the product identifier that should be removed (e.g. Ean, SKU).
Request parameters:
| Parameter | Value | Description | Required | Data Type |
|---|---|---|---|---|
| Key | "4779039731181" |
Actual product identifier (e.g., Ean number) | Yes | long |
| KeyType | "Ean" |
Type of product key (e.g., Ean, SKU) |
Yes | string |
curl -X DELETE "https://[your-platform-address]/api3/basket/12345/item" ^
-H "Content-Type: application/json" ^
-H "Authorization: Bearer 12345678-abcd-1234-abcd-1234abcd5678"
-d "@body.json"
{
"Key": "4779039731181",
"KeyType": "Ean"
}
"Basket item deleted."
Finalize basket POST
The FinalizeBasket method is used to complete the shopping process for a given basket. Once executed, the basket is confirmed and converted into an order. The request may include additional details such as selected payment method, shipping option, or customer notes. The response typically returns the created order identifier and confirmation data required for further processing.
Response parameters:
| Parameter | Value | Description | Data Type |
|---|---|---|---|
| OrderId | integer |
Identifier of the new order | int |
| OrderNumber | string |
Order number | string |
| ResultMessage | string |
Identifier of the new payment method | string |
curl -X POST "https://[your-platform-address]/api3/basket/12345/finalize" ^
-H "Accept: application/json" ^
-H "Authorization: Bearer 12345678-abcd-1234-abcd-1234abcd5678" ^
-d {}
{
"OrderId": -1583,
"OrderNumber": "1/10/25",
"ResultMessage": "Your order was sent"
}
COUNTRIES AND REGIONS
Get countries GET
This method is used to retrieve a list of available countries supported by the system. The response typically includes country unique identifiers, names and their ISO codes. This information can be used when creating addresses, configuring shipping options, or validating customer data.
Response parameters:
| Parameter | Value | Description | Data Type |
|---|---|---|---|
| Id | integer |
Identifier of the country (to use in addresses) | int |
| Name | string |
Country name | string |
| Symbol | string |
Country code in the ISO 3166-1 alpha-2 format | string |
curl -X GET "https://[your-platform-address]/api3/country" ^
-H "Authorization: Bearer 12345678-abcd-1234-abcd-1234abcd5678"
{
"Items": [
{
"Id": 1,
"Name": "Polska",
"Symbol": "PL"
},
{
"Id": 2,
"Name": "Czechy",
"Symbol": "CZ"
},
{
"Id": 3,
"Name": "Słowacja",
"Symbol": "SK"
}
]
}
Get regions GET
This method is used to retrieve a list of regions (such as states, provinces, or administrative areas) available to choose during creating an address or placing an order. The response typically includes region identifiers, names, and related country identifiers. This method is often used to support address creation.
Response parameters:
| Parameter | Value | Description | Data Type |
|---|---|---|---|
| Id | integer |
Identifier of the region (to use in addresses) | int |
| Name | string |
Country name | string |
| CountryId | integer |
Identifier of the country, see the Get countries method | int |
curl -X GET "https://[your-platform-address]/api3/region" ^
-H "Authorization: Bearer 12345678-abcd-1234-abcd-1234abcd5678"
{
"Items": [
{
"Id": 1,
"Name": "dolnośląskie",
"CountryId": 1
},
{
"Id": 2,
"Name": "kujawsko-pomorskie",
"CountryId": 1
}
]
}
Data Feed
Get data feed file list
Returns a structured list of all currently available integration files that can be downloaded by the client. This endpoint allows external systems to programmatically discover which integration files (by data type, format, and version) are exposed for download. Only the latest version of each file is returned.
The response is a JSON array, where each object represents one available integration file variant (e.g., same file in different encodings or formats).
Response parameters:
| Parameter | Value | Description | Data Type |
|---|---|---|---|
| IntegrationDataType | integer |
Type of integration data (e.g., 0 = Products, 1 = Shops). | int |
| IntegrationDataFormat | integer |
File format or encoding identifier. 0 for XML, 1 for CSV. | int |
| Version | integer |
Version number of the file. Only the highest version per data type is relevant for consumption. | int |
| Url | string |
Absolute download URL for the file. | string |
curl -X GET https://[your-platform-address]/api3/DataFeed/List ^
-H "Authorization: Bearer 12345678-abcd-1234-abcd-1234abcd5678"
[
{
"IntegrationDataType": 0,
"IntegrationDataFormat": 0,
"Version": 3,
"Url": "https://[your-platform-address]/xmlapi/1/3/UTF8/AAAAAAAA-AAAA-AAAA-AAAA-AAAAAAAAAAAA"
},
{
"IntegrationDataType": 0,
"IntegrationDataFormat": 0,
"Version": 3,
"Url": "https://[your-platform-address]/xmlapi/1/3/Windows1250/AAAAAAAA-AAAA-AAAA-AAAA-AAAAAAAAAAAA"
},
{
"IntegrationDataType": 0,
"IntegrationDataFormat": 1,
"Version": 2,
"Url": "https://[your-platform-address]/xmlapi/2/2/UTF8/AAAAAAAA-AAAA-AAAA-AAAA-AAAAAAAAAAAA"
}
]