For AI agents: markdown of this page — /docs-content-en/apps/placements/available.md documentation index — /llms.txt
Available placements
GET /v1/placements/available
Returns a reference list of placement codes, grouped by Bitrix24 interface section. This is where you take the code of the placement you need before binding.
Call preconditions — what is required before binding.
Examples
curl — personal key
curl https://vibecode.bitrix24.com/v1/placements/available \
-H "X-Api-Key: YOUR_API_KEY"
curl — OAuth application
curl https://vibecode.bitrix24.com/v1/placements/available \
-H "X-Api-Key: YOUR_APP_KEY" \
-H "Authorization: Bearer USER_SESSION_TOKEN"
JavaScript — personal key
const res = await fetch('https://vibecode.bitrix24.com/v1/placements/available', {
headers: { 'X-Api-Key': 'YOUR_API_KEY' },
})
const { data } = await res.json()
console.log('Groups:', Object.keys(data.groups))
console.log('CRM card tabs:', data.groups['CRM Detail Tabs'].map(p => p.code))
JavaScript — OAuth application
const res = await fetch('https://vibecode.bitrix24.com/v1/placements/available', {
headers: {
'X-Api-Key': 'YOUR_APP_KEY',
'Authorization': 'Bearer USER_SESSION_TOKEN',
},
})
const { data } = await res.json()
console.log('Total codes accepted on binding:', data.total)
Response fields
| Field | Type | Description |
|---|---|---|
success |
boolean | Always true on success |
data.groups |
object | Placement groups. The key is the group name, the value is an array of the codes in that group |
data.groups[group][].code |
string | Placement code. This value is passed in placement on binding |
data.groups[group][].title |
string | Human-readable name of the code |
data.groups[group][].description |
string | Description of the interface point where the application opens |
data.groups[group][].module |
string | Bitrix24 module the code belongs to: crm, tasks, user, im, contact_center, main |
data.total |
number | Number of codes accepted on binding |
Response example
3 of the 12 groups are shown, the rest are arranged the same way.
{
"success": true,
"data": {
"groups": {
"Menu": [
{
"code": "LEFT_MENU",
"title": "Left Menu",
"description": "Item in the portal left menu (the \"tab in menu\" placement most callers want)",
"module": "main"
}
],
"Chat": [
{
"code": "IM_SIDEBAR",
"title": "Im Sidebar",
"description": "Chat sidebar panel embed (requires options.iconName)",
"module": "im"
},
{
"code": "IM_NAVIGATION",
"title": "Im Navigation",
"description": "Chat navigation tab embed (requires options.iconName)",
"module": "im"
},
{
"code": "IM_TEXTAREA",
"title": "Im Textarea",
"description": "Chat message-input button embed (requires options.iconName)",
"module": "im"
},
{
"code": "IM_CONTEXT_MENU",
"title": "Im Context Menu",
"description": "Chat message context-menu item embed (options: context, role, extranet)",
"module": "im"
}
],
"Contact Center": [
{
"code": "CONTACT_CENTER",
"title": "Contact Center",
"description": "Tile in the Contact Center section (requires scope contact_center)",
"module": "contact_center"
}
]
},
"total": 55
}
}
Error response example
401 — the X-Api-Key header was not passed:
{
"success": false,
"error": {
"code": "MISSING_API_KEY",
"message": "API key required. Pass via X-Api-Key header."
}
}
Errors
| HTTP | Code | Description |
|---|---|---|
| 401 | MISSING_API_KEY |
The X-Api-Key header was not passed |
| 401 | INVALID_API_KEY |
Invalid key |
Full list of common API errors — Errors.
Known specifics
totalis greater than the sum of the group lengths. In the verified responsetotalequals 55, while all groups together hold 44 codes. These are different sets:totalcounts a broader list of codes allowed for binding than the groups show.- Smart process codes are not included in the reference list. In addition to the listed codes, binding accepts codes of the form
CRM_DYNAMIC_<entityTypeId>_DETAIL_TABandCRM_SMART_<entityTypeId>_DETAIL_TABwith the suffixesDETAIL_TAB,DETAIL_ACTIVITY,DETAIL_TOOLBAR,LIST_MENU,LIST_TOOLBAR,ACTIVITY_TIMELINE_MENU. The numeric part depends on the account, so such codes cannot be listed in advance. - A code from the reference list does not yet mean the placement will open on the account. The account gives the application only the placements the application has rights to — see what is required before binding.