Para agentes de IA: markdown desta página — /docs-content-en/apps/endpoints.md índice da documentação — /llms.txt
Os artigos da documentação estão disponíveis atualmente em inglês.
App management
Manage the OAuth applications of a Bitrix24 account: create, read, update, delete, and publish to the catalog. Switch methods in the tabs — each has its own parameters, response fields, and error codes.
Base URL: https://vibecode.bitrix24.com/v1 | Authorization: X-Api-Key | Scope for publishing: placement
List applications
GET /v1/apps
Returns the Bitrix24 account applications registered by the current API key, with pagination.
Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
page (query) |
number | No | 1 | Page number, from 1. A value below 1 or non-numeric is replaced with 1 |
limit (query) |
number | No | 50 | Page size. Maximum 200. A value of 0, negative, or non-numeric is replaced with 50 |
Examples
curl — personal key
curl "https://vibecode.bitrix24.com/v1/apps?page=1&limit=50" \
-H "X-Api-Key: YOUR_API_KEY"
curl — OAuth application
curl "https://vibecode.bitrix24.com/v1/apps?page=1&limit=50" \
-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/apps?page=1&limit=50', {
headers: { 'X-Api-Key': 'YOUR_API_KEY' },
})
const { data, total } = await res.json()
console.log(`Applications: ${total}`, data)
JavaScript — OAuth application
const res = await fetch('https://vibecode.bitrix24.com/v1/apps?page=1&limit=50', {
headers: {
'X-Api-Key': 'YOUR_APP_KEY',
'Authorization': 'Bearer USER_SESSION_TOKEN',
},
})
const { data, total } = await res.json()
Response fields
| Field | Type | Description |
|---|---|---|
success |
boolean | Always true on success |
data |
array | Array of applications |
data[].id |
string | Application identifier |
data[].title |
string | Name |
data[].description |
string | null | Description |
data[].scopes |
string[] | Bitrix24 scopes assigned to the application key |
data[].handlerUrl |
string | Handler address on the platform side. Details — Applications |
data[].appUrl |
string | null | Application address on Black Hole. Before publishing — null |
data[].redirectUris |
string[] | Allowed OAuth return addresses |
data[].bitrixClientId |
string | null | OAuth client identifier in the Bitrix24 account |
data[].prefix |
string | Application key prefix |
data[].suffix |
string | Last characters of the application key |
data[].authorId |
string | Application author identifier |
data[].authorBitrixUserId |
integer | null | Bitrix24 employee id of whoever created the app — the same identifier id carries in GET /v1/users. null when the id is unknown |
data[].authorBitrixUserIdSource |
string | null | Where the id came from: member — the author's confirmed membership of the account, snapshot — a value captured when the app was created, null — no id |
data[].portalId |
string | Bitrix24 portal identifier |
data[].createdAt |
string | Creation date, ISO 8601 |
data[].updatedAt |
string | Modification date, ISO 8601 |
data[].placements |
string[] | Bound placements. Before publishing — empty array |
data[].catalogStatus |
string | Catalog status: PRIVATE / PUBLISHED / UNPUBLISHED. The reliable publication signal |
data[].publishedAt |
string | null | Publication date, ISO 8601. null if the application was never published |
data[].placementResizeEnabled |
boolean | Whether the placement iframe height is fitted to the application content. Defaults to false. How to enable it — PATCH /v1/apps/:id |
data[].mobile |
boolean | The "Supports BitrixMobile" flag sent to the Bitrix24 account at registration. For applications created before the field existed — false. Set only at creation — Create an application |
total |
number | Total number of Bitrix24 account applications available to the key |
page |
number | Current page |
limit |
number | Applied page size |
Response example
{
"success": true,
"data": [
{
"id": "11a2b3c4-d5e6-47f8-9012-3a4b5c6d7e8f",
"title": "Contact center connector",
"description": null,
"scopes": ["crm", "imopenlines", "imconnector", "placement"],
"handlerUrl": "https://vibecode.bitrix24.com/v1/bitrix-handler",
"appUrl": null,
"redirectUris": [
"https://vibecode.bitrix24.com/oauth/complete",
"http://localhost"
],
"bitrixClientId": "local.6b2c3d4e5f6a70.33334444",
"prefix": "vibe_app_local_6b2",
"suffix": "4444",
"authorId": "b2c3d4e5-f6a7-8901-bcde-f23456789012",
"authorBitrixUserId": 42,
"authorBitrixUserIdSource": "member",
"portalId": "8b1f0e2a-3c4d-5e6f-7a8b-9c0d1e2f3a4b",
"createdAt": "2026-06-04T08:52:57.583Z",
"updatedAt": "2026-06-04T08:52:57.583Z",
"placements": [],
"catalogStatus": "PRIVATE",
"publishedAt": null,
"placementResizeEnabled": false,
"mobile": false
},
{
"id": "22b3c4d5-e6f7-48a9-0123-4b5c6d7e8f90",
"title": "Sales dashboard",
"description": null,
"scopes": ["crm", "user", "placement"],
"handlerUrl": "https://vibecode.bitrix24.com/v1/bitrix-handler",
"appUrl": "https://app-abc12345.vibecode.bitrix24.com",
"redirectUris": [
"https://vibecode.bitrix24.com/oauth/complete",
"http://localhost"
],
"bitrixClientId": "local.5a1b2c3d4e5f60.11112222",
"prefix": "vibe_app_local_5a1",
"suffix": "2222",
"authorId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"authorBitrixUserId": null,
"authorBitrixUserIdSource": null,
"portalId": "8b1f0e2a-3c4d-5e6f-7a8b-9c0d1e2f3a4b",
"createdAt": "2026-05-13T11:31:53.810Z",
"updatedAt": "2026-05-13T11:35:12.204Z",
"placements": ["CRM_DEAL_DETAIL_TAB"],
"catalogStatus": "PUBLISHED",
"publishedAt": "2026-05-13T11:35:12.204Z",
"placementResizeEnabled": true,
"mobile": false
}
],
"total": 2,
"page": 1,
"limit": 50
}
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 API key |
Full list of common API errors — Errors.
Known specifics
- The system companion bot application and deleted applications are not included in the list.
- By default the response contains no more than 50 applications — this is a boundary, not an error. Compare
totalwith the length ofdatato determine whether applications remain beyond the page, and request the next one viapageif needed. - The
authorBitrixUserIdfield is the Bitrix24 employee id of whoever created the app, and the same identifier theidfield of GET /v1/users returns. An employee card link is built ashttps://<account-domain>/company/personal/user/<authorBitrixUserId>/. TheauthorIdfield stays a Vibecode platform user identifier and never goes into such a link. - This response does not return the author's name. Fetch it by
authorBitrixUserIdthrough GET /v1/users, where theuserpermission gates access to it. - Read
authorBitrixUserIdSourcebefore you build a link. Onmemberthe id comes from the author's confirmed membership of the account and the link points at them. Onsnapshotthe id comes from a value captured when the app was created: that is best-effort, and on an app whose owner has changed the id may point at a different employee. A registry that must not be wrong should link only onmember. - Both fields are empty together:
authorBitrixUserIdSource: nullalways comes withauthorBitrixUserId: null. An empty id is a normal state, not an error — for some apps the author's id is unknown. - On self-hosted accounts and on accounts with microservice credentials the
snapshotvalue is never returned: there the captured value has no identity-confirmed origin, so the id is eithermemberor empty. - The
membervalue does not promise the employee still works at the company: the link may lead to a disabled or deleted Bitrix24 profile.