[{"data":1,"prerenderedAt":9},["ShallowReactive",2],{"docs-applications\u002Fconnectors":3,"docs-tabs-applications\u002Fconnectors":6},{"content":4,"lastmod":5},"# Application connectors\n\nAn application reads data from external services through the company's connectors. A Bitrix24 account administrator approves the application's access to a connector on request.\n\n## Operations\n\n- [List application connectors](.\u002Fconnectors\u002Flist.md) — `GET \u002Fv1\u002Fapplications\u002F:id\u002Fconnectors`\n- [Request access to a connector](.\u002Fconnectors\u002Faccess-request.md) — `POST \u002Fv1\u002Fapplications\u002F:id\u002Fconnectors\u002F:slug\u002Faccess-request`\n\n## Access\n\n- The methods are called by whoever manages the application, including members of its server's development team. The permissions match those for [application secrets](\u002Fdocs\u002Fapplications\u002Fapp-secrets).\n- An access request requires a key in `READWRITE` mode.\n- Connectors for applications must be enabled for the Bitrix24 account. While they are disabled, both methods return `404 APPLICATION_NOT_FOUND`.\n\n## Typical scenario\n\n1. Get the company's connectors and the application's access state for each — [`GET \u002Fv1\u002Fapplications\u002F:id\u002Fconnectors`](.\u002Fconnectors\u002Flist.md).\n2. Request access to the connector you need by its `slug` — [`POST \u002Fv1\u002Fapplications\u002F:id\u002Fconnectors\u002F:slug\u002Faccess-request`](.\u002Fconnectors\u002Faccess-request.md).\n3. A Bitrix24 account administrator connects the company to the connector and approves the request. Then list the connectors again and check `appState`.\n\n## See also\n\n- [Application catalog](\u002Fdocs\u002Fapplications)\n- [Application secrets](\u002Fdocs\u002Fapplications\u002Fapp-secrets)\n","2026-11-12",{"connectors\u002Flist.md":7,"connectors\u002Faccess-request.md":8},"## List application connectors\n\n`GET \u002Fv1\u002Fapplications\u002F:id\u002Fconnectors`\n\nReturns the company's published connectors, the application's access state for each of them, and their read tools. Call it before an access request to get the connector code and the current state.\n\n## Parameters\n\n| Parameter | Type | Required | Description |\n|----------|-----|:-----:|----------|\n| `id` (path) | string | yes | Application card ID. Get it from: [`GET \u002Fv1\u002Fapplications`](\u002Fdocs\u002Fapplications\u002Flist) |\n\n## Examples\n\n### curl — personal key\n\n```bash\ncurl https:\u002F\u002Fvibecode.bitrix24.com\u002Fv1\u002Fapplications\u002FAPPLICATION_ID\u002Fconnectors \\\n  -H \"X-Api-Key: YOUR_API_KEY\"\n```\n\n### curl — OAuth application\n\n```bash\ncurl https:\u002F\u002Fvibecode.bitrix24.com\u002Fv1\u002Fapplications\u002FAPPLICATION_ID\u002Fconnectors \\\n  -H \"X-Api-Key: YOUR_APP_KEY\" \\\n  -H \"Authorization: Bearer USER_SESSION_TOKEN\"\n```\n\n### JavaScript — personal key\n\n```javascript\nconst res = await fetch('https:\u002F\u002Fvibecode.bitrix24.com\u002Fv1\u002Fapplications\u002FAPPLICATION_ID\u002Fconnectors', {\n  headers: {\n    'X-Api-Key': 'YOUR_API_KEY',\n  },\n})\n\nconst { success, data } = await res.json()\nconsole.log(data.map((connector) => `${connector.slug}: ${connector.appState}`))\n```\n\n### JavaScript — OAuth application\n\n```javascript\nconst res = await fetch('https:\u002F\u002Fvibecode.bitrix24.com\u002Fv1\u002Fapplications\u002FAPPLICATION_ID\u002Fconnectors', {\n  headers: {\n    'X-Api-Key': 'YOUR_APP_KEY',\n    'Authorization': 'Bearer USER_SESSION_TOKEN',\n  },\n})\n\nconst { success, data } = await res.json()\nconsole.log(data.map((connector) => `${connector.slug}: ${connector.appState}`))\n```\n\n## Response fields\n\n| Field | Type | Description |\n|------|-----|----------|\n| `success` | boolean | Always `true` on success |\n| `data` | array | Company connectors |\n| `data[].slug` | string | Connector code. Required for an [access request](\u002Fdocs\u002Fapplications\u002Fconnectors\u002Faccess-request) |\n| `data[].title` | string | Connector title |\n| `data[].iconUrl` | string \u002F null | Icon URL; `null` for a connector from the company catalog |\n| `data[].appState` | string | Application access state: `DISABLED_ON_PORTAL`, `NOT_CONNECTED`, `CONNECTION_BROKEN`, `NO_GRANT`, `GRANT_PENDING`, `GRANT_DENIED`, `GRANT_REVOKED`, `EXPOSURE_WIDENED` or `AVAILABLE` |\n| `data[].readTools` | array | Connector read tools |\n| `data[].readTools[].name` | string | Tool name |\n| `data[].readTools[].title` | string | Tool title |\n| `data[].readTools[].description` | string | Tool description |\n| `data[].readTools[].inputSchema` | object | JSON Schema of the tool arguments |\n| `data[].exposure.linkAccess` | string | Current link access of the application: `OFF`, `VIBECODE_AUTH`, `PUBLIC` |\n| `data[].exposure.externalApiEnabled` | boolean | Whether the application's external API is enabled |\n\n## Response example\n\n```json\n{\n  \"success\": true,\n  \"data\": [\n    {\n      \"slug\": \"orders\",\n      \"title\": \"Orders\",\n      \"iconUrl\": \"https:\u002F\u002Fvibecode.bitrix24.com\u002Fapi\u002Fconnectors\u002Forders\u002Ficon\",\n      \"appState\": \"GRANT_PENDING\",\n      \"readTools\": [],\n      \"exposure\": {\n        \"linkAccess\": \"OFF\",\n        \"externalApiEnabled\": false\n      }\n    }\n  ]\n}\n```\n\n## Error response example\n\n404 — the application does not exist, the caller has no permission to manage it, or connectors for applications are disabled for the Bitrix24 account:\n\n```json\n{\n  \"success\": false,\n  \"error\": {\n    \"code\": \"APPLICATION_NOT_FOUND\",\n    \"message\": \"APPLICATION_NOT_FOUND\"\n  }\n}\n```\n\n## Errors\n\n| HTTP | Code | Description |\n|------|-----|----------|\n| 404 | `APPLICATION_NOT_FOUND` | The application does not exist, is unavailable, is on a different server than the key, or connectors for applications are disabled for the portal |\n| 403 | `EXTERNAL_COLLABORATOR_KEY_SERVER_MISMATCH` | The external collaborator's key and the application are not bound to the same server |\n| 403 | `EXTERNAL_COLLABORATOR_NOT_A_MEMBER` | The external developer's membership was revoked or has expired |\n| 403 | `PORTAL_COLLABORATOR_NOT_A_MEMBER` | The user is no longer a member of the server's development team |\n| 401 | `INVALID_API_KEY` | Invalid key |\n| 401 | `MISSING_API_KEY` | `X-Api-Key` was not passed |\n\nFull list of common API errors — [Errors](\u002Fdocs\u002Ferrors).\n\n## See also\n\n- [Application connectors](\u002Fdocs\u002Fapplications\u002Fconnectors)\n- [Request access to a connector](\u002Fdocs\u002Fapplications\u002Fconnectors\u002Faccess-request)\n- [Application secrets](\u002Fdocs\u002Fapplications\u002Fapp-secrets)\n- [Application card](\u002Fdocs\u002Fapplications\u002Fget)\n","## Request access to a connector\n\n`POST \u002Fv1\u002Fapplications\u002F:id\u002Fconnectors\u002F:slug\u002Faccess-request`\n\nSends the Bitrix24 account administrator a request to grant the application access to a company connector, and returns the connector with its current access state. No request body is required.\n\n## Parameters\n\n| Parameter | Type | Required | Description |\n|----------|-----|:-----:|----------|\n| `id` (path) | string | yes | Application card ID. Get it from: [`GET \u002Fv1\u002Fapplications`](\u002Fdocs\u002Fapplications\u002Flist) |\n| `slug` (path) | string | yes | Connector code. Get it from: [`GET \u002Fv1\u002Fapplications\u002F:id\u002Fconnectors`](\u002Fdocs\u002Fapplications\u002Fconnectors\u002Flist) |\n\n## Examples\n\n### curl — personal key\n\n```bash\ncurl -X POST https:\u002F\u002Fvibecode.bitrix24.com\u002Fv1\u002Fapplications\u002FAPPLICATION_ID\u002Fconnectors\u002Forders\u002Faccess-request \\\n  -H \"X-Api-Key: YOUR_API_KEY\"\n```\n\n### curl — OAuth application\n\n```bash\ncurl -X POST https:\u002F\u002Fvibecode.bitrix24.com\u002Fv1\u002Fapplications\u002FAPPLICATION_ID\u002Fconnectors\u002Forders\u002Faccess-request \\\n  -H \"X-Api-Key: YOUR_APP_KEY\" \\\n  -H \"Authorization: Bearer USER_SESSION_TOKEN\"\n```\n\n### JavaScript — personal key\n\n```javascript\nconst res = await fetch('https:\u002F\u002Fvibecode.bitrix24.com\u002Fv1\u002Fapplications\u002FAPPLICATION_ID\u002Fconnectors\u002Forders\u002Faccess-request', {\n  method: 'POST',\n  headers: {\n    'X-Api-Key': 'YOUR_API_KEY',\n  },\n})\n\nconst { success, data } = await res.json()\nconsole.log('State:', data.appState)\n```\n\n### JavaScript — OAuth application\n\n```javascript\nconst res = await fetch('https:\u002F\u002Fvibecode.bitrix24.com\u002Fv1\u002Fapplications\u002FAPPLICATION_ID\u002Fconnectors\u002Forders\u002Faccess-request', {\n  method: 'POST',\n  headers: {\n    'X-Api-Key': 'YOUR_APP_KEY',\n    'Authorization': 'Bearer USER_SESSION_TOKEN',\n  },\n})\n\nconst { success, data } = await res.json()\nconsole.log('State:', data.appState)\n```\n\n## Response fields\n\n| Field | Type | Description |\n|------|-----|----------|\n| `success` | boolean | Always `true` on success |\n| `data.slug` | string | Connector code |\n| `data.title` | string | Connector title |\n| `data.iconUrl` | string \u002F null | Icon URL; `null` for a connector from the company catalog |\n| `data.appState` | string | Application access state after the request: `DISABLED_ON_PORTAL`, `NOT_CONNECTED`, `CONNECTION_BROKEN`, `NO_GRANT`, `GRANT_PENDING`, `GRANT_DENIED`, `GRANT_REVOKED`, `EXPOSURE_WIDENED` or `AVAILABLE` |\n| `data.readTools` | array | Connector read tools: `name`, `title`, `description`, `inputSchema` — as in the [connector list](\u002Fdocs\u002Fapplications\u002Fconnectors\u002Flist) |\n| `data.exposure.linkAccess` | string | The application's current link access: `OFF`, `VIBECODE_AUTH`, `PUBLIC` |\n| `data.exposure.externalApiEnabled` | boolean | Whether the application's external API is enabled |\n\n## Response example\n\n```json\n{\n  \"success\": true,\n  \"data\": {\n    \"slug\": \"orders\",\n    \"title\": \"Orders\",\n    \"iconUrl\": \"https:\u002F\u002Fvibecode.bitrix24.com\u002Fapi\u002Fconnectors\u002Forders\u002Ficon\",\n    \"appState\": \"GRANT_PENDING\",\n    \"readTools\": [],\n    \"exposure\": {\n      \"linkAccess\": \"OFF\",\n      \"externalApiEnabled\": false\n    }\n  }\n}\n```\n\n## Error response example\n\n404 — the connector is unavailable or does not support connecting a company:\n\n```json\n{\n  \"success\": false,\n  \"error\": {\n    \"code\": \"CONNECTOR_NOT_FOUND\",\n    \"message\": \"CONNECTOR_NOT_FOUND\"\n  }\n}\n```\n\n## Errors\n\n| HTTP | Code | Description |\n|------|-----|----------|\n| 404 | `CONNECTOR_NOT_FOUND` | The connector is unavailable or does not support connecting a company |\n| 404 | `APPLICATION_NOT_FOUND` | The application does not exist, is unavailable, is on a different server than the key, or connectors for applications are disabled for the portal |\n| 413 | `FST_ERR_CTP_BODY_TOO_LARGE` | The request body is larger than 1 KiB |\n| 403 | `WRITE_BLOCKED_READONLY_KEY` | The key is in `READONLY` mode |\n| 403 | `EXTERNAL_COLLABORATOR_KEY_SERVER_MISMATCH` | The external collaborator's key and the application are not bound to the same server |\n| 403 | `EXTERNAL_COLLABORATOR_NOT_A_MEMBER` | The external developer's membership was revoked or has expired |\n| 403 | `PORTAL_COLLABORATOR_NOT_A_MEMBER` | The user is no longer a member of the server's development team |\n| 401 | `INVALID_API_KEY` | Invalid key |\n| 401 | `MISSING_API_KEY` | `X-Api-Key` was not passed |\n\nFull list of common API errors — [Errors](\u002Fdocs\u002Ferrors).\n\n## Known specifics\n\n- **Repeated request.** While a request is pending or access is active, a repeated call does not create a new request and does not notify the administrator again. A denied or revoked request can be submitted again.\n- **A request does not grant access.** Access appears only after the administrator approves it. Before approving, the administrator connects the company to the connector, and until it is connected, `appState` after the request may remain `NOT_CONNECTED`.\n\n## See also\n\n- [Application connectors](\u002Fdocs\u002Fapplications\u002Fconnectors)\n- [List application connectors](\u002Fdocs\u002Fapplications\u002Fconnectors\u002Flist)\n- [Application secrets](\u002Fdocs\u002Fapplications\u002Fapp-secrets)\n",1794739459482]