For AI agents: markdown of this page — /docs-content-en/entities/warehouses/list.md documentation index — /llms.txt

List warehouses

GET /v1/warehouses

Returns the list of warehouses in the Bitrix24 account. Paginated output is controlled by the limit and offset parameters.

Parameters

Parameter Type Default Description
limit number 50 Number of records (up to 5000). When limit > 50, the response is automatically assembled from several Bitrix24 pages. When limit ≤ 50, extra records are trimmed on the Vibecode side (Bitrix24 returns a page of up to 50 records regardless of the value)
offset number 0 Offset from the start of the result set. Page-granular: the list is returned in pages of 50 records, so offset is floored to a multiple of 50 — offset=25 returns the same page as offset=0, and offset=50 returns the next one. When offset ≥ 2500, keep limit ≤ 500

Examples

curl — personal key

Terminal
curl "https://vibecode.bitrix24.com/v1/warehouses" \
  -H "X-Api-Key: YOUR_API_KEY"

curl — OAuth application

Terminal
curl "https://vibecode.bitrix24.com/v1/warehouses" \
  -H "X-Api-Key: YOUR_APP_KEY" \
  -H "Authorization: Bearer USER_SESSION_TOKEN"

JavaScript — personal key

javascript
const res = await fetch('https://vibecode.bitrix24.com/v1/warehouses', {
  headers: {
    'X-Api-Key': 'YOUR_API_KEY',
  },
})

const { success, data, meta } = await res.json()
console.log(`Warehouses: ${meta.total}`)

JavaScript — OAuth application

javascript
const res = await fetch('https://vibecode.bitrix24.com/v1/warehouses', {
  headers: {
    'X-Api-Key': 'YOUR_APP_KEY',
    'Authorization': 'Bearer USER_SESSION_TOKEN',
  },
})

const { success, data, meta } = await res.json()

Response fields

Field Type Description
success boolean Always true on success
data array Array of warehouses — fields of a single warehouse below
meta.total number Total number of warehouses in the Bitrix24 account
meta.hasMore boolean Whether there are records beyond the current page (offset + data.length < total). When true, raise limit (up to 5000) or move offset

Warehouse fields

Field Type Description
id number Warehouse identifier
title string Warehouse name
address string Warehouse address
active string Active flag: "Y" / "N"
issuingCenter string Order pickup point flag: "Y" / "N"
description string | null Warehouse description. null if not set
phone string | null Contact phone. null if not set
email string | null Contact email. null if not set
schedule string | null Working hours. null if not set
sort number Sort order
code string | null Symbolic code. null if not set
xmlId string | null External identifier. null if not set
gpsN number | null Geographic latitude. null if not set
gpsS number | null Geographic longitude. null if not set
imageId object | null Warehouse image: { "id", "url" } or null
userId number | null Responsible employee. null for system warehouses, populated when created via the API
modifiedBy number | null Identifier of the user who last modified the warehouse. null for system warehouses, populated when created via the API
dateCreate datetime | null Creation date. null for some system warehouses (for example, marketplaces)
dateModify datetime Last modification date

Response example

JSON
{
  "success": true,
  "data": [
    {
      "id": 1,
      "title": "Main warehouse",
      "address": "1 Harbour Street, Amsterdam",
      "active": "Y",
      "issuingCenter": "N",
      "description": null,
      "phone": null,
      "email": null,
      "schedule": null,
      "sort": 100,
      "code": null,
      "xmlId": null,
      "gpsN": null,
      "gpsS": null,
      "imageId": null,
      "userId": 1,
      "modifiedBy": 1,
      "dateCreate": "2024-01-15T09:00:00+00:00",
      "dateModify": "2024-06-20T14:30:00+00:00"
    },
    {
      "id": 2,
      "title": "North pickup point",
      "address": "8 Station Road, Rotterdam",
      "active": "Y",
      "issuingCenter": "Y",
      "description": null,
      "phone": "+12025550123",
      "email": null,
      "schedule": "Mon–Fri 10:00–20:00",
      "sort": 200,
      "code": "pickup-north",
      "xmlId": null,
      "gpsN": 51.924420,
      "gpsS": 4.477733,
      "imageId": null,
      "userId": 1,
      "modifiedBy": 1,
      "dateCreate": "2024-03-10T11:00:00+00:00",
      "dateModify": "2024-03-10T11:00:00+00:00"
    }
  ],
  "meta": {
    "total": 2,
    "hasMore": false
  }
}

Error response example

400 — invalid limit value:

JSON
{
  "success": false,
  "error": {
    "code": "INVALID_PARAMS",
    "message": "limit must be a positive integer"
  }
}

Errors

HTTP Code Description
400 INVALID_PARAMS limit is not a positive integer or offset is negative
401 TOKEN_MISSING The API key has no configured tokens
403 SCOPE_DENIED The API key does not have the catalog scope
502 BITRIX_UNAVAILABLE Bitrix24 is unavailable

The full list of common API errors — Errors.

Known specifics

Paginated output only. The list accepts only limit and offset. Filtering, sorting, and selecting individual fields (filter, sort, select) are not supported on this endpoint — all warehouses in the Bitrix24 account are returned. Pick the warehouse you need on the client side using a field from the response.

Fetch all warehouses in one request. In a Bitrix24 account with more than 50 warehouses, set limit above the actual number (for example ?limit=5000) — the response is assembled from several Bitrix24 pages and returns everything at once. An incomplete response is indicated by meta.hasMore: true (the default limit=50 response returns it too when there are more than 50 warehouses). You no longer need to compare data.length against meta.total by hand.

offset granularity is 50. The list is returned in pages of 50 records, so offset moves by a whole page (floored to a multiple of 50), not row by row. For a row-level slice, use an offset that is a multiple of 50 and pick the rows you need on the client side.

See also