لوكلاء AI: ملف markdown لهذه الصفحة — /docs-content-en/keys-auth/guide.md فهرس التوثيق — /llms.txt
مقالات التوثيق متاحة حاليًا باللغة الإنجليزية فقط.
API reference for the model
GET /v1/guide
Returns the field contract of all Bitrix24 account entities and API usage rules in one response. The model accesses it for the static field schema before a session token exists — for example, when an application needs to find out field types and constraints before user authorization.
Examples
curl — personal key
curl -H "X-Api-Key: YOUR_API_KEY" \
https://vibecode.bitrix24.com/v1/guide
curl — OAuth application
curl \
-H "X-Api-Key: YOUR_APP_KEY" \
https://vibecode.bitrix24.com/v1/guide
JavaScript — personal key
const res = await fetch('https://vibecode.bitrix24.com/v1/guide', {
headers: { 'X-Api-Key': 'YOUR_API_KEY' },
})
const { data } = await res.json()
data.entities.forEach((e) => {
console.log(`${e.name} (${e.scope}) — ${Object.keys(e.operations).join(', ')}`)
})
JavaScript — OAuth application
const res = await fetch('https://vibecode.bitrix24.com/v1/guide', {
headers: { 'X-Api-Key': 'YOUR_APP_KEY' },
})
const { data } = await res.json()
Response fields
The response is split into structural blocks: data.overview — an overview, data.entities — entity contracts, data.paginationCanon — the paging and counting rules shared by every entity, data.importantNotes and data.knownIssues — nuances and constraints, plus pointers to documentation sections. Below are the response envelope, the structure of a data.entities[] element and the nested contract of the fieldsDetailed field.
| Field | Type | Description |
|---|---|---|
Fieldsuccess |
Typeboolean | DescriptionAlways true on success |
Fielddata |
Typeobject | DescriptionReference: overview, entity contracts, API usage rules |
Fielddata.overview |
Typestring | DescriptionOverview description of the available API surface |
Fielddata.entities |
Typearray | DescriptionContracts of entities available to the key |
Fielddata.entities[].name |
Typestring | DescriptionEntity identifier for /v1/<name> paths |
Fielddata.entities[].basePath |
Typestring | DescriptionEntity base path. For dynamic entities, it contains the parameter segment, for example /v1/items/:entityTypeId |
Fielddata.entities[].scope |
Typestring | DescriptionScope required to access the entity |
Fielddata.entities[].bitrixEntity |
Typestring | DescriptionEntity name on the Bitrix24 side |
Fielddata.entities[].operations |
Typeobject | DescriptionAvailable operations. Keys — list, getById, create, update, delete, search, aggregate, batch. Only supported operations are present |
Fielddata.entities[].operations.<op>.method |
Typestring | DescriptionHTTP method of the operation |
Fielddata.entities[].operations.<op>.path |
Typestring | DescriptionOperation path. Some operations additionally carry params, example, note, requiredParams |
Fielddata.entities[].operations.search.paginationStability.counting |
Typestring | DescriptionHow to learn the exact record count for this entity. It arrives with its own text per entity, because it depends on whether that entity offers the aggregate operation |
Fielddata.entities[].fields |
Typeobject | DescriptionCompact field map: the field name maps to a type or type, readonly string |
Fielddata.entities[].fieldsDetailed |
Typeobject | DescriptionDetailed field contract: the field name maps to an object with type and constraints |
Fielddata.entities[].fieldsDetailed.<field>.type |
Typestring | DescriptionField type |
Fielddata.entities[].fieldsDetailed.<field>.readonly |
Typeboolean | DescriptionRead-only field. Present when true |
Fielddata.entities[].fieldsDetailed.<field>.required |
Typeboolean | DescriptionField is required on creation. Present when true |
Fielddata.entities[].fieldsDetailed.<field>.createOnly |
Typeboolean | DescriptionField is set only on creation and not accepted on update. Present when true |
Fielddata.entities[].fieldsDetailed.<field>.nullable |
Typeboolean | DescriptionThe field can come back as null. Present when true |
Fielddata.entities[].fieldsDetailed.<field>.importable |
Typeboolean | DescriptionThe field can be set only during import. Present when true |
Fielddata.entities[].fieldsDetailed.<field>.properties |
Typeobject | DescriptionMap of nested object fields. Recursively uses type, readonly, nullable, properties, itemSchema |
Fielddata.entities[].fieldsDetailed.<field>.itemSchema |
Typeobject | DescriptionSchema of one array element. Present for an array field with a declared element shape and recursively uses type, readonly, nullable, properties, itemSchema |
Fielddata.entities[].fieldsDetailed.<field>.enum |
Typearray | DescriptionAllowed values of an enumeration field |
Fielddata.entities[].fieldsDetailed.<field>.enum[].value |
Typenumber or string | DescriptionValue the field accepts |
Fielddata.entities[].fieldsDetailed.<field>.enum[].label |
Typestring | DescriptionEnglish name of the value |
Fielddata.entities[].fieldsDetailed.<field>.enum[].description |
Typestring | DescriptionExplanation of the value. Not present for all values |
Fielddata.entities[].responseFormats |
Typeobject | DescriptionResponse shape examples for list, get, create operations |
Fielddata.entities[].docs |
Typestring | DescriptionLink to the entity documentation page. Present if the page exists |
Fielddata.entities[].requiredListParams |
Typearray | DescriptionRequired query parameters of the list operation. Present for entities that require them |
Fielddata.entities[].requiredFilterFields |
Typearray | DescriptionRequired filter fields. Present for entities that require them |
Fielddata.paginationCanon |
Typeobject | DescriptionThe paging and record-counting rules shared by every entity: withTotal, windowing, defaultOrder, preferredPattern, unstableOffsetError, workaround, cursor, loopBound. The same-named fields inside data.entities[].operations.search carry a pointer here and do not repeat the text |
Fielddata.paginationCanon.appliesTo |
Typestring | DescriptionWhich entities the block covers, and which rule arrives next to the entity instead of here |
Fielddata.importantNotes |
Typeobject | DescriptionNuances of working with fields common to several entities — the stageId format, deal money fields and others |
Fielddata.knownIssues |
Typearray | DescriptionKnown method constraints, filtered by the key's scopes |
Fielddata.knownIssues[].method |
Typestring | DescriptionBitrix24 method the constraint applies to |
Fielddata.knownIssues[].scope |
Typestring | DescriptionMethod scope |
Fielddata.knownIssues[].issue |
Typestring | DescriptionConstraint description |
Fielddata.knownIssues[].workaround |
Typestring | DescriptionWorkaround |
Fielddata.accessModeNote |
Typestring | DescriptionA reminder about read-only mode and the WRITE_BLOCKED_READONLY_KEY code |
Fielddata.changelog, data.errors, data.feedback, data.entityApi, data.entitiesIndex, data.optimization, data.filtering, data.batch and other string pointers |
Typestring | DescriptionPointers to documentation sections — URL and a short section description |
Fielddata.appBlueprints |
Typestring | DescriptionA pointer to the documentation of ready-made application specifications. Present for any key. The description also names the refusal condition: when the section is disabled for the account, GET /v1/app/blueprints/:slug returns 403 BLUEPRINTS_DISABLED |
Fielddata.workflows, data.notifications, data.calls, data.keysAuth and other sections |
Typeobject | DescriptionSections beyond the entity API. Each contains description, docs with links to documentation and — for most sections — an endpoints array with methods and paths. Some sections carry an important array with the section's limitations instead of endpoints |
Fielddata.openLines |
Typeobject | DescriptionThe Open Channels section. Present for a key with the imopenlines scope. It contains description, scope, an important array and docs with links to eight section pages. There is no endpoints array in this block |
Fielddata.openLines.important |
Typearray | DescriptionTwo limitations of the section: the dashboard statistics methods may return 422 METHOD_NOT_YET_AVAILABLE if the Bitrix24 update has not reached the account yet, and without the statistics-viewing right they return 403 B24_TARIFF_RESTRICTION. GET /v1/guide does not probe the account: this is a general notice, not the status of yours — call the method, a 200 response means it is live there. Channel configuration and operator actions work on any Bitrix24 account |
itemSchema has the same shape in fieldsDetailed and in GET /v1/<entity>/fields responses. The separate items key in a /fields response continues to contain the raw Bitrix24 value directory for enumeration fields and never contains an array element schema.
Response example
The example shows one data.entities element and some of the structural blocks. The full response contains contracts of all entities available to the key.
{
"success": true,
"data": {
"overview": "VibeCode API proxies Bitrix24 REST API. 48 entities across CRM, tasks, users, calendar, disk, chat, and more.",
"entities": [
{
"name": "deals",
"basePath": "/v1/deals",
"scope": "crm",
"bitrixEntity": "deal",
"operations": {
"list": { "method": "GET", "path": "/v1/deals", "params": ["limit", "offset"] },
"getById": { "method": "GET", "path": "/v1/deals/:id" },
"create": { "method": "POST", "path": "/v1/deals" }
},
"fields": {
"id": "number, readonly",
"title": "string",
"amount": "number",
"currency": "string"
},
"fieldsDetailed": {
"id": { "type": "number", "readonly": true },
"title": { "type": "string" },
"amount": { "type": "number" },
"currency": { "type": "string" }
},
"responseFormats": {
"list": "GET /v1/deals → { success: true, data: [{ id, xmlId, lastActivityTime, title, ... }], meta: { total, hasMore } }"
},
"docs": "https://vibecode.bitrix24.com/docs-content/entities/deals.md"
}
],
"importantNotes": {
"stageIdFormat": {
"description": "Deal stageId values use Bitrix24 category prefix format: C{categoryId}:{STAGE_CODE}."
}
},
"knownIssues": [
{
"method": "crm.timeline.comment.list",
"scope": "crm",
"issue": "Ignores >=CREATED filter (date filtering does not work)",
"workaround": "Fetch all comments and filter by date on client side"
}
],
"accessModeNote": "See /v1/me for current accessMode. Write methods return 403 WRITE_BLOCKED_READONLY_KEY when key is READONLY.",
"changelog": "https://vibecode.bitrix24.com/docs-content/changelog.md — API changelog index: scheduled removals of old formats, a monthly archive and per-section history. Full entries (NEW / FIX / BC) are on per-day pages."
}
}
Error response example
401 — no API key passed:
{
"success": false,
"error": {
"code": "MISSING_API_KEY",
"message": "API key required. Pass via X-Api-Key header."
}
}
Errors
| HTTP | Code | Description |
|---|---|---|
| HTTP401 | CodeMISSING_API_KEY |
DescriptionThe X-Api-Key header is missing |
| HTTP401 | CodeINVALID_API_KEY |
DescriptionThe key is not recognized — no such key exists on the platform |
| HTTP401 | CodeKEY_INACTIVE |
DescriptionThe key is revoked |
| HTTP401 | CodeKEY_EXPIRED |
DescriptionThe key has expired |
| HTTP403 | CodeIP_NOT_ALLOWED |
DescriptionRequest from an address outside the allowed IP list |
Full list of common API errors — Errors.
Known specifics
No session token needed. The vibe_app_ authorization key reads the data.entities[].fieldsDetailed contract with a single X-Api-Key header, without Authorization: Bearer. This distinguishes the endpoint from GET /v1/<entity>/fields, which needs a user context. See Passing the key.
What data.entities contains depends on the key. A key sees only the entities within its scopes. An authorization key additionally gets business process entities available to the application. A management key gets a reference across all scopes and an extra data.managementKeyNote block.
The response is returned in full. The endpoint accepts no query parameters: you cannot request a single entity or a single section of the reference, and an unknown query parameter is ignored without changing the response. To avoid reading the whole response on every run, rely on ETag and conditional requests.
Conditional requests and cache. The response carries an ETag header. A repeat request with If-None-Match and the same value returns 304 Not Modified without a body. The response is cached server-side for about 5 minutes, the response header is Cache-Control: private, max-age=300.
fieldsDetailed is a static contract. It does not contain field display names or Bitrix24 account custom fields UF_CRM_*. For display names and custom fields, use GET /v1/<entity>/fields with a user context.