> ## Knowledge Base Index
> Fetch the complete knowledge base index at: https://help.pricer24.com/sitemap.xml
> Use this file to discover available pages before exploring further.
> Pure-Markdown content can be obtained by appending a '.md' suffix to the content URLs listed in the sitemap (without the trailing slash).

# General information on working with the API

Pricer24 has an API that can be used to integrate with your accounting systems. Please note that the API is not available with all pricing plans.

# General Information

* The endpoint for working with the API is https://api.pricer24.com/
* The API uses a REST architecture.
* All API requests and responses use the JSON format.
* You need an API key to work with the API.
* Descriptions of existing methods and their parameters can be found in [Swagger](https://api.pricer24.com/swagger/index.html): you can send ready-made requests and view the server’s response.

### Limitations

* No more than 10 requests per second
* Request execution timeout is 60 seconds
* If three errors are received within 60 seconds, the key will be blocked for 30 seconds.

# Authorization

To authorize, you need to add the query parameter **ApiKey** with the value of your key to the request. In general, your request will look like this:
`https://api.pricer24.com/v1/{назва_ресурсу}?ApiKey={key}&Param1={value1}&Param2={value2}`

### Obtaining an API Key

||| To work with the API, we recommend creating a separate user exclusively for data exchange.

1. In the system, go to Settings → Company → Users.
2. Select **Create** on the top panel and create a new user.
3. Open the created user.
4. In the **Roles** tab, add the necessary rights to the user.
5. In the **API Keys** tab, choose **Create**.

The created key is automatically copied to the clipboard. You can now use it to access API.

# Pagination

Most GET methods in the API support pagination. To work with pagination, you need to use the query parameters:
* **MaxResultCount** – how many records need to be returned
* **SkipCount** – how many records need to be skipped

### Features

* The maximum possible value for **MaxResultCount** is 1000. If you pass a larger value, you will get an error.
*  By default, **MaxResultCount** is 10; if the parameter is not passed, the server will return only 10 records.
*  By default, **SkipCount** is 0.
* The total number of records is contained in the **totalCount** property of the **result** object:
![](https://storage.crisp.chat/users/helpdesk/website/c264ea040288d800/image_1hcra7l.png)

In general, your request will look like this: **GET** `https://api.pricer24.com/v1/{method}?SkipCount={PageSize}*{PageNumber-1}&MaxResultCount={PageSize}&ApiKey={key}`, where:
* **PageSize** – page size (the number of items returned on one page)
* **PageNumber** – page number

The number of pages can be calculated using the simple formula *Ceil(TotalCount / PageSize)*, where Ceil means rounding up to the nearest whole number.

### Example

If the total number of records is 2700 and we receive 1000 records per response, to get all records, we need to send 3 requests:

`https://api.pricer24.com/v1/{имя_ресурса}?SkipCount=0&MaxResultCount=1000&ApiKey={key}` – get the first 1000 records.
`https://api.pricer24.com/v1/{имя_ресурса}?SkipCount=1000&MaxResultCount=1000&ApiKey={key}` – get the next 1000 records.
`https://api.pricer24.com/v1/{имя_ресурса}?SkipCount=2000&MaxResultCount=1000&ApiKey={key}` – get the last 700 records.

# Query Parameter Include

To minimize the response size, the default response returns minimal information about objects. To get detailed information, you need to pass the query parameter **Include**, where you list the objects for which you need detailed information, separated by commas.

### Example

When sending the request **GET** `https://api.pricer24.com/v1/contractors?ApiKey={key}` without Include, the server will return the following response:
![](https://storage.crisp.chat/users/helpdesk/website/c264ea040288d800/image_17tqz1k.png)

The **contractorPriceTypes** and **contractorWarehouses** arrays have null values, as they are not returned by the server.

However, if you send the request **GET** `https://api.pricer24.com/v1/contractors?ApiKey={key}&Include=PriceTypes,Warehouses`, the response will already contain the contractor’s prices and warehouses:
![](https://storage.crisp.chat/users/helpdesk/website/c264ea040288d800/image_1ow0028.png)

# Error Handling

The server returns standard response codes:

* **200** – request successfully executed
* **401** – authorization error
* **403** – insufficient permissions
* **404** – method not found
* **501** – internal server error (most likely, the request is incorrectly formatted)

In case of an error, information about it will be returned in the **error** object:
![](https://storage.crisp.chat/users/helpdesk/website/c264ea040288d800/image_1t3a92s.png)
Also, to determine whether the request was successful, you can check the **success** property, where **true** means the request was successfully executed and  **false ** means an error occurred during execution.