[{"data":1,"prerenderedAt":2323},["ShallowReactive",2],{"navigation":3,"-docs-working-with-the-rest-api-error-codes":508,"-docs-working-with-the-rest-api-error-codes-description":2312},[4],{"title":5,"path":6,"stem":7,"children":8,"page":47},"Docs","\u002Fdocs","docs",[9,83,393,400],{"title":10,"path":11,"stem":12,"children":13,"restApiVersion":15,"category":15,"description":15,"badge":15},"Get Started","\u002Fdocs\u002Fgetting-started","docs\u002F1.getting-started\u002F1.index",[14,17,48,68],{"title":10,"path":11,"stem":12,"restApiVersion":15,"category":15,"description":16,"badge":15},null,"Quick start guide for working with the SDK for Bitrix24 REST API",{"title":18,"path":19,"stem":20,"children":21,"page":47},"Installation","\u002Fdocs\u002Fgetting-started\u002Finstallation","docs\u002F1.getting-started\u002F2.installation",[22,27,32,37,42],{"title":23,"path":24,"stem":25,"restApiVersion":15,"category":15,"description":26,"badge":15},"Vue","\u002Fdocs\u002Fgetting-started\u002Finstallation\u002Fvue","docs\u002F1.getting-started\u002F2.installation\u002F1.vue","Guide for installing Bitrix24 JS SDK in Vue applications.",{"title":28,"path":29,"stem":30,"restApiVersion":15,"category":15,"description":31,"badge":15},"Nuxt","\u002Fdocs\u002Fgetting-started\u002Finstallation\u002Fnuxt","docs\u002F1.getting-started\u002F2.installation\u002F2.nuxt","Guide for installing Bitrix24 JS SDK in Nuxt applications.",{"title":33,"path":34,"stem":35,"restApiVersion":15,"category":15,"description":36,"badge":15},"React","\u002Fdocs\u002Fgetting-started\u002Finstallation\u002Freact","docs\u002F1.getting-started\u002F2.installation\u002F3.react","Guide for installing Bitrix24 JS SDK in React applications.",{"title":38,"path":39,"stem":40,"restApiVersion":15,"category":15,"description":41,"badge":15},"Node.js","\u002Fdocs\u002Fgetting-started\u002Finstallation\u002Fnodejs","docs\u002F1.getting-started\u002F2.installation\u002F4.nodejs","Guide for installing Bitrix24 JS SDK in Node.js applications.",{"title":43,"path":44,"stem":45,"restApiVersion":15,"category":15,"description":46,"badge":15},"UMD","\u002Fdocs\u002Fgetting-started\u002Finstallation\u002Fumd","docs\u002F1.getting-started\u002F2.installation\u002F5.umd","Guide for using UMD version Bitrix24 JS SDK in you applications.",false,{"title":49,"restApiVersion":15,"category":15,"description":15,"badge":15,"shadow":47,"path":50,"stem":51,"children":52,"page":47},"Migration","\u002Fdocs\u002Fgetting-started\u002Fmigration","docs\u002F1.getting-started\u002F3.migration",[53,58,63],{"title":54,"path":55,"stem":56,"restApiVersion":15,"category":15,"description":57,"badge":15},"v0 to v1","\u002Fdocs\u002Fgetting-started\u002Fmigration\u002Fv1","docs\u002F1.getting-started\u002F3.migration\u002F1.v1","A comprehensive guide to migrate your application from Bitrix24 JS SDK v0 to Bitrix24 JS SDK v1.",{"title":59,"path":60,"stem":61,"restApiVersion":15,"category":15,"description":62,"badge":15},"v2 to v3","\u002Fdocs\u002Fgetting-started\u002Fmigration\u002Fv3","docs\u002F1.getting-started\u002F3.migration\u002F2.v3","How to migrate off the deprecated REST surface that is removed in Bitrix24 JS SDK 3.0.0.",{"title":64,"path":65,"stem":66,"restApiVersion":15,"category":15,"description":67,"badge":15},"Inside 2.x","\u002Fdocs\u002Fgetting-started\u002Fmigration\u002Fwithin-2x","docs\u002F1.getting-started\u002F3.migration\u002F3.within-2x","Changes within the 2.x line that need a change on your side even though no API was removed — what breaks, how to tell, and what to do.",{"title":69,"restApiVersion":15,"category":15,"description":15,"badge":15,"path":70,"stem":71,"children":72,"page":47},"AI Tools","\u002Fdocs\u002Fgetting-started\u002Fai","docs\u002F1.getting-started\u002F7.ai",[73,78],{"title":74,"path":75,"stem":76,"restApiVersion":15,"category":15,"description":77,"badge":15},"Skills","\u002Fdocs\u002Fgetting-started\u002Fai\u002Fskills","docs\u002F1.getting-started\u002F7.ai\u002F1.skills","Task-focused skill files for AI coding agents working with @bitrix24\u002Fb24jssdk.",{"title":79,"path":80,"stem":81,"restApiVersion":15,"category":15,"description":82,"badge":15},"LLMs.txt","\u002Fdocs\u002Fgetting-started\u002Fai\u002Fllms-txt","docs\u002F1.getting-started\u002F7.ai\u002F2.llms-txt","How to get AI tools like Cursor, Windsurf, GitHub Copilot, ChatGPT, and Claude to understand Bitrix24 JS SDK methods, tools, and best practices.",{"title":84,"path":85,"stem":86,"children":87,"restApiVersion":15,"category":15,"description":15,"badge":15},"Working with the REST API","\u002Fdocs\u002Fworking-with-the-rest-api","docs\u002F2.working-with-the-rest-api\u002F0.index",[88,91,98,103,108,112,117,121,126,131,135,140,145,150,155,160,165,170,175,180,184,189,194,199,205,210,215,220,225,230,235,240,245,250,256,261,266,272,277,282,287,292,298,304,309,314,320,325,330,335,340,345,351,358,363,368,373,378,383,388],{"title":89,"path":85,"stem":86,"restApiVersion":15,"category":15,"description":90,"badge":15},"Introduction","Overview of SDK capabilities for working with Bitrix24 REST API",{"title":92,"path":93,"stem":94,"restApiVersion":95,"category":96,"description":97,"badge":15},"Call","\u002Fdocs\u002Fworking-with-the-rest-api\u002Fcall-rest-api-ver2","docs\u002F2.working-with-the-rest-api\u002F1.call-rest-api-ver2","rest-api-ver2","actions","A method for making Bitrix24 REST API version 2 calls.",{"title":92,"path":99,"stem":100,"restApiVersion":101,"category":96,"description":102,"badge":15},"\u002Fdocs\u002Fworking-with-the-rest-api\u002Fcall-rest-api-ver3","docs\u002F2.working-with-the-rest-api\u002F1.call-rest-api-ver3","rest-api-ver3","Method for making Bitrix24 REST API version 3 calls.",{"title":104,"path":105,"stem":106,"restApiVersion":95,"category":96,"description":107,"badge":15},"CallList","\u002Fdocs\u002Fworking-with-the-rest-api\u002Fcall-list-rest-api-ver2","docs\u002F2.working-with-the-rest-api\u002F2.call-list-rest-api-ver2","Method for quickly retrieving all data from list methods of Bitrix24 REST API version 2.",{"title":104,"path":109,"stem":110,"restApiVersion":101,"category":96,"description":111,"badge":15},"\u002Fdocs\u002Fworking-with-the-rest-api\u002Fcall-list-rest-api-ver3","docs\u002F2.working-with-the-rest-api\u002F2.call-list-rest-api-ver3","Method for quickly retrieving all data from list methods of Bitrix24 REST API version 3.",{"title":113,"path":114,"stem":115,"restApiVersion":95,"category":96,"description":116,"badge":15},"FetchList","\u002Fdocs\u002Fworking-with-the-rest-api\u002Ffetch-list-rest-api-ver2","docs\u002F2.working-with-the-rest-api\u002F2.fetch-list-rest-api-ver2","Returns an AsyncGenerator that allows processing data from list methods of Bitrix24 REST API version 2 as it is received without loading the entire array into memory at once. This is especially useful when working with very large volumes of data.",{"title":113,"path":118,"stem":119,"restApiVersion":101,"category":96,"description":120,"badge":15},"\u002Fdocs\u002Fworking-with-the-rest-api\u002Ffetch-list-rest-api-ver3","docs\u002F2.working-with-the-rest-api\u002F2.fetch-list-rest-api-ver3","Returns an AsyncGenerator that allows processing data from list methods of Bitrix24 REST API version 3 as it is received without loading the entire array into memory at once. This is especially useful when working with very large volumes of data.",{"title":122,"path":123,"stem":124,"restApiVersion":15,"category":122,"description":125,"badge":15},"B24Hook","\u002Fdocs\u002Fworking-with-the-rest-api\u002Fhook","docs\u002F2.working-with-the-rest-api\u002F20.hook","Server-side entry point for talking to the Bitrix24 REST API through an inbound webhook (permanent token).",{"title":127,"path":128,"stem":129,"restApiVersion":95,"category":96,"description":130,"badge":15},"Batch","\u002Fdocs\u002Fworking-with-the-rest-api\u002Fbatch-rest-api-ver2","docs\u002F2.working-with-the-rest-api\u002F3.batch-rest-api-ver2","Method for executing batch requests to Bitrix24 REST API version 2. Allows executing up to 50 commands in a single API call.",{"title":127,"path":132,"stem":133,"restApiVersion":101,"category":96,"description":134,"badge":15},"\u002Fdocs\u002Fworking-with-the-rest-api\u002Fbatch-rest-api-ver3","docs\u002F2.working-with-the-rest-api\u002F3.batch-rest-api-ver3","Method for executing batch requests to Bitrix24 REST API version 3. The SDK sends up to 50 commands in a single API call.",{"title":89,"path":136,"stem":137,"restApiVersion":15,"category":138,"description":139,"badge":15},"\u002Fdocs\u002Fworking-with-the-rest-api\u002Fframe","docs\u002F2.working-with-the-rest-api\u002F30.frame","B24Frame","Designed for managing Bitrix24 applications running inside a placement iframe. Inherits from AbstractB24 and exposes managers for authentication, parent-window messaging, sliders, dialogs, placements, and options.",{"title":141,"path":142,"stem":143,"restApiVersion":15,"category":138,"description":144,"badge":15},"Initialization","\u002Fdocs\u002Fworking-with-the-rest-api\u002Fframe-initialize-b24-frame","docs\u002F2.working-with-the-rest-api\u002F30.frame-initialize-b24-frame","Function is designed to initialize a B24Frame",{"title":146,"path":147,"stem":148,"restApiVersion":15,"category":138,"description":149,"badge":15},"Auth","\u002Fdocs\u002Fworking-with-the-rest-api\u002Fframe-auth","docs\u002F2.working-with-the-rest-api\u002F31.frame-auth","Designed for managing authentication in Bitrix24 applications. It handles authentication data received from the parent window and provides methods for updating and retrieving this data.",{"title":151,"path":152,"stem":153,"restApiVersion":15,"category":138,"description":154,"badge":15},"Dialog","\u002Fdocs\u002Fworking-with-the-rest-api\u002Fframe-dialog","docs\u002F2.working-with-the-rest-api\u002F31.frame-dialog","Wraps the BX24 system dialogs (user picker, access permission picker, CRM entity picker) so they can be opened from inside a Bitrix24 application iframe.",{"title":156,"path":157,"stem":158,"restApiVersion":15,"category":138,"description":159,"badge":15},"Options","\u002Fdocs\u002Fworking-with-the-rest-api\u002Fframe-options","docs\u002F2.working-with-the-rest-api\u002F31.frame-options","Used for managing application and user settings in the Bitrix24 application. It allows initializing data, getting, and setting options through messages to the parent window.",{"title":161,"path":162,"stem":163,"restApiVersion":15,"category":138,"description":164,"badge":15},"Parent","\u002Fdocs\u002Fworking-with-the-rest-api\u002Fframe-parent","docs\u002F2.working-with-the-rest-api\u002F31.frame-parent","Provides methods for managing the parent application window in Bitrix24, including resizing the window, managing scroll, initiating calls, and opening the messenger.",{"title":166,"path":167,"stem":168,"restApiVersion":15,"category":138,"description":169,"badge":15},"Placement","\u002Fdocs\u002Fworking-with-the-rest-api\u002Fframe-placement","docs\u002F2.working-with-the-rest-api\u002F31.frame-placement","Used for managing the placement of widgets in the Bitrix24 application.",{"title":171,"path":172,"stem":173,"restApiVersion":15,"category":138,"description":174,"badge":15},"Slider","\u002Fdocs\u002Fworking-with-the-rest-api\u002Fframe-slider","docs\u002F2.working-with-the-rest-api\u002F31.frame-slider","Provides methods for working with sliders in the Bitrix24 application. It allows opening and closing sliders, as well as managing their content.",{"title":176,"path":177,"stem":178,"restApiVersion":95,"category":96,"description":179,"badge":15},"BatchByChunk","\u002Fdocs\u002Fworking-with-the-rest-api\u002Fbatch-by-chunk-rest-api-ver2","docs\u002F2.working-with-the-rest-api\u002F4.batch-by-chunk-rest-api-ver2","Method for executing batch requests with automatic chunking for any number of commands. Automatically splits large command sets into batches of 50 and executes them sequentially. Use only arrays of tuples or arrays of objects.",{"title":176,"path":181,"stem":182,"restApiVersion":101,"category":96,"description":183,"badge":15},"\u002Fdocs\u002Fworking-with-the-rest-api\u002Fbatch-by-chunk-rest-api-ver3","docs\u002F2.working-with-the-rest-api\u002F4.batch-by-chunk-rest-api-ver3","Method for executing batch requests to Bitrix24 REST API version 3 with automatic chunking for any number of commands. Automatically splits large command sets into batches of 50 and executes them sequentially. Use only arrays of tuples or arrays of objects.",{"title":185,"path":186,"stem":187,"restApiVersion":15,"category":185,"description":188,"badge":15},"B24OAuth","\u002Fdocs\u002Fworking-with-the-rest-api\u002Foauth","docs\u002F2.working-with-the-rest-api\u002F40.oauth","Server-side entry point for talking to the Bitrix24 REST API with an OAuth 2.0 access token (and automatic refresh).",{"title":190,"path":191,"stem":192,"restApiVersion":15,"category":15,"description":193,"badge":15},"Choosing the method","\u002Fdocs\u002Fworking-with-the-rest-api\u002Fchoosing-the-right-method","docs\u002F2.working-with-the-rest-api\u002F5.choosing-the-right-method","Decision guide for picking between Call, CallList, FetchList, Batch and BatchByChunk in REST API v2 and v3.",{"title":195,"path":196,"stem":197,"restApiVersion":15,"category":15,"description":198,"badge":15},"Filtering","\u002Fdocs\u002Fworking-with-the-rest-api\u002Ffiltering","docs\u002F2.working-with-the-rest-api\u002F5.filtering","Reference for building filter parameters in Bitrix24 REST API v2 (prefix operators) and v3 (array-of-triples), including date formatting and the order-stripping rule.",{"title":200,"path":201,"stem":202,"restApiVersion":15,"category":203,"description":204,"badge":15},"B24HelperManager","\u002Fdocs\u002Fworking-with-the-rest-api\u002Fhelper","docs\u002F2.working-with-the-rest-api\u002F50.helper","Helper","Aggregate manager that loads profile, app, payment, license, currency, and options data with one batched REST call, plus wires the Pull client.",{"title":206,"path":207,"stem":208,"restApiVersion":15,"category":203,"description":209,"badge":15},"useB24Helper","\u002Fdocs\u002Fworking-with-the-rest-api\u002Fhelper-use-b24-helper","docs\u002F2.working-with-the-rest-api\u002F51.helper-use-b24-helper","Closure-based composable that owns a single B24HelperManager instance and exposes lifecycle helpers (init \u002F destroy \u002F Pull client glue).",{"title":211,"path":212,"stem":213,"restApiVersion":15,"category":203,"description":214,"badge":15},"ProfileManager","\u002Fdocs\u002Fworking-with-the-rest-api\u002Fhelper-profile-manager","docs\u002F2.working-with-the-rest-api\u002F52.helper-profile-manager","Parsed `profile` REST response: id, name, last name, gender, photo, time zone, admin flag.",{"title":216,"path":217,"stem":218,"restApiVersion":15,"category":203,"description":219,"badge":15},"AppManager","\u002Fdocs\u002Fworking-with-the-rest-api\u002Fhelper-app-manager","docs\u002F2.working-with-the-rest-api\u002F53.helper-app-manager","Parsed `app.info` REST response: app id, code, version, status, install flag.",{"title":221,"path":222,"stem":223,"restApiVersion":15,"category":203,"description":224,"badge":15},"PaymentManager","\u002Fdocs\u002Fworking-with-the-rest-api\u002Fhelper-payment-manager","docs\u002F2.working-with-the-rest-api\u002F54.helper-payment-manager","Payment status of a Bitrix24 application — extracted from `app.info`.",{"title":226,"path":227,"stem":228,"restApiVersion":15,"category":203,"description":229,"badge":15},"LicenseManager","\u002Fdocs\u002Fworking-with-the-rest-api\u002Fhelper-license-manager","docs\u002F2.working-with-the-rest-api\u002F55.helper-license-manager","Bitrix24 license info from `app.info` — and an automatic restriction-manager retune for the matching tariff plan.",{"title":231,"path":232,"stem":233,"restApiVersion":15,"category":203,"description":234,"badge":15},"CurrencyManager","\u002Fdocs\u002Fworking-with-the-rest-api\u002Fhelper-currency-manager","docs\u002F2.working-with-the-rest-api\u002F56.helper-currency-manager","Currency catalogue cached in memory — base currency, per-currency formatters, and number-to-string formatter.",{"title":236,"path":237,"stem":238,"restApiVersion":15,"category":203,"description":239,"badge":15},"OptionsManager","\u002Fdocs\u002Fworking-with-the-rest-api\u002Fhelper-options-manager","docs\u002F2.working-with-the-rest-api\u002F57.helper-options-manager","Typed access to `app.option.get` \u002F `user.option.get`, plus a save() that batches `*.option.set` with an optional Pull notification.",{"title":241,"path":242,"stem":243,"restApiVersion":15,"category":15,"description":244,"badge":15},"Errors","\u002Fdocs\u002Fworking-with-the-rest-api\u002Ferrors","docs\u002F2.working-with-the-rest-api\u002F6.errors","Reference for SdkError and AjaxError codes raised by the SDK, plus the Bitrix24 REST error codes that surface through them.",{"title":246,"path":247,"stem":248,"restApiVersion":15,"category":246,"description":249,"badge":15},"Pull","\u002Fdocs\u002Fworking-with-the-rest-api\u002Fpull","docs\u002F2.working-with-the-rest-api\u002F60.pull","Real-time message stream from Bitrix24 to your application — WebSocket primary, long-polling fallback. Frame-only.",{"title":251,"path":252,"stem":253,"restApiVersion":15,"category":254,"description":255,"badge":15},"Logger","\u002Fdocs\u002Fworking-with-the-rest-api\u002Flogger","docs\u002F2.working-with-the-rest-api\u002F66.logger","logger","Logger inspired by PHP Monolog, provides a structured logging system with support for channels, handlers, processors, and formatters. Implementation follows PSR-3 principles and the chain of responsibility pattern.",{"title":257,"path":258,"stem":259,"restApiVersion":15,"category":254,"description":260,"badge":15},"Telegram","\u002Fdocs\u002Fworking-with-the-rest-api\u002Flogger-telegram","docs\u002F2.working-with-the-rest-api\u002F66.logger-telegram","Sending logs to Telegram",{"title":262,"path":263,"stem":264,"restApiVersion":15,"category":15,"description":265,"badge":15},"Discovering v3 methods","\u002Fdocs\u002Fworking-with-the-rest-api\u002Fdiscovering-v3-methods","docs\u002F2.working-with-the-rest-api\u002F7.discovering-v3-methods","Use rest.documentation.openapi to fetch the portal's own machine-readable list of every available REST API v3 method — the source of truth the SDK relies on instead of a hardcoded allowlist. Especially useful for AI agents and codegen.",{"title":267,"path":268,"stem":269,"restApiVersion":15,"category":270,"description":271,"badge":15},"AjaxResult","\u002Fdocs\u002Fworking-with-the-rest-api\u002Fcore-ajax-result","docs\u002F2.working-with-the-rest-api\u002F70.core-ajax-result","Core","Specialised Result returned by every REST helper. Provides `isMore() \u002F getNext() \u002F getTotal() \u002F getStatus()` for paged responses, and immutable data.",{"title":273,"path":274,"stem":275,"restApiVersion":15,"category":270,"description":276,"badge":15},"Http","\u002Fdocs\u002Fworking-with-the-rest-api\u002Fcore-http","docs\u002F2.working-with-the-rest-api\u002F70.core-http","Low-level transport interface returned by `b24.getHttpClient(version)`. Direct access to the axios-based clients, restriction params, statistics, and reset.",{"title":278,"path":279,"stem":280,"restApiVersion":15,"category":270,"description":281,"badge":15},"B24LangList","\u002Fdocs\u002Fworking-with-the-rest-api\u002Fcore-lang-list","docs\u002F2.working-with-the-rest-api\u002F70.core-lang-list","Enum of Bitrix24 cloud interface languages plus the BCP-47 locale map.",{"title":283,"path":284,"stem":285,"restApiVersion":15,"category":270,"description":286,"badge":15},"RequestIdGenerator","\u002Fdocs\u002Fworking-with-the-rest-api\u002Fcore-request-id-generator","docs\u002F2.working-with-the-rest-api\u002F70.core-request-id-generator","Default `IRequestIdGenerator` implementation. Generates UUID v7 request ids and exposes the header \u002F query parameter names used by the SDK.",{"title":288,"path":289,"stem":290,"restApiVersion":15,"category":270,"description":291,"badge":15},"Result","\u002Fdocs\u002Fworking-with-the-rest-api\u002Fcore-result","docs\u002F2.working-with-the-rest-api\u002F70.core-result","Generic operation result with success flag, data, and an error map. Analogue of \\\\Bitrix\\\\Main\\\\Result from the Bitrix Framework.",{"title":293,"path":294,"stem":295,"restApiVersion":15,"category":296,"description":297,"badge":15},"Limiters","\u002Fdocs\u002Fworking-with-the-rest-api\u002Flimiters","docs\u002F2.working-with-the-rest-api\u002F77.limiters","limiters","The restrictions system provides a comprehensive mechanism for managing request frequency, operation execution time, and adaptive delays.",{"title":299,"path":300,"stem":301,"restApiVersion":15,"category":302,"description":303,"badge":15},"Logging & Redaction","\u002Fdocs\u002Fworking-with-the-rest-api\u002Flogging","docs\u002F2.working-with-the-rest-api\u002F78.logging","logging","What the SDK redacts automatically before any request information enters the logger or an AjaxError, what it does not redact, and how to wire a custom logger via setLogger(...) without re-introducing credential leaks.",{"title":305,"path":306,"stem":307,"restApiVersion":15,"category":15,"description":308,"badge":15},"Security","\u002Fdocs\u002Fworking-with-the-rest-api\u002Fsecurity","docs\u002F2.working-with-the-rest-api\u002F79.security","Two hardening patterns for any server that receives Bitrix24 outbound events or OAuth install\u002Funinstall callbacks: reply 200 before you verify, and compare application_token in constant time.",{"title":310,"path":311,"stem":312,"restApiVersion":15,"category":15,"description":313,"badge":15},"Discovering entity fields","\u002Fdocs\u002Fworking-with-the-rest-api\u002Fdiscovering-entity-fields","docs\u002F2.working-with-the-rest-api\u002F8.discovering-entity-fields","Ask the portal which fields an entity has, what type each one is, and whether it can be filtered, sorted or written — instead of guessing them or downloading the whole OpenAPI document. Also states the v3 camelCase field-name rule.",{"title":315,"path":316,"stem":317,"restApiVersion":15,"category":318,"description":319,"badge":15},"Browser","\u002Fdocs\u002Fworking-with-the-rest-api\u002Ftools-browser","docs\u002F2.working-with-the-rest-api\u002F80.tools-browser","tools","Cheap user-agent \u002F platform \u002F capability detector. Useful for runtime branches in front-end code.",{"title":321,"path":322,"stem":323,"restApiVersion":15,"category":318,"description":324,"badge":15},"Environment","\u002Fdocs\u002Fworking-with-the-rest-api\u002Ftools-environment","docs\u002F2.working-with-the-rest-api\u002F80.tools-environment","Runtime environment detection — `getEnvironment()`, `isBrowserLikeRuntime()` and the `Environment` enum for branching between browser, worker and Node.js code paths.",{"title":326,"path":327,"stem":328,"restApiVersion":15,"category":318,"description":329,"badge":15},"Object helpers","\u002Fdocs\u002Fworking-with-the-rest-api\u002Ftools-object-helpers","docs\u002F2.working-with-the-rest-api\u002F80.tools-object-helpers","Tiny, dependency-free object and enum helpers — `pick`, `omit`, `getEnumValue`, and the `isArrayOfArray` type guard.",{"title":331,"path":332,"stem":333,"restApiVersion":15,"category":318,"description":334,"badge":15},"Text","\u002Fdocs\u002Fworking-with-the-rest-api\u002Ftools-text","docs\u002F2.working-with-the-rest-api\u002F80.tools-text","Text and date utilities — UUID v4 \u002F v7, encode \u002F decode HTML entities, type conversions, case helpers, Luxon-backed `toDateTime` \u002F `toB24Format`, number formatting, and query-string builder.",{"title":336,"path":337,"stem":338,"restApiVersion":15,"category":318,"description":339,"badge":15},"Type","\u002Fdocs\u002Fworking-with-the-rest-api\u002Ftools-type","docs\u002F2.working-with-the-rest-api\u002F80.tools-type","Runtime type guards — strings, numbers, plain objects, arrays, DOM nodes, Blobs, FormData, JSON-RPC message shapes.",{"title":341,"path":342,"stem":343,"restApiVersion":15,"category":318,"description":344,"badge":15},"useFormatter","\u002Fdocs\u002Fworking-with-the-rest-api\u002Ftools-use-formatters","docs\u002F2.working-with-the-rest-api\u002F80.tools-use-formatters","Composable that returns shared `FormatterNumbers` and `FormatterIban` instances pre-configured with country specifications.",{"title":346,"path":347,"stem":348,"restApiVersion":15,"category":349,"description":350,"badge":15},"Common","\u002Fdocs\u002Fworking-with-the-rest-api\u002Ftypes-common","docs\u002F2.working-with-the-rest-api\u002F90.types-common","Types","Foundational building blocks used across the SDK — scalar string aliases, field-metadata shapes (Fields, MultiField, UserFieldType), and the DataType enum.",{"title":352,"path":353,"stem":354,"children":355,"restApiVersion":15,"category":349,"description":357,"badge":15},"Types overview","\u002Fdocs\u002Fworking-with-the-rest-api\u002Ftypes-index","docs\u002F2.working-with-the-rest-api\u002F90.types-index",[356],{"title":352,"path":353,"stem":354,"restApiVersion":15,"category":349,"description":357,"badge":15},"Navigable map of every types\u002F* module in the SDK — which have a dedicated page, which are surfaced through another page, and which are follow-ups.",{"title":359,"path":360,"stem":361,"restApiVersion":15,"category":349,"description":362,"badge":15},"IResult","\u002Fdocs\u002Fworking-with-the-rest-api\u002Ftypes-iresult","docs\u002F2.working-with-the-rest-api\u002F90.types-iresult","Generic operation-result interface. Implemented by `Result\u003CT>` and (transitively) by `AjaxResult\u003CT>`.",{"title":364,"path":365,"stem":366,"restApiVersion":15,"category":349,"description":367,"badge":15},"Payloads","\u002Fdocs\u002Fworking-with-the-rest-api\u002Ftypes-payloads","docs\u002F2.working-with-the-rest-api\u002F90.types-payloads","The REST response envelope — PayloadTime, GetPayload, ListPayload, BatchPayload, SuccessPayload, and the Payload union, with a note on the v2 vs v3 envelope status.",{"title":369,"path":370,"stem":371,"restApiVersion":15,"category":349,"description":372,"badge":15},"TypeB24","\u002Fdocs\u002Fworking-with-the-rest-api\u002Ftypes-type-b24","docs\u002F2.working-with-the-rest-api\u002F90.types-type-b24","Public contract implemented by every entry-point class (B24Frame, B24Hook, B24OAuth). Single source of truth for the SDK surface.",{"title":374,"path":375,"stem":376,"restApiVersion":15,"category":270,"description":377,"badge":15},"Telemetry","\u002Fdocs\u002Fworking-with-the-rest-api\u002Ftelemetry","docs\u002F2.working-with-the-rest-api\u002F95.telemetry","Request id, SDK version, and SDK type query parameters added to every Bitrix24 REST call.",{"title":379,"path":380,"stem":381,"restApiVersion":15,"category":270,"description":382,"badge":15},"Error Codes","\u002Fdocs\u002Fworking-with-the-rest-api\u002Ferror-codes","docs\u002F2.working-with-the-rest-api\u002F96.error-codes","Codes with a pinned classification — \"hard\" (thrown) and \"soft\" (returned as AjaxError inside AjaxResult) — and the category rule that covers everything else on restApi:v3.",{"title":384,"path":385,"stem":386,"restApiVersion":15,"category":318,"description":387,"badge":15},"HealthCheck","\u002Fdocs\u002Fworking-with-the-rest-api\u002Ftools-health-check","docs\u002F2.working-with-the-rest-api\u002Ftools-health-check","Method for checking the availability of Bitrix24 REST API. Performs a simple request to the REST API to verify service health.",{"title":389,"path":390,"stem":391,"restApiVersion":15,"category":318,"description":392,"badge":15},"Ping","\u002Fdocs\u002Fworking-with-the-rest-api\u002Ftools-ping","docs\u002F2.working-with-the-rest-api\u002Ftools-ping","Method for measuring Bitrix24 REST API response speed. Performs a test request and returns response time in milliseconds.",{"title":394,"path":395,"stem":396,"children":397,"restApiVersion":15,"category":15,"description":15,"badge":15},"API Reference","\u002Fdocs\u002Fapi-reference","docs\u002F3.api-reference\u002F1.index",[398],{"title":394,"path":395,"stem":396,"restApiVersion":15,"category":15,"description":399,"badge":15},"Index of the public @bitrix24\u002Fb24jssdk surface, grouped by domain — every value export, what it is, and where its guide and source live.",{"title":401,"path":402,"stem":403,"children":404,"restApiVersion":15,"category":15,"description":15,"badge":15},"Examples","\u002Fdocs\u002Fexamples","docs\u002F99.examples\u002F0.index",[405,407,413,418,423,428,433,438,443,448,453,458,463,468,473,478,483,488,493,498,503],{"title":89,"path":402,"stem":403,"restApiVersion":15,"category":15,"description":406,"badge":15},"Recipes that pair the SDK with realistic scenarios — CRM analytics, mass messaging, AI assistants, OAuth installs, and more. Each recipe is a single, copy-paste-friendly file.",{"title":408,"path":409,"stem":410,"restApiVersion":15,"category":411,"description":412,"badge":15},"CRM analytics","\u002Fdocs\u002Fexamples\u002Fcrm-analytics","docs\u002F99.examples\u002F1.crm-analytics","examples","Stream all deals via actions.v2.fetchList.make, group by stage, print a funnel report (counts, conversion %, avg ticket, win rate).",{"title":414,"path":415,"stem":416,"restApiVersion":15,"category":411,"description":417,"badge":15},"Deals → CSV","\u002Fdocs\u002Fexamples\u002Fdashboard-deals-csv","docs\u002F99.examples\u002F1.dashboard-deals-csv","Stream every CRM deal that matches a date filter into a CSV file using a webhook and FetchListV2.",{"title":419,"path":420,"stem":421,"restApiVersion":15,"category":15,"description":422,"badge":15},"Entity List","\u002Fdocs\u002Fexamples\u002Fentity-list","docs\u002F99.examples\u002F10.entity-list","Render a paged Bitrix24 entity list with B24UI components and the SDK callList action.",{"title":424,"path":425,"stem":426,"restApiVersion":15,"category":411,"description":427,"badge":15},"Error handling","\u002Fdocs\u002Fexamples\u002Ferror-handling","docs\u002F99.examples\u002F10.error-handling","Demonstrates the four error layers (SdkError \u002F AjaxError \u002F network \u002F soft) and the hardErrorCodes \u002F softErrorCodes \u002F retryOnNetworkError knobs on the restriction manager.",{"title":429,"path":430,"stem":431,"restApiVersion":15,"category":411,"description":432,"badge":15},"Event registration","\u002Fdocs\u002Fexamples\u002Fevent-registration","docs\u002F99.examples\u002F11.event-registration","CLI tool — list, bind, and unbind Bitrix24 outbound webhook events via event.get \u002F event.bind \u002F event.unbind. Pairs with the webhook handler recipe.",{"title":434,"path":435,"stem":436,"restApiVersion":15,"category":411,"description":437,"badge":15},"OAuth install","\u002Fdocs\u002Fexamples\u002Foauth-install","docs\u002F99.examples\u002F12.oauth-install","Express server that handles ONAPPINSTALL \u002F ONAPPUPDATE \u002F ONAPPUNINSTALL events for a Bitrix24 marketplace app, persists tokens per portal, and builds a B24OAuth client on demand with a refresh callback wired to storage.",{"title":439,"path":440,"stem":441,"restApiVersion":15,"category":411,"description":442,"badge":15},"Frame app skeleton","\u002Fdocs\u002Fexamples\u002Fframe-app-skeleton","docs\u002F99.examples\u002F2.frame-app-skeleton","Minimum viable Bitrix24 iframe app: init handshake, set title, persist app state, open a slider, close cleanly.",{"title":444,"path":445,"stem":446,"restApiVersion":15,"category":411,"description":447,"badge":15},"Mass messaging","\u002Fdocs\u002Fexamples\u002Fmass-messaging","docs\u002F99.examples\u002F2.mass-messaging","Filter contacts in CRM, personalise a template, send IM notifications to assigned managers.",{"title":449,"path":450,"stem":451,"restApiVersion":15,"category":15,"description":452,"badge":15},"Installation Wizard","\u002Fdocs\u002Fexamples\u002Fapp-installation-wizard","docs\u002F99.examples\u002F20.app-installation-wizard","Multi-step install flow that creates user fields, registers placements, celebrates with confetti, and finalises the installation last — because the portal reloads the page in response.",{"title":454,"path":455,"stem":456,"restApiVersion":15,"category":411,"description":457,"badge":15},"Task automation","\u002Fdocs\u002Fexamples\u002Ftask-automation","docs\u002F99.examples\u002F3.task-automation","Poll deal stages every 60 s. When a watched transition fires, create a task with description, deadline and priority.",{"title":459,"path":460,"stem":461,"restApiVersion":15,"category":411,"description":462,"badge":15},"Webhook CLI","\u002Fdocs\u002Fexamples\u002Fwebhook-cli-node","docs\u002F99.examples\u002F3.webhook-cli-node","A 30-line Node script that authenticates against a Bitrix24 portal via inbound webhook and prints the calling user — useful as the first thing you run after creating a webhook.",{"title":464,"path":465,"stem":466,"restApiVersion":15,"category":15,"description":467,"badge":15},"Node + Hook Export","\u002Fdocs\u002Fexamples\u002Fnode-hook-company-export","docs\u002F99.examples\u002F30.node-hook-company-export","Export Bitrix24 companies into a CSV file from a pure Node.js script using B24Hook.",{"title":469,"path":470,"stem":471,"restApiVersion":15,"category":411,"description":472,"badge":15},"Bulk update","\u002Fdocs\u002Fexamples\u002Fbulk-update-deals","docs\u002F99.examples\u002F4.bulk-update-deals","Migrate thousands of CRM deals to a new stage using BatchByChunkV2 — automatic chunking, partial-error handling, and a single progress line.",{"title":474,"path":475,"stem":476,"restApiVersion":15,"category":411,"description":477,"badge":15},"ERP sync","\u002Fdocs\u002Fexamples\u002Ferp-sync","docs\u002F99.examples\u002F4.erp-sync","Two-way contact sync between Bitrix24 and an external ERP. Match by INN (primary) or email (fallback). Cron every hour.",{"title":479,"path":480,"stem":481,"restApiVersion":15,"category":411,"description":482,"badge":15},"Disk files","\u002Fdocs\u002Fexamples\u002Fdisk-files","docs\u002F99.examples\u002F5.disk-files","List storages and folder children, create subfolders, inspect files. File upload (multipart) is intentionally out of scope.",{"title":484,"path":485,"stem":486,"restApiVersion":15,"category":411,"description":487,"badge":15},"Pull subscribe","\u002Fdocs\u002Fexamples\u002Fpull-subscribe-frame","docs\u002F99.examples\u002F5.pull-subscribe-frame","Open a live channel from a Bitrix24 frame app and react to push events using useB24Helper + the Pull client.",{"title":489,"path":490,"stem":491,"restApiVersion":15,"category":411,"description":492,"badge":15},"Telegram bot","\u002Fdocs\u002Fexamples\u002Ftelegram-bot","docs\u002F99.examples\u002F6.telegram-bot","Poll new CRM deals every two minutes; notify a Telegram chat with an HTML-formatted card.",{"title":494,"path":495,"stem":496,"restApiVersion":15,"category":411,"description":497,"badge":15},"Webhook handler","\u002Fdocs\u002Fexamples\u002Fwebhook-handler","docs\u002F99.examples\u002F7.webhook-handler","Express server that receives Bitrix24 outbound events, fetches details via REST, dispatches by event name. Always returns 200.",{"title":499,"path":500,"stem":501,"restApiVersion":15,"category":411,"description":502,"badge":15},"AI assistant","\u002Fdocs\u002Fexamples\u002Fai-assistant","docs\u002F99.examples\u002F8.ai-assistant","Load a deal and its activities, ask GPT-4o for the next-best action, create a task bound to the deal with priority and deadline.",{"title":504,"path":505,"stem":506,"restApiVersion":15,"category":411,"description":507,"badge":15},"Web search + LLM","\u002Fdocs\u002Fexamples\u002Fweb-search-llm","docs\u002F99.examples\u002F9.web-search-llm","Two-step RAG: ask any web-search provider, run the result through your LLM with [N] citations, post the answer as a CRM timeline comment on a deal.",{"id":509,"title":379,"audited":15,"badge":15,"body":510,"category":270,"cookbookOrder":15,"description":382,"extension":2302,"featured":47,"links":2303,"meta":2308,"navigation":2309,"path":380,"restApiVersion":15,"scopes":15,"seo":2310,"stack":15,"stem":381,"__hash__":2311},"docs\u002Fdocs\u002F2.working-with-the-rest-api\u002F96.error-codes.md",{"type":511,"value":512,"toc":2291},"minimark",[513,522,566,578,585,590,597,630,654,661,672,880,891,897,925,935,946,981,985,991,1528,1534,1549,1687,1691,1700,1719,1736,1755,1761,1780,1893,1896,2287],[514,515,516,517,521],"p",{},"A failed call reaches you in one of two ways, and the difference is ",[518,519,520],"strong",{},"delivery, not severity",":",[523,524,525,548],"ul",{},[526,527,528,531,532,543,544,547],"li",{},[518,529,530],{},"Hard"," — the promise rejects and the SDK throws ",[533,534,538],"code",{"className":535,"language":536,"style":537},"language-ts-type shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","ts-type","",[539,540,542],"span",{"class":541},"sBMFI","AjaxError"," (or a subclass). Handle it in ",[533,545,546],{},"try \u002F catch",".",[526,549,550,553,554,558,559,562,563,547],{},[518,551,552],{},"Soft"," — the promise resolves; the error is packed into the returned ",[533,555,556],{"className":535,"language":536,"style":537},[539,557,267],{"class":541}," and ",[533,560,561],{},"response.isSuccess === false",". Handle it with an ",[533,564,565],{},"if",[514,567,568,569,572,573,577],{},"Two things this split does ",[518,570,571],{},"not"," decide. It does not affect retries — any 4xx other than 408 and 429 stops retrying regardless, and a pinned code of either kind stops retrying too. And an ",[574,575,576],"em",{},"unlisted"," code behaves like a hard one: anything not classified as soft is thrown.",[514,579,580,581,547],{},"Everything else (network errors, 5xx, rate-limit codes) is subject to the retry strategy described in ",[582,583,293],"a",{"href":584},"\u002Fdocs\u002Fworking-with-the-rest-api\u002Flimiters\u002F",[586,587,589],"h2",{"id":588},"the-tables-are-not-a-catalogue","The tables are not a catalogue",[514,591,592,593,596],{},"The two tables below list codes whose classification is ",[518,594,595],{},"pinned",". They are not the set of codes a portal can send.",[514,598,599,600,603,604,607,608,611,612,615,616,558,619,622,623,558,626,629],{},"A ",[533,601,602],{},"restApi:v3"," code is derived from the exception class that raised it, so the set a build can produce grows with every portal module. One on-premise build was measured to ship at least ",[518,605,606],{},"39 distinct v3 codes","; the pinned soft list holds ",[518,609,610],{},"nine",". The rest are thrown today — including ",[533,613,614],{},"INVALIDPAGINATIONEXCEPTION",", ",[533,617,618],{},"UNKNOWNFILTEROPERATOREXCEPTION",[533,620,621],{},"INVALIDORDEREXCEPTION",", which are the same caller mistake, in the same request, at the same HTTP 400, as the ",[533,624,625],{},"INVALIDSELECTEXCEPTION",[533,627,628],{},"INVALIDFILTEREXCEPTION"," that are pinned soft.",[514,631,632,639,640,615,643,615,646,649,650,653],{},[518,633,634,635,638],{},"Do not match on the ",[533,636,637],{},"BITRIX_REST_V3_EXCEPTION_"," prefix, and do not derive a code by stripping it."," Modules ship their own v3 exceptions with short unprefixed codes — ",[533,641,642],{},"NOTE_SEARCH_QUERY_TOO_SHORT",[533,644,645],{},"NOTE_FILE_TOO_LARGE",[533,647,648],{},"CRM_EMAIL_INVALID_REQUEST"," and others. Match on the whole string or not at all. The ",[533,651,652],{},"message"," is localised and must never be matched on.",[586,655,657,658,660],{"id":656},"classification-by-category-restapiv3","Classification by category (",[533,659,602],{},")",[514,662,663,664,667,668,671],{},"Rather than growing the list, the SDK decides from the ",[518,665,666],{},"response itself",": an error that arrived in the v3 error envelope carrying an HTTP ",[518,669,670],{},"4xx other than 401, 408 or 429"," is soft, whatever its code. This needs no configuration — it is the behaviour.",[673,674,678],"pre",{"className":675,"code":676,"language":677,"meta":537,"style":537},"language-ts shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","\u002F\u002F const $b24 = ...\nconst response = await $b24.actions.v3.call.make({\n  method: 'main.eventlog.list',\n  params: { pagination: { limit: 0 } }\n})\n\n\u002F\u002F Reached for any 4xx the portal reports, not only the nine pinned codes.\nif (!response.isSuccess) {\n  console.log(response.getErrorMessages().join('; '))\n}\n","ts",[533,679,680,688,736,758,791,800,807,813,834,874],{"__ignoreMap":537},[539,681,684],{"class":682,"line":683},"line",1,[539,685,687],{"class":686},"sHwdD","\u002F\u002F const $b24 = ...\n",[539,689,691,695,699,703,707,710,712,714,716,719,721,724,726,730,733],{"class":682,"line":690},2,[539,692,694],{"class":693},"spNyl","const",[539,696,698],{"class":697},"sTEyZ"," response ",[539,700,702],{"class":701},"sMK4o","=",[539,704,706],{"class":705},"s7zQu"," await",[539,708,709],{"class":697}," $b24",[539,711,547],{"class":701},[539,713,96],{"class":697},[539,715,547],{"class":701},[539,717,718],{"class":697},"v3",[539,720,547],{"class":701},[539,722,723],{"class":697},"call",[539,725,547],{"class":701},[539,727,729],{"class":728},"s2Zo4","make",[539,731,732],{"class":697},"(",[539,734,735],{"class":701},"{\n",[539,737,739,743,745,748,752,755],{"class":682,"line":738},3,[539,740,742],{"class":741},"swJcz","  method",[539,744,521],{"class":701},[539,746,747],{"class":701}," '",[539,749,751],{"class":750},"sfazB","main.eventlog.list",[539,753,754],{"class":701},"'",[539,756,757],{"class":701},",\n",[539,759,761,764,766,769,772,774,776,779,781,785,788],{"class":682,"line":760},4,[539,762,763],{"class":741},"  params",[539,765,521],{"class":701},[539,767,768],{"class":701}," {",[539,770,771],{"class":741}," pagination",[539,773,521],{"class":701},[539,775,768],{"class":701},[539,777,778],{"class":741}," limit",[539,780,521],{"class":701},[539,782,784],{"class":783},"sbssI"," 0",[539,786,787],{"class":701}," }",[539,789,790],{"class":701}," }\n",[539,792,794,797],{"class":682,"line":793},5,[539,795,796],{"class":701},"}",[539,798,799],{"class":697},")\n",[539,801,803],{"class":682,"line":802},6,[539,804,806],{"emptyLinePlaceholder":805},true,"\n",[539,808,810],{"class":682,"line":809},7,[539,811,812],{"class":686},"\u002F\u002F Reached for any 4xx the portal reports, not only the nine pinned codes.\n",[539,814,816,818,821,824,827,829,832],{"class":682,"line":815},8,[539,817,565],{"class":705},[539,819,820],{"class":697}," (",[539,822,823],{"class":701},"!",[539,825,826],{"class":697},"response",[539,828,547],{"class":701},[539,830,831],{"class":697},"isSuccess) ",[539,833,735],{"class":701},[539,835,837,840,842,845,847,849,851,854,857,859,862,864,866,869,871],{"class":682,"line":836},9,[539,838,839],{"class":697},"  console",[539,841,547],{"class":701},[539,843,844],{"class":728},"log",[539,846,732],{"class":741},[539,848,826],{"class":697},[539,850,547],{"class":701},[539,852,853],{"class":728},"getErrorMessages",[539,855,856],{"class":741},"()",[539,858,547],{"class":701},[539,860,861],{"class":728},"join",[539,863,732],{"class":741},[539,865,754],{"class":701},[539,867,868],{"class":750},"; ",[539,870,754],{"class":701},[539,872,873],{"class":741},"))\n",[539,875,877],{"class":682,"line":876},10,[539,878,879],{"class":701},"}\n",[514,881,882,883,886,887,890],{},"The order of decision is fixed: a code in the hard list throws; a code in the soft list is soft; then the category rule; then, as today, it throws. So a pinned classification — including your own ",[533,884,885],{},"hardErrorCodes"," \u002F ",[533,888,889],{},"softErrorCodes"," — always outranks the category.",[514,892,893,894,896],{},"What the rule does ",[518,895,571],{}," touch:",[523,898,899,905,911,917],{},[526,900,901,904],{},[518,902,903],{},"5xx"," — not caller-addressable, so retry-then-throw stays right.",[526,906,907,910],{},[518,908,909],{},"401"," — the auth-refresh path owns it.",[526,912,913,916],{},[518,914,915],{},"408 and 429"," — the two retryable 4xx; an error still being retried has not been classified yet.",[526,918,919,924],{},[518,920,921],{},[533,922,923],{},"restApi:v2"," — the flat error body is not a v3 envelope. The decision is made from the body that actually arrived, never from the client's version, because a gateway in front of the v3 controller can answer in the flat shape.",[514,926,927,930,931,934],{},[518,928,929],{},"403 is soft",", deliberately. A permission refusal is something the caller can act on, and ",[533,932,933],{},"…ACCESSDENIEDEXCEPTION"," is already pinned soft — excluding 403 wholesale would leave one 403 returned and its neighbour thrown.",[514,936,937,938,941,942,945],{},"One 403 is pinned hard against that rule: ",[533,939,940],{},"BITRIX_REST_V3_EXCEPTION_INSUFFICIENTSCOPEEXCEPTION",". It means the application's OAuth grant is missing a scope — a configuration fault rather than a per-record permission check — and the v2 spelling of the same condition, ",[533,943,944],{},"insufficient_scope",", has always been thrown. The two are different strings, so without pinning the v3 form the same failure would have been delivered one way on v2 and another on v3.",[947,948,949],"caution",{},[514,950,951,954,955,958,959,962,963,966,967,969,970,972,973,976,977,547],{},[518,952,953],{},"Changed in 3.0.0."," Through the ",[533,956,957],{},"2.x"," line this rule was opt-in, behind a ",[533,960,961],{},"classifyV3ErrorsByCategory"," parameter; in ",[533,964,965],{},"3.0.0"," it is the behaviour and the parameter is gone. That changes how an error is delivered: a v3 4xx that threw under ",[533,968,957],{}," now resolves, so a ",[533,971,546],{}," around the call stops firing and control falls through into the success path. Move that handling to ",[533,974,975],{},"if (!response.isSuccess)"," — see the ",[582,978,980],{"href":979},"\u002Fdocs\u002Fgetting-started\u002Fmigration\u002Fv3\u002F#behaviour-v3-errors-are-classified-by-response-category","migration guide",[586,982,984],{"id":983},"pinned-hard-codes-thrown","Pinned hard codes (thrown)",[514,986,987,988,990],{},"These codes propagate through the promise rejection path and are never softened by the category rule. Wrap your calls in ",[533,989,546],{}," if you need to handle them centrally.",[992,993,994,1007],"table",{},[995,996,997],"thead",{},[998,999,1000,1004],"tr",{},[1001,1002,1003],"th",{},"Code",[1001,1005,1006],{},"Meaning",[1008,1009,1010,1021,1031,1041,1051,1061,1071,1081,1094,1104,1114,1124,1134,1146,1156,1166,1176,1185,1195,1205,1215,1225,1238,1254,1268,1278,1294,1310,1323,1335,1347,1366,1378,1388,1402,1412,1429,1447,1463,1476,1496],"tbody",{},[998,1011,1012,1018],{},[1013,1014,1015],"td",{},[533,1016,1017],{},"ERR_BAD_REQUEST",[1013,1019,1020],{},"Malformed request — usually fix the calling code.",[998,1022,1023,1028],{},[1013,1024,1025],{},[533,1026,1027],{},"JSSDK_UNKNOWN_ERROR",[1013,1029,1030],{},"SDK internal error of unknown shape.",[998,1032,1033,1038],{},[1013,1034,1035],{},[533,1036,1037],{},"100",[1013,1039,1040],{},"Generic legacy 100 code.",[998,1042,1043,1048],{},[1013,1044,1045],{},[533,1046,1047],{},"INTERNAL_SERVER_ERROR",[1013,1049,1050],{},"Server-side 500.",[998,1052,1053,1058],{},[1013,1054,1055],{},[533,1056,1057],{},"ERROR_UNEXPECTED_ANSWER",[1013,1059,1060],{},"Bitrix24 returned a body the SDK could not parse.",[998,1062,1063,1068],{},[1013,1064,1065],{},[533,1066,1067],{},"PORTAL_DELETED",[1013,1069,1070],{},"Portal no longer exists.",[998,1072,1073,1078],{},[1013,1074,1075],{},[533,1076,1077],{},"ERROR_BATCH_METHOD_NOT_ALLOWED",[1013,1079,1080],{},"Batch contains a method that is not allowed inside a batch.",[998,1082,1083,1088],{},[1013,1084,1085],{},[533,1086,1087],{},"ERROR_BATCH_LENGTH_EXCEEDED",[1013,1089,1090,1091,547],{},"Batch is over 50 commands. Use ",[533,1092,1093],{},"batchByChunk",[998,1095,1096,1101],{},[1013,1097,1098],{},[533,1099,1100],{},"NO_AUTH_FOUND",[1013,1102,1103],{},"Missing credentials.",[998,1105,1106,1111],{},[1013,1107,1108],{},[533,1109,1110],{},"INVALID_REQUEST",[1013,1112,1113],{},"Bitrix24 rejected the request shape.",[998,1115,1116,1121],{},[1013,1117,1118],{},[533,1119,1120],{},"OVERLOAD_LIMIT",[1013,1122,1123],{},"Tariff overload limit hit (different from rate limit).",[998,1125,1126,1131],{},[1013,1127,1128],{},[533,1129,1130],{},"expired_token",[1013,1132,1133],{},"OAuth access token expired and refresh failed.",[998,1135,1136,1140],{},[1013,1137,1138],{},[533,1139,940],{},[1013,1141,1142,1143,1145],{},"REST v3: the application's OAuth grant lacks a scope this method needs. The v3 spelling of ",[533,1144,944],{},"; pinned so the category rule does not soften it at 403.",[998,1147,1148,1153],{},[1013,1149,1150],{},[533,1151,1152],{},"ACCESS_DENIED",[1013,1154,1155],{},"Permission denied for the user.",[998,1157,1158,1163],{},[1013,1159,1160],{},[533,1161,1162],{},"INVALID_CREDENTIALS",[1013,1164,1165],{},"Webhook secret \u002F OAuth credentials invalid.",[998,1167,1168,1173],{},[1013,1169,1170],{},[533,1171,1172],{},"user_access_error",[1013,1174,1175],{},"User cannot access the resource.",[998,1177,1178,1182],{},[1013,1179,1180],{},[533,1181,944],{},[1013,1183,1184],{},"OAuth token scope is too narrow for the call.",[998,1186,1187,1192],{},[1013,1188,1189],{},[533,1190,1191],{},"ERROR_MANIFEST_IS_NOT_AVAILABLE",[1013,1193,1194],{},"App manifest fetch failed.",[998,1196,1197,1202],{},[1013,1198,1199],{},[533,1200,1201],{},"allowed_only_intranet_user",[1013,1203,1204],{},"Endpoint requires an intranet user.",[998,1206,1207,1212],{},[1013,1208,1209],{},[533,1210,1211],{},"NOT_FOUND",[1013,1213,1214],{},"Resource does not exist.",[998,1216,1217,1222],{},[1013,1218,1219],{},[533,1220,1221],{},"INVALID_ARG_VALUE",[1013,1223,1224],{},"One of the arguments has a value Bitrix24 rejected.",[998,1226,1227,1232],{},[1013,1228,1229],{},[533,1230,1231],{},"PULL_DISABLED",[1013,1233,1234,1237],{},[533,1235,1236],{},"PullClient.start()"," — Push & Pull server is disabled on the portal.",[998,1239,1240,1245],{},[1013,1241,1242],{},[533,1243,1244],{},"PULL_DISPOSED",[1013,1246,1247,1249,1250,1253],{},[533,1248,1236],{}," called after ",[533,1251,1252],{},"destroy()"," — create a new instance.",[998,1255,1256,1261],{},[1013,1257,1258],{},[533,1259,1260],{},"JSSDK_FRAME_DISPOSED",[1013,1262,1263,1264,1267],{},"A frame command was still waiting on the parent window when ",[533,1265,1266],{},"B24Frame.destroy()"," ran — nothing can answer it now.",[998,1269,1270,1275],{},[1013,1271,1272],{},[533,1273,1274],{},"JSSDK_FRAME_BAD_PAYLOAD",[1013,1276,1277],{},"The parent window answered a frame command with a payload that is not valid JSON.",[998,1279,1280,1285],{},[1013,1281,1282],{},[533,1283,1284],{},"JSSDK_FRAME_APP_SID_NOT_INIT",[1013,1286,1287,1290,1291,547],{},[533,1288,1289],{},"getAppSid()"," before the frame handshake completed — the parent never delivered an ",[533,1292,1293],{},"appSid",[998,1295,1296,1301],{},[1013,1297,1298],{},[533,1299,1300],{},"JSSDK_FRAME_INSTALL_ALREADY_FINISHED",[1013,1302,1303,1306,1307,547],{},[533,1304,1305],{},"installFinish()"," called outside install mode — guard with ",[533,1308,1309],{},"isInstallMode",[998,1311,1312,1317],{},[1013,1313,1314],{},[533,1315,1316],{},"JSSDK_HOOK_URL_EMPTY",[1013,1318,1319,1322],{},[533,1320,1321],{},"B24Hook.fromWebhookUrl()"," — the URL is empty.",[998,1324,1325,1330],{},[1013,1326,1327],{},[533,1328,1329],{},"JSSDK_HOOK_URL_INVALID",[1013,1331,1332,1334],{},[533,1333,1321],{}," — the URL does not parse. The message never echoes the URL: it carries the secret.",[998,1336,1337,1342],{},[1013,1338,1339],{},[533,1340,1341],{},"JSSDK_HOOK_URL_NOT_HTTPS",[1013,1343,1344,1346],{},[533,1345,1321],{}," — webhooks require HTTPS.",[998,1348,1349,1354],{},[1013,1350,1351],{},[533,1352,1353],{},"JSSDK_HOOK_URL_MALFORMED",[1013,1355,1356,1358,1359,1362,1363,547],{},[533,1357,1321],{}," — the path is not ",[533,1360,1361],{},"\u002Frest\u002F\u003CuserId>\u002F\u003Csecret>"," or ",[533,1364,1365],{},"\u002Frest\u002Fapi\u002F\u003CuserId>\u002F\u003Csecret>",[998,1367,1368,1373],{},[1013,1369,1370],{},[533,1371,1372],{},"JSSDK_HOOK_URL_USER_ID_NOT_NUMERIC",[1013,1374,1375,1377],{},[533,1376,1321],{}," — the userId segment is not numeric (a transposed URL puts the secret there; the message never echoes it).",[998,1379,1380,1385],{},[1013,1381,1382],{},[533,1383,1384],{},"JSSDK_OAUTH_TOKEN_REFRESH_FAILED",[1013,1386,1387],{},"The OAuth server answered the token refresh with an error payload.",[998,1389,1390,1395],{},[1013,1391,1392],{},[533,1393,1394],{},"JSSDK_OAUTH_TOKEN_REFRESH_BAD_STATUS",[1013,1396,1397,1398,1401],{},"The token refresh returned a non-200 status (carried as ",[533,1399,1400],{},"status",").",[998,1403,1404,1409],{},[1013,1405,1406],{},[533,1407,1408],{},"JSSDK_OAUTH_TOKEN_REFRESH_NO_DATA",[1013,1410,1411],{},"The token refresh produced no authorization data.",[998,1413,1414,1419],{},[1013,1415,1416],{},[533,1417,1418],{},"JSSDK_OAUTH_IS_ADMIN_NOT_INIT",[1013,1420,1421,1424,1425,1428],{},[533,1422,1423],{},"isAdmin"," read before ",[533,1426,1427],{},"B24OAuth.initIsAdmin()"," populated it.",[998,1430,1431,1436],{},[1013,1432,1433],{},[533,1434,1435],{},"JSSDK_OAUTH_PROFILE_FAILED",[1013,1437,1438,1439,1442,1443,1446],{},"The ",[533,1440,1441],{},"profile"," call behind ",[533,1444,1445],{},"initIsAdmin()"," failed; the description carries the portal's error text.",[998,1448,1449,1454],{},[1013,1450,1451],{},[533,1452,1453],{},"JSSDK_HELPER_NOT_INIT",[1013,1455,599,1456,1459,1460,547],{},[533,1457,1458],{},"useB24Helper()"," accessor before ",[533,1461,1462],{},"initB24Helper()",[998,1464,1465,1470],{},[1013,1466,1467],{},[533,1468,1469],{},"JSSDK_HELPER_PULL_CLIENT_NOT_INIT",[1013,1471,1472,1473,547],{},"A Pull accessor before ",[533,1474,1475],{},"usePullClient()",[998,1477,1478,1483],{},[1013,1479,1480],{},[533,1481,1482],{},"JSSDK_HTTP_INVALID_IDEMPOTENCY_KEY",[1013,1484,1485,1488,1489,1492,1493,1495],{},[533,1486,1487],{},"idempotencyKey"," is not 1-255 printable ASCII characters (",[533,1490,1491],{},"0x21-0x7E","). ",[533,1494,602],{}," only — the v2 transport drops the key with a warning instead. Thrown before the request leaves; the message never echoes the key.",[998,1497,1498,1503],{},[1013,1499,1500],{},[533,1501,1502],{},"JSSDK_HTTP_REDIRECT_BLOCKED",[1013,1504,1505,1506,1509,1510,1513,1514,1516,1517,1520,1521,1524,1525,1527],{},"A redirect answered a request whose effective ",[533,1507,1508],{},"maxRedirects"," is ",[533,1511,1512],{},"0"," — by default just one, a ",[533,1515,602],{}," batch on a non-hook transport carrying an access token a redirect to a subdomain would take along; set ",[533,1518,1519],{},"maxRedirects: 0"," yourself and every status-0 answer lands here. Raised where the refusal is otherwise invisible: on the ",[533,1522,1523],{},"fetch"," adapter the response is opaque (status 0, empty body) and axios resolves it. Outside a browser the same refusal arrives as a plain 301; with the default configuration a hook transport never reaches this code at all, since a webhook sends no token and so never carries ",[533,1526,1519],{},". Deterministic, so it is not retried. Point the SDK at the final URL.",[586,1529,1531,1532,660],{"id":1530},"pinned-soft-codes-returned-in-ajaxresult","Pinned soft codes (returned in ",[533,1533,267],{},[514,1535,1536,1537,1540,1541,1544,1545,1548],{},"These codes do not throw — they appear in ",[533,1538,1539],{},"result.getErrors()"," (and ",[533,1542,1543],{},"getErrorMessages()","). Check ",[533,1546,1547],{},"isSuccess"," first. With the category rule on, many more v3 codes join them without being listed here.",[992,1550,1551,1559],{},[995,1552,1553],{},[998,1554,1555,1557],{},[1001,1556,1003],{},[1001,1558,1006],{},[1008,1560,1561,1571,1581,1591,1601,1633,1643,1653,1663,1677],{},[998,1562,1563,1568],{},[1013,1564,1565],{},[533,1566,1567],{},"ERROR_ENTITY_NOT_FOUND",[1013,1569,1570],{},"REST v2: entity row does not exist.",[998,1572,1573,1578],{},[1013,1574,1575],{},[533,1576,1577],{},"BITRIX_REST_V3_EXCEPTION_ACCESSDENIEDEXCEPTION",[1013,1579,1580],{},"REST v3: permission denied.",[998,1582,1583,1588],{},[1013,1584,1585],{},[533,1586,1587],{},"BITRIX_REST_V3_EXCEPTION_INVALIDJSONEXCEPTION",[1013,1589,1590],{},"REST v3: payload is not valid JSON.",[998,1592,1593,1598],{},[1013,1594,1595],{},[533,1596,1597],{},"BITRIX_REST_V3_EXCEPTION_INVALIDFILTEREXCEPTION",[1013,1599,1600],{},"REST v3: malformed filter.",[998,1602,1603,1608],{},[1013,1604,1605],{},[533,1606,1607],{},"BITRIX_REST_V3_EXCEPTION_INVALIDSELECTEXCEPTION",[1013,1609,1610,1611,1614,1615,1618,1619,558,1622,1625,1626,1628,1629,547],{},"REST v3: malformed ",[533,1612,1613],{},"select"," — ",[518,1616,1617],{},"or"," a batch whose body is not a list of commands. The portal reads every top-level entry of a batch body as a command and needs ",[533,1620,1621],{},"method",[533,1623,1624],{},"query"," on each, so one entry missing ",[533,1627,1624],{},", or an extra entry that is not a command at all, fails the whole batch under this code. Where the credential travels differs per runtime, and a browser is the awkward one: see ",[582,1630,1632],{"href":1631},"\u002Fdocs\u002Fworking-with-the-rest-api\u002Fbatch-rest-api-ver3\u002F#limitations","BatchV3 Limitations",[998,1634,1635,1640],{},[1013,1636,1637],{},[533,1638,1639],{},"BITRIX_REST_V3_EXCEPTION_ENTITYNOTFOUNDEXCEPTION",[1013,1641,1642],{},"REST v3: entity does not exist.",[998,1644,1645,1650],{},[1013,1646,1647],{},[533,1648,1649],{},"BITRIX_REST_V3_EXCEPTION_METHODNOTFOUNDEXCEPTION",[1013,1651,1652],{},"REST v3: method does not exist.",[998,1654,1655,1660],{},[1013,1656,1657],{},[533,1658,1659],{},"BITRIX_REST_V3_EXCEPTION_UNKNOWNDTOPROPERTYEXCEPTION",[1013,1661,1662],{},"REST v3: unknown DTO property.",[998,1664,1665,1670],{},[1013,1666,1667],{},[533,1668,1669],{},"BITRIX_REST_V3_EXCEPTION_VALIDATION_REQUESTVALIDATIONEXCEPTION",[1013,1671,1672,1673,1676],{},"REST v3: request-level validation failed. ",[533,1674,1675],{},"error.validation[]"," carries field-level details.",[998,1678,1679,1684],{},[1013,1680,1681],{},[533,1682,1683],{},"BITRIX_REST_V3_EXCEPTION_VALIDATION_DTOVALIDATIONEXCEPTION",[1013,1685,1686],{},"REST v3: DTO-level validation failed.",[586,1688,1690],{"id":1689},"retry-triggering-codes","Retry-Triggering Codes",[514,1692,1693,1694,1699],{},"These are not in the catalog above — they are detected by the ",[582,1695,1696],{"href":584},[533,1697,1698],{},"RestrictionManager"," and trigger automatic retries with backoff:",[523,1701,1702,1709,1716],{},[526,1703,1704,1705,1708],{},"HTTP 503 \u002F ",[533,1706,1707],{},"QUERY_LIMIT_EXCEEDED"," — rate limit.",[526,1710,1711,1712,1715],{},"HTTP 429 \u002F ",[533,1713,1714],{},"OPERATION_TIME_LIMIT"," — operating limit.",[526,1717,1718],{},"Any other transient code → exponential backoff with jitter.",[514,1720,1721,1722,1725,1726,1729,1730,1732,1733,1735],{},"After ",[533,1723,1724],{},"maxRetries"," (default ",[533,1727,1728],{},"3",") the SDK gives up and surfaces the underlying error with its real code (e.g. ",[533,1731,1707],{},") — thrown for hard codes, or returned in the ",[533,1734,267],{}," for soft codes.",[947,1737,1738],{},[514,1739,1740,1741,558,1744,1747,1748,1750,1751,1754],{},"Currently ",[533,1742,1743],{},"NETWORK_ERROR",[533,1745,1746],{},"REQUEST_TIMEOUT"," are ",[518,1749,571],{}," in the hard list, which means non-idempotent calls (e.g. ",[533,1752,1753],{},"crm.documentgenerator.document.add",") can be retried after a server-side timeout and create duplicates. If you hit this, consider wrapping the call in a manual idempotency key on your side.",[586,1756,1758,1759],{"id":1757},"working-with-ajaxerror","Working with ",[533,1760,542],{},[514,1762,1763,1764,1773,1774,1779],{},"Both buckets surface as ",[582,1765,1769],{"href":1766,"rel":1767},"https:\u002F\u002Fgithub.com\u002Fbitrix24\u002Fb24jssdk\u002Fblob\u002Fmain\u002Fpackages\u002Fjssdk\u002Fsrc\u002Fcore\u002Fhttp\u002Fajax-error.ts",[1768],"nofollow",[533,1770,1771],{"className":535,"language":536,"style":537},[539,1772,542],{"class":541}," (a subclass of ",[533,1775,1776],{"className":535,"language":536,"style":537},[539,1777,1778],{"class":541},"SdkError","). Useful properties:",[673,1781,1783],{"className":535,"code":1782,"language":536,"meta":537,"style":537},"class AjaxError extends SdkError {\n  readonly code: string\n  readonly message: string\n  readonly status: number\n  readonly requestInfo?: { method?: string, params?: TypeCallParams, requestId?: string, url?: string }\n}\n",[533,1784,1785,1802,1815,1826,1838,1889],{"__ignoreMap":537},[539,1786,1787,1790,1793,1796,1799],{"class":682,"line":683},[539,1788,1789],{"class":541},"class",[539,1791,1792],{"class":541}," AjaxError",[539,1794,1795],{"class":693}," extends",[539,1797,1798],{"class":541}," SdkError",[539,1800,1801],{"class":701}," {\n",[539,1803,1804,1807,1810,1812],{"class":682,"line":690},[539,1805,1806],{"class":693},"  readonly",[539,1808,1809],{"class":741}," code",[539,1811,521],{"class":701},[539,1813,1814],{"class":541}," string\n",[539,1816,1817,1819,1822,1824],{"class":682,"line":738},[539,1818,1806],{"class":693},[539,1820,1821],{"class":741}," message",[539,1823,521],{"class":701},[539,1825,1814],{"class":541},[539,1827,1828,1830,1833,1835],{"class":682,"line":760},[539,1829,1806],{"class":693},[539,1831,1832],{"class":741}," status",[539,1834,521],{"class":701},[539,1836,1837],{"class":541}," number\n",[539,1839,1840,1842,1845,1848,1850,1853,1855,1858,1861,1864,1866,1869,1871,1874,1876,1878,1880,1883,1885,1887],{"class":682,"line":793},[539,1841,1806],{"class":693},[539,1843,1844],{"class":741}," requestInfo",[539,1846,1847],{"class":701},"?:",[539,1849,768],{"class":701},[539,1851,1852],{"class":741}," method",[539,1854,1847],{"class":701},[539,1856,1857],{"class":541}," string",[539,1859,1860],{"class":701},",",[539,1862,1863],{"class":741}," params",[539,1865,1847],{"class":701},[539,1867,1868],{"class":541}," TypeCallParams",[539,1870,1860],{"class":701},[539,1872,1873],{"class":741}," requestId",[539,1875,1847],{"class":701},[539,1877,1857],{"class":541},[539,1879,1860],{"class":701},[539,1881,1882],{"class":741}," url",[539,1884,1847],{"class":701},[539,1886,1857],{"class":541},[539,1888,790],{"class":701},[539,1890,1891],{"class":682,"line":802},[539,1892,879],{"class":701},[514,1894,1895],{},"Pattern for unified handling:",[673,1897,1899],{"className":675,"code":1898,"language":677,"meta":537,"style":537},"import { AjaxError } from '@bitrix24\u002Fb24jssdk'\n\nasync function callWithUnifiedErrorHandling(method: string, params: Record\u003Cstring, unknown>, requestId: string) {\n  try {\n    const response = await $b24.actions.v3.call.make({ method, params, requestId })\n    if (!response.isSuccess) {\n      for (const error of response.getErrors()) {\n        if (error instanceof AjaxError) {\n          \u002F\u002F Soft error\n          console.warn(error.code, error.requestInfo?.method)\n        }\n      }\n      return null\n    }\n    return response.getData()\n  } catch (error) {\n    if (error instanceof AjaxError) {\n      \u002F\u002F Hard error\n      console.error('SDK threw', error.code, error.status)\n    }\n    throw error\n  }\n}\n",[533,1900,1901,1923,1927,1980,1987,2037,2057,2084,2103,2108,2142,2148,2154,2163,2169,2185,2202,2219,2225,2262,2267,2276,2282],{"__ignoreMap":537},[539,1902,1903,1906,1908,1910,1912,1915,1917,1920],{"class":682,"line":683},[539,1904,1905],{"class":705},"import",[539,1907,768],{"class":701},[539,1909,1792],{"class":697},[539,1911,787],{"class":701},[539,1913,1914],{"class":705}," from",[539,1916,747],{"class":701},[539,1918,1919],{"class":750},"@bitrix24\u002Fb24jssdk",[539,1921,1922],{"class":701},"'\n",[539,1924,1925],{"class":682,"line":690},[539,1926,806],{"emptyLinePlaceholder":805},[539,1928,1929,1932,1935,1938,1940,1943,1945,1947,1949,1951,1953,1956,1959,1962,1964,1967,1970,1972,1974,1976,1978],{"class":682,"line":738},[539,1930,1931],{"class":693},"async",[539,1933,1934],{"class":693}," function",[539,1936,1937],{"class":728}," callWithUnifiedErrorHandling",[539,1939,732],{"class":701},[539,1941,1621],{"class":1942},"sHdIc",[539,1944,521],{"class":701},[539,1946,1857],{"class":541},[539,1948,1860],{"class":701},[539,1950,1863],{"class":1942},[539,1952,521],{"class":701},[539,1954,1955],{"class":541}," Record",[539,1957,1958],{"class":701},"\u003C",[539,1960,1961],{"class":541},"string",[539,1963,1860],{"class":701},[539,1965,1966],{"class":541}," unknown",[539,1968,1969],{"class":701},">,",[539,1971,1873],{"class":1942},[539,1973,521],{"class":701},[539,1975,1857],{"class":541},[539,1977,660],{"class":701},[539,1979,1801],{"class":701},[539,1981,1982,1985],{"class":682,"line":760},[539,1983,1984],{"class":705},"  try",[539,1986,1801],{"class":701},[539,1988,1989,1992,1995,1998,2000,2002,2004,2006,2008,2010,2012,2014,2016,2018,2020,2023,2025,2027,2029,2031,2033,2035],{"class":682,"line":793},[539,1990,1991],{"class":693},"    const",[539,1993,1994],{"class":697}," response",[539,1996,1997],{"class":701}," =",[539,1999,706],{"class":705},[539,2001,709],{"class":697},[539,2003,547],{"class":701},[539,2005,96],{"class":697},[539,2007,547],{"class":701},[539,2009,718],{"class":697},[539,2011,547],{"class":701},[539,2013,723],{"class":697},[539,2015,547],{"class":701},[539,2017,729],{"class":728},[539,2019,732],{"class":741},[539,2021,2022],{"class":701},"{",[539,2024,1852],{"class":697},[539,2026,1860],{"class":701},[539,2028,1863],{"class":697},[539,2030,1860],{"class":701},[539,2032,1873],{"class":697},[539,2034,787],{"class":701},[539,2036,799],{"class":741},[539,2038,2039,2042,2044,2046,2048,2050,2052,2055],{"class":682,"line":802},[539,2040,2041],{"class":705},"    if",[539,2043,820],{"class":741},[539,2045,823],{"class":701},[539,2047,826],{"class":697},[539,2049,547],{"class":701},[539,2051,1547],{"class":697},[539,2053,2054],{"class":741},") ",[539,2056,735],{"class":701},[539,2058,2059,2062,2064,2066,2069,2072,2074,2076,2079,2082],{"class":682,"line":809},[539,2060,2061],{"class":705},"      for",[539,2063,820],{"class":741},[539,2065,694],{"class":693},[539,2067,2068],{"class":697}," error",[539,2070,2071],{"class":701}," of",[539,2073,1994],{"class":697},[539,2075,547],{"class":701},[539,2077,2078],{"class":728},"getErrors",[539,2080,2081],{"class":741},"()) ",[539,2083,735],{"class":701},[539,2085,2086,2089,2091,2094,2097,2099,2101],{"class":682,"line":815},[539,2087,2088],{"class":705},"        if",[539,2090,820],{"class":741},[539,2092,2093],{"class":697},"error",[539,2095,2096],{"class":701}," instanceof",[539,2098,1792],{"class":541},[539,2100,2054],{"class":741},[539,2102,735],{"class":701},[539,2104,2105],{"class":682,"line":836},[539,2106,2107],{"class":686},"          \u002F\u002F Soft error\n",[539,2109,2110,2113,2115,2118,2120,2122,2124,2126,2128,2130,2132,2135,2138,2140],{"class":682,"line":876},[539,2111,2112],{"class":697},"          console",[539,2114,547],{"class":701},[539,2116,2117],{"class":728},"warn",[539,2119,732],{"class":741},[539,2121,2093],{"class":697},[539,2123,547],{"class":701},[539,2125,533],{"class":697},[539,2127,1860],{"class":701},[539,2129,2068],{"class":697},[539,2131,547],{"class":701},[539,2133,2134],{"class":697},"requestInfo",[539,2136,2137],{"class":701},"?.",[539,2139,1621],{"class":697},[539,2141,799],{"class":741},[539,2143,2145],{"class":682,"line":2144},11,[539,2146,2147],{"class":701},"        }\n",[539,2149,2151],{"class":682,"line":2150},12,[539,2152,2153],{"class":701},"      }\n",[539,2155,2157,2160],{"class":682,"line":2156},13,[539,2158,2159],{"class":705},"      return",[539,2161,2162],{"class":701}," null\n",[539,2164,2166],{"class":682,"line":2165},14,[539,2167,2168],{"class":701},"    }\n",[539,2170,2172,2175,2177,2179,2182],{"class":682,"line":2171},15,[539,2173,2174],{"class":705},"    return",[539,2176,1994],{"class":697},[539,2178,547],{"class":701},[539,2180,2181],{"class":728},"getData",[539,2183,2184],{"class":741},"()\n",[539,2186,2188,2191,2194,2196,2198,2200],{"class":682,"line":2187},16,[539,2189,2190],{"class":701},"  }",[539,2192,2193],{"class":705}," catch",[539,2195,820],{"class":741},[539,2197,2093],{"class":697},[539,2199,2054],{"class":741},[539,2201,735],{"class":701},[539,2203,2205,2207,2209,2211,2213,2215,2217],{"class":682,"line":2204},17,[539,2206,2041],{"class":705},[539,2208,820],{"class":741},[539,2210,2093],{"class":697},[539,2212,2096],{"class":701},[539,2214,1792],{"class":541},[539,2216,2054],{"class":741},[539,2218,735],{"class":701},[539,2220,2222],{"class":682,"line":2221},18,[539,2223,2224],{"class":686},"      \u002F\u002F Hard error\n",[539,2226,2228,2231,2233,2235,2237,2239,2242,2244,2246,2248,2250,2252,2254,2256,2258,2260],{"class":682,"line":2227},19,[539,2229,2230],{"class":697},"      console",[539,2232,547],{"class":701},[539,2234,2093],{"class":728},[539,2236,732],{"class":741},[539,2238,754],{"class":701},[539,2240,2241],{"class":750},"SDK threw",[539,2243,754],{"class":701},[539,2245,1860],{"class":701},[539,2247,2068],{"class":697},[539,2249,547],{"class":701},[539,2251,533],{"class":697},[539,2253,1860],{"class":701},[539,2255,2068],{"class":697},[539,2257,547],{"class":701},[539,2259,1400],{"class":697},[539,2261,799],{"class":741},[539,2263,2265],{"class":682,"line":2264},20,[539,2266,2168],{"class":701},[539,2268,2270,2273],{"class":682,"line":2269},21,[539,2271,2272],{"class":705},"    throw",[539,2274,2275],{"class":697}," error\n",[539,2277,2279],{"class":682,"line":2278},22,[539,2280,2281],{"class":701},"  }\n",[539,2283,2285],{"class":682,"line":2284},23,[539,2286,879],{"class":701},[2288,2289,2290],"style",{},"html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html pre.shiki code .sHdIc, html code.shiki .sHdIc{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#EEFFFF;--shiki-default-font-style:italic;--shiki-dark:#BABED8;--shiki-dark-font-style:italic}",{"title":537,"searchDepth":690,"depth":690,"links":2292},[2293,2294,2296,2297,2299,2300],{"id":588,"depth":690,"text":589},{"id":656,"depth":690,"text":2295},"Classification by category (restApi:v3)",{"id":983,"depth":690,"text":984},{"id":1530,"depth":690,"text":2298},"Pinned soft codes (returned in AjaxResult)",{"id":1689,"depth":690,"text":1690},{"id":1757,"depth":690,"text":2301},"Working with AjaxError","md",[2304,2307],{"label":1698,"iconName":2305,"to":2306},"GitHubIcon","https:\u002F\u002Fgithub.com\u002Fbitrix24\u002Fb24jssdk\u002Fblob\u002Fmain\u002Fpackages\u002Fjssdk\u002Fsrc\u002Fcore\u002Fhttp\u002Flimiters\u002Fmanager.ts",{"label":542,"iconName":2305,"to":1766},{},{"title":379},{"title":379,"description":382},"nPUccOYxPs2oKbWv4SsS8Y7D6RLtDzWrS1xVoI0MAL4",{"data":2313,"body":2314},{},{"type":2315,"children":2316},"root",[2317],{"type":2318,"tag":514,"props":2319,"children":2320},"element",{},[2321],{"type":2322,"value":382},"text",1789370230327]