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
Parameterlimit Typenumber Default50 DescriptionNumber 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)
Parameteroffset Typenumber Default0 DescriptionOffset from the start of the result set, row-exact: offset=1 starts at the second record. 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
Fieldsuccess Typeboolean DescriptionAlways true on success
Fielddata Typearray DescriptionArray of warehouses — fields of a single warehouse below
Fieldmeta.total Typenumber DescriptionTotal number of warehouses in the Bitrix24 account
Fieldmeta.hasMore Typeboolean DescriptionWhether 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
Fieldid Typenumber DescriptionWarehouse identifier
Fieldtitle Typestring DescriptionWarehouse name
Fieldaddress Typestring DescriptionWarehouse address
Fieldactive Typestring DescriptionActive flag: "Y" / "N"
FieldissuingCenter Typestring DescriptionOrder pickup point flag: "Y" / "N"
Fielddescription Typestring | null DescriptionWarehouse description. null if not set
Fieldphone Typestring | null DescriptionContact phone. null if not set
Fieldemail Typestring | null DescriptionContact email. null if not set
Fieldschedule Typestring | null DescriptionWorking hours. null if not set
Fieldsort Typenumber DescriptionSort order
Fieldcode Typestring | null DescriptionSymbolic code. null if not set
FieldxmlId Typestring | null DescriptionExternal identifier. null if not set
FieldgpsN Typenumber | null DescriptionGeographic latitude. null if not set
FieldgpsS Typenumber | null DescriptionGeographic longitude. null if not set
FieldimageId Typeobject | null DescriptionWarehouse image: { "id", "url" } or null
FielduserId Typenumber | null DescriptionResponsible employee. null for system warehouses, populated when created via the API
FieldmodifiedBy Typenumber | null DescriptionIdentifier of the user who last modified the warehouse. null for system warehouses, populated when created via the API
FielddateCreate Typedatetime | null DescriptionCreation date. null for some system warehouses (for example, marketplaces)
FielddateModify Typedatetime DescriptionLast 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 in canonical form — digits only, no leading zero, sign, fraction or exponent"
  }
}

Errors

HTTP Code Description
HTTP400 CodeINVALID_PARAMS Descriptionlimit is not a canonical positive integer (10.5, 10abc, 1e2, 007 are rejected) or offset is negative
HTTP400 CodeUNSUPPORTED_FILTER Descriptiona filter[] parameter was passed — this endpoint does not support it and does not forward it to Bitrix24
HTTP401 CodeTOKEN_MISSING DescriptionThe API key has no configured tokens
HTTP403 CodeSCOPE_DENIED DescriptionThe API key does not have the catalog scope
HTTP502 CodeBITRIX_UNAVAILABLE DescriptionBitrix24 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 is row-exact. Bitrix24 returns warehouses in pages of 50 and only moves the selection by a whole page, so Vibecode fetches the page covering the requested window and trims the extra rows off the head. You see an ordinary row-exact offset: offset=1&limit=3 returns the second, third, and fourth records.

An empty data with hasMore: true means stop paging. This happens when the requested window is not covered by a single Bitrix24 page: meta.warnings then carries OFFSET_BEYOND_FETCHED_PAGE. Raise limit so the window fits into the selection.

See also