[{"data":1,"prerenderedAt":2898},["ShallowReactive",2],{"navigation":3,"-docs-working-with-the-rest-api-errors":445,"-docs-working-with-the-rest-api-errors-description":2887},[4],{"title":5,"path":6,"stem":7,"children":8,"page":47},"Docs","\u002Fdocs","docs",[9,73,337],{"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,58],{"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],{"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,"restApiVersion":15,"category":15,"description":15,"badge":15,"path":60,"stem":61,"children":62,"page":47},"AI Tools","\u002Fdocs\u002Fgetting-started\u002Fai","docs\u002F1.getting-started\u002F7.ai",[63,68],{"title":64,"path":65,"stem":66,"restApiVersion":15,"category":15,"description":67,"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":69,"path":70,"stem":71,"restApiVersion":15,"category":15,"description":72,"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":74,"path":75,"stem":76,"children":77,"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",[78,81,88,93,98,102,107,111,116,121,125,130,135,140,145,150,155,160,165,170,174,179,184,190,195,200,205,210,215,220,225,230,235,241,246,252,257,262,267,272,278,284,290,295,300,305,311,316,321,326,332],{"title":79,"path":75,"stem":76,"restApiVersion":15,"category":15,"description":80,"badge":15},"Introduction","Overview of SDK capabilities for working with Bitrix24 REST API",{"title":82,"path":83,"stem":84,"restApiVersion":85,"category":86,"description":87,"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":82,"path":89,"stem":90,"restApiVersion":91,"category":86,"description":92,"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":94,"path":95,"stem":96,"restApiVersion":85,"category":86,"description":97,"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":94,"path":99,"stem":100,"restApiVersion":91,"category":86,"description":101,"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":103,"path":104,"stem":105,"restApiVersion":85,"category":86,"description":106,"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":103,"path":108,"stem":109,"restApiVersion":91,"category":86,"description":110,"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":112,"path":113,"stem":114,"restApiVersion":15,"category":112,"description":115,"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":117,"path":118,"stem":119,"restApiVersion":85,"category":86,"description":120,"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":117,"path":122,"stem":123,"restApiVersion":91,"category":86,"description":124,"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. Allows executing up to 50 commands in a single API call.",{"title":79,"path":126,"stem":127,"restApiVersion":15,"category":128,"description":129,"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":131,"path":132,"stem":133,"restApiVersion":15,"category":128,"description":134,"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":136,"path":137,"stem":138,"restApiVersion":15,"category":128,"description":139,"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":141,"path":142,"stem":143,"restApiVersion":15,"category":128,"description":144,"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":146,"path":147,"stem":148,"restApiVersion":15,"category":128,"description":149,"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":151,"path":152,"stem":153,"restApiVersion":15,"category":128,"description":154,"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":156,"path":157,"stem":158,"restApiVersion":15,"category":128,"description":159,"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":161,"path":162,"stem":163,"restApiVersion":15,"category":128,"description":164,"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":166,"path":167,"stem":168,"restApiVersion":85,"category":86,"description":169,"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":166,"path":171,"stem":172,"restApiVersion":91,"category":86,"description":173,"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":175,"path":176,"stem":177,"restApiVersion":15,"category":175,"description":178,"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":180,"path":181,"stem":182,"restApiVersion":15,"category":15,"description":183,"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":185,"path":186,"stem":187,"restApiVersion":15,"category":188,"description":189,"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":191,"path":192,"stem":193,"restApiVersion":15,"category":188,"description":194,"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":196,"path":197,"stem":198,"restApiVersion":15,"category":188,"description":199,"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":201,"path":202,"stem":203,"restApiVersion":15,"category":188,"description":204,"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":206,"path":207,"stem":208,"restApiVersion":15,"category":188,"description":209,"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":211,"path":212,"stem":213,"restApiVersion":15,"category":188,"description":214,"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":216,"path":217,"stem":218,"restApiVersion":15,"category":188,"description":219,"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":221,"path":222,"stem":223,"restApiVersion":15,"category":188,"description":224,"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":226,"path":227,"stem":228,"restApiVersion":15,"category":15,"description":229,"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":231,"path":232,"stem":233,"restApiVersion":15,"category":231,"description":234,"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":236,"path":237,"stem":238,"restApiVersion":15,"category":239,"description":240,"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":242,"path":243,"stem":244,"restApiVersion":15,"category":239,"description":245,"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":247,"path":248,"stem":249,"restApiVersion":15,"category":250,"description":251,"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":253,"path":254,"stem":255,"restApiVersion":15,"category":250,"description":256,"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":258,"path":259,"stem":260,"restApiVersion":15,"category":250,"description":261,"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":263,"path":264,"stem":265,"restApiVersion":15,"category":250,"description":266,"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":268,"path":269,"stem":270,"restApiVersion":15,"category":250,"description":271,"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":273,"path":274,"stem":275,"restApiVersion":15,"category":276,"description":277,"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":279,"path":280,"stem":281,"restApiVersion":15,"category":282,"description":283,"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":285,"path":286,"stem":287,"restApiVersion":15,"category":288,"description":289,"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":291,"path":292,"stem":293,"restApiVersion":15,"category":288,"description":294,"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 v7, encode \u002F decode HTML entities, type conversions, case helpers, Luxon-backed `toDateTime` \u002F `toB24Format`, query-string builder.",{"title":296,"path":297,"stem":298,"restApiVersion":15,"category":288,"description":299,"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":301,"path":302,"stem":303,"restApiVersion":15,"category":288,"description":304,"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":306,"path":307,"stem":308,"restApiVersion":15,"category":309,"description":310,"badge":15},"IResult","\u002Fdocs\u002Fworking-with-the-rest-api\u002Ftypes-iresult","docs\u002F2.working-with-the-rest-api\u002F90.types-iresult","Types","Generic operation-result interface. Implemented by `Result\u003CT>` and (transitively) by `AjaxResult\u003CT>`.",{"title":312,"path":313,"stem":314,"restApiVersion":15,"category":309,"description":315,"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":317,"path":318,"stem":319,"restApiVersion":15,"category":250,"description":320,"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":322,"path":323,"stem":324,"restApiVersion":15,"category":250,"description":325,"badge":15},"Error Codes","\u002Fdocs\u002Fworking-with-the-rest-api\u002Ferror-codes","docs\u002F2.working-with-the-rest-api\u002F96.error-codes","Catalogue of error codes the SDK recognises — split into \"hard\" (thrown) and \"soft\" (returned as AjaxError inside AjaxResult).",{"title":327,"path":328,"stem":329,"restApiVersion":15,"category":330,"description":331,"badge":15},"HealthCheck","\u002Fdocs\u002Fworking-with-the-rest-api\u002Ftools-health-check","docs\u002F2.working-with-the-rest-api\u002Ftools-health-check","tools","Method for checking the availability of Bitrix24 REST API. Performs a simple request to the REST API to verify service health.",{"title":333,"path":334,"stem":335,"restApiVersion":15,"category":330,"description":336,"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":338,"path":339,"stem":340,"children":341,"restApiVersion":15,"category":15,"description":15,"badge":15},"Examples","\u002Fdocs\u002Fexamples","docs\u002F99.examples\u002F0.index",[342,344,350,355,360,365,370,375,380,385,390,395,400,405,410,415,420,425,430,435,440],{"title":79,"path":339,"stem":340,"restApiVersion":15,"category":15,"description":343,"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":345,"path":346,"stem":347,"restApiVersion":15,"category":348,"description":349,"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":351,"path":352,"stem":353,"restApiVersion":15,"category":348,"description":354,"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":356,"path":357,"stem":358,"restApiVersion":15,"category":15,"description":359,"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":361,"path":362,"stem":363,"restApiVersion":15,"category":348,"description":364,"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":366,"path":367,"stem":368,"restApiVersion":15,"category":348,"description":369,"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":371,"path":372,"stem":373,"restApiVersion":15,"category":348,"description":374,"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":376,"path":377,"stem":378,"restApiVersion":15,"category":348,"description":379,"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":381,"path":382,"stem":383,"restApiVersion":15,"category":348,"description":384,"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":386,"path":387,"stem":388,"restApiVersion":15,"category":15,"description":389,"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, finalises the installation, and celebrates with confetti.",{"title":391,"path":392,"stem":393,"restApiVersion":15,"category":348,"description":394,"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":396,"path":397,"stem":398,"restApiVersion":15,"category":348,"description":399,"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":401,"path":402,"stem":403,"restApiVersion":15,"category":15,"description":404,"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":406,"path":407,"stem":408,"restApiVersion":15,"category":348,"description":409,"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":411,"path":412,"stem":413,"restApiVersion":15,"category":348,"description":414,"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":416,"path":417,"stem":418,"restApiVersion":15,"category":348,"description":419,"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":421,"path":422,"stem":423,"restApiVersion":15,"category":348,"description":424,"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":426,"path":427,"stem":428,"restApiVersion":15,"category":348,"description":429,"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":431,"path":432,"stem":433,"restApiVersion":15,"category":348,"description":434,"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":436,"path":437,"stem":438,"restApiVersion":15,"category":348,"description":439,"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":441,"path":442,"stem":443,"restApiVersion":15,"category":348,"description":444,"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":446,"title":447,"audited":448,"badge":15,"body":449,"category":15,"description":229,"extension":2872,"links":2873,"meta":2883,"navigation":2884,"path":227,"restApiVersion":15,"seo":2885,"stem":228,"__hash__":2886},"docs\u002Fdocs\u002F2.working-with-the-rest-api\u002F6.errors.md","Error codes and handling","2026-05-29",{"type":450,"value":451,"toc":2857},"minimark",[452,457,461,521,554,820,824,827,1339,1346,1356,1528,1541,1545,1550,1562,2066,2074,2090,2352,2372,2381,2702,2706,2780,2784,2853],[453,454,456],"h2",{"id":455},"overview","Overview",[458,459,460],"p",{},"The SDK raises errors through two related classes:",[462,463,464,483],"ul",{},[465,466,467,471,472,474,475,478,479,482],"li",{},[468,469,470],"code",{},"SdkError"," — thrown by SDK code itself (validation, configuration, deprecated paths, internal invariants). Always carries a ",[468,473,468],{},", a ",[468,476,477],{},"status"," (HTTP-like), and an optional ",[468,480,481],{},"originalError",".",[465,484,485,488,489,492,493,496,497,500,501,503,504,508,509,512,513,516,517,520],{},[468,486,487],{},"AjaxError extends SdkError"," — thrown when an HTTP call to Bitrix24 fails. Adds ",[468,490,491],{},"requestInfo"," (",[468,494,495],{},"method",", ",[468,498,499],{},"requestId",", request params) so you can correlate with portal-side logs. Since v1.1.2 (#39), ",[468,502,491],{}," does ",[505,506,507],"strong",{},"not"," include the full request URL and credential-bearing fields inside ",[468,510,511],{},"params"," are redacted — the goal is to keep webhook secrets out of ",[468,514,515],{},"toJSON()"," \u002F ",[468,518,519],{},"toString()"," output.",[458,522,523,524,496,526,496,528,496,530,532,533,535,536,538,539,542,543,546,547,549,550,553],{},"Method-style results that don't throw — ",[468,525,82],{},[468,527,94],{},[468,529,117],{},[468,531,166],{}," — surface failures through ",[468,534,268],{},"\u002F",[468,537,247],{},": check ",[468,540,541],{},".isSuccess"," and read ",[468,544,545],{},".getErrorMessages()",". ",[468,548,103],{},", by contrast, ",[505,551,552],{},"does"," throw on failure (the generator can't complete partially).",[555,556,561],"pre",{"className":557,"code":558,"language":559,"meta":560,"style":560},"language-ts shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import { SdkError, AjaxError } from '@bitrix24\u002Fb24jssdk'\n\ntry {\n  \u002F\u002F …SDK calls\n}\ncatch (error) {\n  if (error instanceof AjaxError) {\n    \u002F\u002F network \u002F portal-side failure; error.code is the Bitrix24 code\n    console.error(error.code, error.status, error.requestInfo?.method, error.requestInfo?.requestId)\n  }\n  else if (error instanceof SdkError) {\n    \u002F\u002F SDK-side issue; error.code starts with JSSDK_\n    console.error(error.code, error.status)\n  }\n  else {\n    throw error\n  }\n}\n","ts","",[468,562,563,602,609,618,625,631,643,666,672,729,735,756,762,789,794,801,810,815],{"__ignoreMap":560},[564,565,568,572,576,580,583,586,589,592,595,599],"span",{"class":566,"line":567},"line",1,[564,569,571],{"class":570},"s7zQu","import",[564,573,575],{"class":574},"sMK4o"," {",[564,577,579],{"class":578},"sTEyZ"," SdkError",[564,581,582],{"class":574},",",[564,584,585],{"class":578}," AjaxError",[564,587,588],{"class":574}," }",[564,590,591],{"class":570}," from",[564,593,594],{"class":574}," '",[564,596,598],{"class":597},"sfazB","@bitrix24\u002Fb24jssdk",[564,600,601],{"class":574},"'\n",[564,603,605],{"class":566,"line":604},2,[564,606,608],{"emptyLinePlaceholder":607},true,"\n",[564,610,612,615],{"class":566,"line":611},3,[564,613,614],{"class":570},"try",[564,616,617],{"class":574}," {\n",[564,619,621],{"class":566,"line":620},4,[564,622,624],{"class":623},"sHwdD","  \u002F\u002F …SDK calls\n",[564,626,628],{"class":566,"line":627},5,[564,629,630],{"class":574},"}\n",[564,632,634,637,640],{"class":566,"line":633},6,[564,635,636],{"class":570},"catch",[564,638,639],{"class":578}," (error) ",[564,641,642],{"class":574},"{\n",[564,644,646,649,652,655,658,661,664],{"class":566,"line":645},7,[564,647,648],{"class":570},"  if",[564,650,492],{"class":651},"swJcz",[564,653,654],{"class":578},"error",[564,656,657],{"class":574}," instanceof",[564,659,585],{"class":660},"sBMFI",[564,662,663],{"class":651},") ",[564,665,642],{"class":574},[564,667,669],{"class":566,"line":668},8,[564,670,671],{"class":623},"    \u002F\u002F network \u002F portal-side failure; error.code is the Bitrix24 code\n",[564,673,675,678,680,683,686,688,690,692,694,697,699,701,703,705,707,709,712,714,716,718,720,722,724,726],{"class":566,"line":674},9,[564,676,677],{"class":578},"    console",[564,679,482],{"class":574},[564,681,654],{"class":682},"s2Zo4",[564,684,685],{"class":651},"(",[564,687,654],{"class":578},[564,689,482],{"class":574},[564,691,468],{"class":578},[564,693,582],{"class":574},[564,695,696],{"class":578}," error",[564,698,482],{"class":574},[564,700,477],{"class":578},[564,702,582],{"class":574},[564,704,696],{"class":578},[564,706,482],{"class":574},[564,708,491],{"class":578},[564,710,711],{"class":574},"?.",[564,713,495],{"class":578},[564,715,582],{"class":574},[564,717,696],{"class":578},[564,719,482],{"class":574},[564,721,491],{"class":578},[564,723,711],{"class":574},[564,725,499],{"class":578},[564,727,728],{"class":651},")\n",[564,730,732],{"class":566,"line":731},10,[564,733,734],{"class":574},"  }\n",[564,736,738,741,744,746,748,750,752,754],{"class":566,"line":737},11,[564,739,740],{"class":570},"  else",[564,742,743],{"class":570}," if",[564,745,492],{"class":651},[564,747,654],{"class":578},[564,749,657],{"class":574},[564,751,579],{"class":660},[564,753,663],{"class":651},[564,755,642],{"class":574},[564,757,759],{"class":566,"line":758},12,[564,760,761],{"class":623},"    \u002F\u002F SDK-side issue; error.code starts with JSSDK_\n",[564,763,765,767,769,771,773,775,777,779,781,783,785,787],{"class":566,"line":764},13,[564,766,677],{"class":578},[564,768,482],{"class":574},[564,770,654],{"class":682},[564,772,685],{"class":651},[564,774,654],{"class":578},[564,776,482],{"class":574},[564,778,468],{"class":578},[564,780,582],{"class":574},[564,782,696],{"class":578},[564,784,482],{"class":574},[564,786,477],{"class":578},[564,788,728],{"class":651},[564,790,792],{"class":566,"line":791},14,[564,793,734],{"class":574},[564,795,797,799],{"class":566,"line":796},15,[564,798,740],{"class":570},[564,800,617],{"class":574},[564,802,804,807],{"class":566,"line":803},16,[564,805,806],{"class":570},"    throw",[564,808,809],{"class":578}," error\n",[564,811,813],{"class":566,"line":812},17,[564,814,734],{"class":574},[564,816,818],{"class":566,"line":817},18,[564,819,630],{"class":574},[453,821,823],{"id":822},"sdkerror-codes-raised-by-the-sdk","SdkError codes raised by the SDK",[458,825,826],{},"Codes are stable strings — match on them, don't parse messages.",[828,829,830,849],"table",{},[831,832,833],"thead",{},[834,835,836,840,843,846],"tr",{},[837,838,839],"th",{},"Code",[837,841,842],{},"Status",[837,844,845],{},"Where it's thrown",[837,847,848],{},"What it means",[850,851,852,886,903,920,941,983,1001,1024,1045,1061,1078,1096,1113,1128,1143,1161,1176,1190,1204,1219,1237,1252,1270,1285,1302,1319],"tbody",{},[834,853,854,860,863,869],{},[855,856,857],"td",{},[468,858,859],{},"JSSDK_CORE_B24_NOT_INIT",[855,861,862],{},"500",[855,864,865,868],{},[468,866,867],{},"AbstractB24"," getters",[855,870,871,872,875,876,878,879,882,883,885],{},"You called a method on a ",[468,873,874],{},"B24"," instance whose constructor never finished. For ",[468,877,128],{},", await ",[468,880,881],{},"initializeB24Frame()","; for ",[468,884,112],{},", the URL was malformed.",[834,887,888,893,895,900],{},[855,889,890],{},[468,891,892],{},"JSSDK_CORE_B24_HTTP_V2_NOT_INIT",[855,894,862],{},[855,896,897],{},[468,898,899],{},"getHttpClient(ApiVersion.v2)",[855,901,902],{},"The v2 HTTP client wasn't built (typically a configuration bug).",[834,904,905,910,912,917],{},[855,906,907],{},[468,908,909],{},"JSSDK_CORE_B24_HTTP_V3_NOT_INIT",[855,911,862],{},[855,913,914],{},[468,915,916],{},"getHttpClient(ApiVersion.v3)",[855,918,919],{},"Same, for v3.",[834,921,922,927,929,934],{},[855,923,924],{},[468,925,926],{},"JSSDK_CORE_B24_API_WRONG",[855,928,862],{},[855,930,931],{},[468,932,933],{},"getHttpClient",[855,935,936,937,940],{},"An unknown ",[468,938,939],{},"ApiVersion"," was requested.",[834,942,943,948,951,954],{},[855,944,945],{},[468,946,947],{},"JSSDK_CORE_DEPRECATED_METHOD",[855,949,950],{},"—",[855,952,953],{},"logger only",[855,955,956,957,960,961,516,964,516,967,516,970,516,973,976,977,516,980,482],{},"Not thrown — emitted as a ",[468,958,959],{},"warning"," log when you call deprecated ",[468,962,963],{},"callMethod",[468,965,966],{},"callBatch",[468,968,969],{},"callListMethod",[468,971,972],{},"fetchListMethod",[468,974,975],{},"callBatchByChunk",". Migrate to ",[468,978,979],{},"b24.actions.v2.*",[468,981,982],{},"v3.*",[834,984,985,990,992,994],{},[855,986,987],{},[468,988,989],{},"JSSDK_CORE_METHOD_AVAILABLE_IN_API_V3",[855,991,950],{},[855,993,953],{},[855,995,996,997,1000],{},"Warning emitted by ",[468,998,999],{},"CallV2.make()"," when the method also exists in v3. Migrate when you can.",[834,1002,1003,1008,1010,1021],{},[855,1004,1005],{},[468,1006,1007],{},"JSSDK_CORE_METHOD_NOT_SUPPORT_IN_API_V3",[855,1009,862],{},[855,1011,1012,496,1015,496,1018],{},[468,1013,1014],{},"CallV3.make()",[468,1016,1017],{},"BatchV3.make()",[468,1019,1020],{},"AjaxResult.getNext()",[855,1022,1023],{},"You asked v3 to dispatch a method that's not in the v3 surface. Use v2, or split the batch by API version.",[834,1025,1026,1031,1033,1039],{},[855,1027,1028],{},[468,1029,1030],{},"JSSDK_CORE_B24_FETCH_LIST_METHOD_API_V2",[855,1032,862],{},[855,1034,1035,1038],{},[468,1036,1037],{},"FetchListV2.make()"," generator",[855,1040,1041,1042,482],{},"An underlying page request failed; the generator stops. Catch around ",[468,1043,1044],{},"for await",[834,1046,1047,1052,1054,1059],{},[855,1048,1049],{},[468,1050,1051],{},"JSSDK_CORE_B24_FETCH_LIST_METHOD_API_V3",[855,1053,862],{},[855,1055,1056,1038],{},[468,1057,1058],{},"FetchListV3.make()",[855,1060,919],{},[834,1062,1063,1068,1070,1075],{},[855,1064,1065],{},[468,1066,1067],{},"JSSDK_VERSION_MANAGER_NOT_DETECT_FOR_METHOD",[855,1069,950],{},[855,1071,1072],{},[468,1073,1074],{},"versionManager",[855,1076,1077],{},"Internal — the method's API version couldn't be inferred. Usually paired with one of the codes above.",[834,1079,1080,1085,1088,1091],{},[855,1081,1082],{},[468,1083,1084],{},"JSSDK_BATCH_TOO_LARGE",[855,1086,1087],{},"400",[855,1089,1090],{},"v2 HTTP client",[855,1092,1093,1094,482],{},"More than 50 commands handed to a single batch. Use ",[468,1095,166],{},[834,1097,1098,1103,1105,1107],{},[855,1099,1100],{},[468,1101,1102],{},"JSSDK_BATCH_EMPTY",[855,1104,1087],{},[855,1106,1090],{},[855,1108,1109,1110,482],{},"Empty ",[468,1111,1112],{},"calls",[834,1114,1115,1120,1122,1125],{},[855,1116,1117],{},[468,1118,1119],{},"JSSDK_BATCH_SUB_ERROR",[855,1121,862],{},[855,1123,1124],{},"batch processing",[855,1126,1127],{},"Wrapper for a sub-call failure inside a batch. Inspect the per-call result.",[834,1129,1130,1135,1137,1140],{},[855,1131,1132],{},[468,1133,1134],{},"JSSDK_INTERACTION_BATCH_BUILD_STRATEGY_V3_EMPTY_COMMAND",[855,1136,1087],{},[855,1138,1139],{},"v3 batch processing",[855,1141,1142],{},"A single command in a v3 batch was empty\u002Fmalformed.",[834,1144,1145,1150,1152,1154],{},[855,1146,1147],{},[468,1148,1149],{},"JSSDK_INTERACTION_BATCH_BUILD_STRATEGY_V3_EMPTY_COMMANDS",[855,1151,1087],{},[855,1153,1139],{},[855,1155,1156,1157,1160],{},"The whole ",[468,1158,1159],{},"commands"," array was empty.",[834,1162,1163,1168,1170,1173],{},[855,1164,1165],{},[468,1166,1167],{},"JSSDK_INTERACTION_BATCH_STRATEGY_V2_EMPTY_COMMANDS",[855,1169,1087],{},[855,1171,1172],{},"v2 batch processing",[855,1174,1175],{},"Same, for v2.",[834,1177,1178,1183,1185,1187],{},[855,1179,1180],{},[468,1181,1182],{},"JSSDK_INTERACTION_BATCH_STRATEGY_V2_EMPTY_COMMAND_RESPONSE",[855,1184,862],{},[855,1186,1172],{},[855,1188,1189],{},"A command in the response had no body — usually portal-side.",[834,1191,1192,1197,1199,1201],{},[855,1193,1194],{},[468,1195,1196],{},"JSSDK_INTERACTION_BATCH_EMPTY_PROCESSING_STRATEGY",[855,1198,862],{},[855,1200,1124],{},[855,1202,1203],{},"Internal — strategy lookup failed.",[834,1205,1206,1211,1213,1216],{},[855,1207,1208],{},[468,1209,1210],{},"JSSDK_INTERACTION_BATCH_ROW_FAIL",[855,1212,862],{},[855,1214,1215],{},"batch row parser",[855,1217,1218],{},"A single batch row could not be parsed.",[834,1220,1221,1226,1228,1231],{},[855,1222,1223],{},[468,1224,1225],{},"JSSDK_INVALID_PARAMS",[855,1227,1087],{},[855,1229,1230],{},"HTTP transport",[855,1232,1233,1234,1236],{},"The shape of ",[468,1235,511],{}," was rejected before the request was sent.",[834,1238,1239,1244,1247,1249],{},[855,1240,1241],{},[468,1242,1243],{},"JSSDK_PARAMS_TOO_LARGE",[855,1245,1246],{},"413",[855,1248,1230],{},[855,1250,1251],{},"Serialized request body exceeded the size limit. Split the call.",[834,1253,1254,1259,1261,1263],{},[855,1255,1256],{},[468,1257,1258],{},"JSSDK_CALL_ALL_ATTEMPTS_EXHAUSTED",[855,1260,862],{},[855,1262,1230],{},[855,1264,1265,1266,1269],{},"Retries (default 3, configurable via ",[468,1267,1268],{},"RestrictionParams.maxRetries",") exhausted before the call succeeded.",[834,1271,1272,1277,1279,1282],{},[855,1273,1274],{},[468,1275,1276],{},"JSSDK_UNKNOWN_ERROR",[855,1278,862],{},[855,1280,1281],{},"various",[855,1283,1284],{},"Fallback when no more specific code applies.",[834,1286,1287,1292,1294,1299],{},[855,1288,1289],{},[468,1290,1291],{},"JSSDK_INTERNAL_ERROR",[855,1293,862],{},[855,1295,1296],{},[468,1297,1298],{},"SdkError.fromException",[855,1300,1301],{},"Default code when wrapping an unknown exception.",[834,1303,1304,1309,1311,1316],{},[855,1305,1306],{},[468,1307,1308],{},"JSSDK_INTERNAL_AJAX_ERROR",[855,1310,862],{},[855,1312,1313],{},[468,1314,1315],{},"AjaxError.fromException",[855,1317,1318],{},"Default code when wrapping an unknown HTTP error.",[834,1320,1321,1326,1328,1333],{},[855,1322,1323],{},[468,1324,1325],{},"JSSDK_CLIENT_SIDE_WARNING",[855,1327,950],{},[855,1329,1330,1332],{},[468,1331,112],{}," constructor",[855,1334,1335,1336,1338],{},"Warning emitted when a ",[468,1337,112],{}," is instantiated in the browser — webhooks expose a portal-wide secret and shouldn't ship to client bundles.",[453,1340,1342,1343],{"id":1341},"rest-side-codes-that-come-back-as-ajaxerror","REST-side codes that come back as ",[468,1344,1345],{},"AjaxError",[458,1347,1348,1349,1351,1352,1355],{},"Bitrix24 returns these in the ",[468,1350,654],{}," field of an HTTP response. The SDK lifts them into ",[468,1353,1354],{},"AjaxError.code"," verbatim — match on the string.",[828,1357,1358,1373],{},[831,1359,1360],{},[834,1361,1362,1364,1367,1370],{},[837,1363,839],{},[837,1365,1366],{},"HTTP status",[837,1368,1369],{},"Meaning",[837,1371,1372],{},"Typical fix",[850,1374,1375,1397,1412,1428,1443,1467,1486,1509],{},[834,1376,1377,1382,1385,1388],{},[855,1378,1379],{},[468,1380,1381],{},"expired_token",[855,1383,1384],{},"401",[855,1386,1387],{},"OAuth access token expired.",[855,1389,1390,1391,1393,1394,1396],{},"The SDK auto-refreshes for ",[468,1392,128],{}," and ",[468,1395,175],{},"; for custom transports, refresh and retry once.",[834,1398,1399,1404,1406,1409],{},[855,1400,1401],{},[468,1402,1403],{},"invalid_token",[855,1405,1384],{},[855,1407,1408],{},"Token is malformed or revoked.",[855,1410,1411],{},"User must re-auth (OAuth flow); webhook URL is wrong.",[834,1413,1414,1419,1422,1425],{},[855,1415,1416],{},[468,1417,1418],{},"AUTHORIZE_ERROR",[855,1420,1421],{},"403",[855,1423,1424],{},"Caller is not allowed to perform this action.",[855,1426,1427],{},"Wrong scope on the webhook\u002Fapp, or the user lacks the access right (e.g. CRM permission).",[834,1429,1430,1435,1437,1440],{},[855,1431,1432],{},[468,1433,1434],{},"WRONG_AUTH_TYPE",[855,1436,1421],{},[855,1438,1439],{},"The token type doesn't match the endpoint (e.g. webhook used where OAuth is required).",[855,1441,1442],{},"Use the correct authentication method for the endpoint.",[834,1444,1445,1450,1453,1456],{},[855,1446,1447],{},[468,1448,1449],{},"QUERY_LIMIT_EXCEEDED",[855,1451,1452],{},"503",[855,1454,1455],{},"Per-second \u002F per-method rate limit hit.",[855,1457,1458,1459,1462,1463,1466],{},"Already handled by the built-in ",[468,1460,1461],{},"RateLimiter"," — increase ",[468,1464,1465],{},"restrictionParams.maxConcurrent"," only if you understand the cost.",[834,1468,1469,1474,1476,1479],{},[855,1470,1471],{},[468,1472,1473],{},"OVERLOAD_LIMIT",[855,1475,1452],{},[855,1477,1478],{},"Portal-wide load shedding.",[855,1480,1481,1482,1485],{},"Back off, retry after a few seconds. The SDK's ",[468,1483,1484],{},"AdaptiveDelayer"," already does this.",[834,1487,1488,1493,1495,1498],{},[855,1489,1490],{},[468,1491,1492],{},"ERROR_METHOD_NOT_FOUND",[855,1494,1087],{},[855,1496,1497],{},"Method name is wrong, or the app doesn't have the scope to see it.",[855,1499,1500,1501,1504,1505,1508],{},"Check spelling; check ",[468,1502,1503],{},"app.info","'s ",[468,1506,1507],{},"SCOPE"," against the method's required scope.",[834,1510,1511,1516,1518,1521],{},[855,1512,1513],{},[468,1514,1515],{},"INVALID_REQUEST",[855,1517,1087],{},[855,1519,1520],{},"Bad parameters (missing required field, wrong type).",[855,1522,1523,1524,1527],{},"Inspect ",[468,1525,1526],{},"error.message"," — Bitrix24's description names the offending field.",[458,1529,1530,1531,1538,1539,482],{},"This is not exhaustive — Bitrix24 publishes the full method-specific list at ",[1532,1533,1537],"a",{"href":1534,"rel":1535},"https:\u002F\u002Fapidocs.bitrix24.com\u002F",[1536],"nofollow","apidocs.bitrix24.com",". Anything not listed here passes through as-is on ",[468,1540,1354],{},[453,1542,1544],{"id":1543},"handling-patterns","Handling patterns",[1546,1547,1549],"h3",{"id":1548},"distinguish-sdk-bugs-from-portal-side-failures","Distinguish SDK bugs from portal-side failures",[458,1551,1552,1554,1555,1557,1558,1561],{},[468,1553,1345],{}," extends ",[468,1556,470],{},", so order the ",[468,1559,1560],{},"instanceof"," checks specifically-first:",[1563,1564,1565,1828],"rest-api-version-only",{},[1566,1567,1568,1571],"template",{"v-slot:rest-api-ver2":560},[458,1569,1570],{},"\u002F\u002F @check-ignore: top-level try\u002Fcatch with return, not valid at module scope",[555,1572,1574],{"className":557,"code":1573,"language":559,"meta":560,"style":560},"import { AjaxError, SdkError } from '@bitrix24\u002Fb24jssdk'\n\ntry {\n  await $b24.actions.v2.call.make({ method: 'crm.deal.get', params: { id: 1 } })\n}\ncatch (error) {\n  if (error instanceof AjaxError) {\n    \u002F\u002F Portal-side: error.code is the Bitrix24 code (e.g. expired_token)\n    if (error.code === 'expired_token') return refreshAndRetry()\n    if (error.code === 'AUTHORIZE_ERROR') return showPermissionDenied()\n    throw error\n  }\n  if (error instanceof SdkError) {\n    \u002F\u002F SDK-side: error.code starts with JSSDK_\n    throw error \u002F\u002F these are programmer errors, surface them\n  }\n  throw error\n}\n",[468,1575,1576,1598,1602,1608,1678,1682,1690,1706,1711,1744,1773,1779,1783,1799,1804,1813,1817,1824],{"__ignoreMap":560},[564,1577,1578,1580,1582,1584,1586,1588,1590,1592,1594,1596],{"class":566,"line":567},[564,1579,571],{"class":570},[564,1581,575],{"class":574},[564,1583,585],{"class":578},[564,1585,582],{"class":574},[564,1587,579],{"class":578},[564,1589,588],{"class":574},[564,1591,591],{"class":570},[564,1593,594],{"class":574},[564,1595,598],{"class":597},[564,1597,601],{"class":574},[564,1599,1600],{"class":566,"line":604},[564,1601,608],{"emptyLinePlaceholder":607},[564,1603,1604,1606],{"class":566,"line":611},[564,1605,614],{"class":570},[564,1607,617],{"class":574},[564,1609,1610,1613,1616,1618,1620,1622,1625,1627,1630,1632,1635,1637,1640,1643,1646,1648,1651,1654,1656,1659,1661,1663,1666,1668,1672,1674,1676],{"class":566,"line":620},[564,1611,1612],{"class":570},"  await",[564,1614,1615],{"class":578}," $b24",[564,1617,482],{"class":574},[564,1619,86],{"class":578},[564,1621,482],{"class":574},[564,1623,1624],{"class":578},"v2",[564,1626,482],{"class":574},[564,1628,1629],{"class":578},"call",[564,1631,482],{"class":574},[564,1633,1634],{"class":682},"make",[564,1636,685],{"class":651},[564,1638,1639],{"class":574},"{",[564,1641,1642],{"class":651}," method",[564,1644,1645],{"class":574},":",[564,1647,594],{"class":574},[564,1649,1650],{"class":597},"crm.deal.get",[564,1652,1653],{"class":574},"'",[564,1655,582],{"class":574},[564,1657,1658],{"class":651}," params",[564,1660,1645],{"class":574},[564,1662,575],{"class":574},[564,1664,1665],{"class":651}," id",[564,1667,1645],{"class":574},[564,1669,1671],{"class":1670},"sbssI"," 1",[564,1673,588],{"class":574},[564,1675,588],{"class":574},[564,1677,728],{"class":651},[564,1679,1680],{"class":566,"line":627},[564,1681,630],{"class":574},[564,1683,1684,1686,1688],{"class":566,"line":633},[564,1685,636],{"class":570},[564,1687,639],{"class":578},[564,1689,642],{"class":574},[564,1691,1692,1694,1696,1698,1700,1702,1704],{"class":566,"line":645},[564,1693,648],{"class":570},[564,1695,492],{"class":651},[564,1697,654],{"class":578},[564,1699,657],{"class":574},[564,1701,585],{"class":660},[564,1703,663],{"class":651},[564,1705,642],{"class":574},[564,1707,1708],{"class":566,"line":668},[564,1709,1710],{"class":623},"    \u002F\u002F Portal-side: error.code is the Bitrix24 code (e.g. expired_token)\n",[564,1712,1713,1716,1718,1720,1722,1724,1727,1729,1731,1733,1735,1738,1741],{"class":566,"line":674},[564,1714,1715],{"class":570},"    if",[564,1717,492],{"class":651},[564,1719,654],{"class":578},[564,1721,482],{"class":574},[564,1723,468],{"class":578},[564,1725,1726],{"class":574}," ===",[564,1728,594],{"class":574},[564,1730,1381],{"class":597},[564,1732,1653],{"class":574},[564,1734,663],{"class":651},[564,1736,1737],{"class":570},"return",[564,1739,1740],{"class":682}," refreshAndRetry",[564,1742,1743],{"class":651},"()\n",[564,1745,1746,1748,1750,1752,1754,1756,1758,1760,1762,1764,1766,1768,1771],{"class":566,"line":731},[564,1747,1715],{"class":570},[564,1749,492],{"class":651},[564,1751,654],{"class":578},[564,1753,482],{"class":574},[564,1755,468],{"class":578},[564,1757,1726],{"class":574},[564,1759,594],{"class":574},[564,1761,1418],{"class":597},[564,1763,1653],{"class":574},[564,1765,663],{"class":651},[564,1767,1737],{"class":570},[564,1769,1770],{"class":682}," showPermissionDenied",[564,1772,1743],{"class":651},[564,1774,1775,1777],{"class":566,"line":737},[564,1776,806],{"class":570},[564,1778,809],{"class":578},[564,1780,1781],{"class":566,"line":758},[564,1782,734],{"class":574},[564,1784,1785,1787,1789,1791,1793,1795,1797],{"class":566,"line":764},[564,1786,648],{"class":570},[564,1788,492],{"class":651},[564,1790,654],{"class":578},[564,1792,657],{"class":574},[564,1794,579],{"class":660},[564,1796,663],{"class":651},[564,1798,642],{"class":574},[564,1800,1801],{"class":566,"line":791},[564,1802,1803],{"class":623},"    \u002F\u002F SDK-side: error.code starts with JSSDK_\n",[564,1805,1806,1808,1810],{"class":566,"line":796},[564,1807,806],{"class":570},[564,1809,696],{"class":578},[564,1811,1812],{"class":623}," \u002F\u002F these are programmer errors, surface them\n",[564,1814,1815],{"class":566,"line":803},[564,1816,734],{"class":574},[564,1818,1819,1822],{"class":566,"line":812},[564,1820,1821],{"class":570},"  throw",[564,1823,809],{"class":578},[564,1825,1826],{"class":566,"line":817},[564,1827,630],{"class":574},[1566,1829,1830,1832],{"v-slot:rest-api-ver3":560},[458,1831,1570],{},[555,1833,1835],{"className":557,"code":1834,"language":559,"meta":560,"style":560},"import { AjaxError, SdkError } from '@bitrix24\u002Fb24jssdk'\n\ntry {\n  await $b24.actions.v3.call.make({ method: 'crm.deal.get', params: { id: 1 } })\n}\ncatch (error) {\n  if (error instanceof AjaxError) {\n    \u002F\u002F Portal-side: error.code is the Bitrix24 code (e.g. expired_token)\n    if (error.code === 'expired_token') return refreshAndRetry()\n    if (error.code === 'AUTHORIZE_ERROR') return showPermissionDenied()\n    throw error\n  }\n  if (error instanceof SdkError) {\n    \u002F\u002F SDK-side: error.code starts with JSSDK_\n    throw error \u002F\u002F these are programmer errors, surface them\n  }\n  throw error\n}\n",[468,1836,1837,1859,1863,1869,1926,1930,1938,1954,1958,1986,2014,2020,2024,2040,2044,2052,2056,2062],{"__ignoreMap":560},[564,1838,1839,1841,1843,1845,1847,1849,1851,1853,1855,1857],{"class":566,"line":567},[564,1840,571],{"class":570},[564,1842,575],{"class":574},[564,1844,585],{"class":578},[564,1846,582],{"class":574},[564,1848,579],{"class":578},[564,1850,588],{"class":574},[564,1852,591],{"class":570},[564,1854,594],{"class":574},[564,1856,598],{"class":597},[564,1858,601],{"class":574},[564,1860,1861],{"class":566,"line":604},[564,1862,608],{"emptyLinePlaceholder":607},[564,1864,1865,1867],{"class":566,"line":611},[564,1866,614],{"class":570},[564,1868,617],{"class":574},[564,1870,1871,1873,1875,1877,1879,1881,1884,1886,1888,1890,1892,1894,1896,1898,1900,1902,1904,1906,1908,1910,1912,1914,1916,1918,1920,1922,1924],{"class":566,"line":620},[564,1872,1612],{"class":570},[564,1874,1615],{"class":578},[564,1876,482],{"class":574},[564,1878,86],{"class":578},[564,1880,482],{"class":574},[564,1882,1883],{"class":578},"v3",[564,1885,482],{"class":574},[564,1887,1629],{"class":578},[564,1889,482],{"class":574},[564,1891,1634],{"class":682},[564,1893,685],{"class":651},[564,1895,1639],{"class":574},[564,1897,1642],{"class":651},[564,1899,1645],{"class":574},[564,1901,594],{"class":574},[564,1903,1650],{"class":597},[564,1905,1653],{"class":574},[564,1907,582],{"class":574},[564,1909,1658],{"class":651},[564,1911,1645],{"class":574},[564,1913,575],{"class":574},[564,1915,1665],{"class":651},[564,1917,1645],{"class":574},[564,1919,1671],{"class":1670},[564,1921,588],{"class":574},[564,1923,588],{"class":574},[564,1925,728],{"class":651},[564,1927,1928],{"class":566,"line":627},[564,1929,630],{"class":574},[564,1931,1932,1934,1936],{"class":566,"line":633},[564,1933,636],{"class":570},[564,1935,639],{"class":578},[564,1937,642],{"class":574},[564,1939,1940,1942,1944,1946,1948,1950,1952],{"class":566,"line":645},[564,1941,648],{"class":570},[564,1943,492],{"class":651},[564,1945,654],{"class":578},[564,1947,657],{"class":574},[564,1949,585],{"class":660},[564,1951,663],{"class":651},[564,1953,642],{"class":574},[564,1955,1956],{"class":566,"line":668},[564,1957,1710],{"class":623},[564,1959,1960,1962,1964,1966,1968,1970,1972,1974,1976,1978,1980,1982,1984],{"class":566,"line":674},[564,1961,1715],{"class":570},[564,1963,492],{"class":651},[564,1965,654],{"class":578},[564,1967,482],{"class":574},[564,1969,468],{"class":578},[564,1971,1726],{"class":574},[564,1973,594],{"class":574},[564,1975,1381],{"class":597},[564,1977,1653],{"class":574},[564,1979,663],{"class":651},[564,1981,1737],{"class":570},[564,1983,1740],{"class":682},[564,1985,1743],{"class":651},[564,1987,1988,1990,1992,1994,1996,1998,2000,2002,2004,2006,2008,2010,2012],{"class":566,"line":731},[564,1989,1715],{"class":570},[564,1991,492],{"class":651},[564,1993,654],{"class":578},[564,1995,482],{"class":574},[564,1997,468],{"class":578},[564,1999,1726],{"class":574},[564,2001,594],{"class":574},[564,2003,1418],{"class":597},[564,2005,1653],{"class":574},[564,2007,663],{"class":651},[564,2009,1737],{"class":570},[564,2011,1770],{"class":682},[564,2013,1743],{"class":651},[564,2015,2016,2018],{"class":566,"line":737},[564,2017,806],{"class":570},[564,2019,809],{"class":578},[564,2021,2022],{"class":566,"line":758},[564,2023,734],{"class":574},[564,2025,2026,2028,2030,2032,2034,2036,2038],{"class":566,"line":764},[564,2027,648],{"class":570},[564,2029,492],{"class":651},[564,2031,654],{"class":578},[564,2033,657],{"class":574},[564,2035,579],{"class":660},[564,2037,663],{"class":651},[564,2039,642],{"class":574},[564,2041,2042],{"class":566,"line":791},[564,2043,1803],{"class":623},[564,2045,2046,2048,2050],{"class":566,"line":796},[564,2047,806],{"class":570},[564,2049,696],{"class":578},[564,2051,1812],{"class":623},[564,2053,2054],{"class":566,"line":803},[564,2055,734],{"class":574},[564,2057,2058,2060],{"class":566,"line":812},[564,2059,1821],{"class":570},[564,2061,809],{"class":578},[564,2063,2064],{"class":566,"line":817},[564,2065,630],{"class":574},[1546,2067,2069,2070,2073],{"id":2068},"use-issuccess-for-non-throwing-methods","Use ",[468,2071,2072],{},"isSuccess"," for non-throwing methods",[458,2075,2076,496,2078,496,2080,496,2082,2084,2085,516,2087,2089],{},[468,2077,82],{},[468,2079,94],{},[468,2081,117],{},[468,2083,166],{}," return a ",[468,2086,268],{},[468,2088,247],{}," instead of throwing:",[1563,2091,2092,2233],{},[1566,2093,2094,2097],{"v-slot:rest-api-ver2":560},[458,2095,2096],{},"\u002F\u002F @check-ignore: top-level return in callList error-handling illustration",[555,2098,2100],{"className":557,"code":2099,"language":559,"meta":560,"style":560},"const response = await $b24.actions.v2.callList.make({ \u002F* … *\u002F })\nif (!response.isSuccess) {\n  console.error(response.getErrorMessages().join('; '))\n  return\n}\nconst items = response.getData()\n",[468,2101,2102,2147,2167,2205,2210,2214],{"__ignoreMap":560},[564,2103,2104,2108,2111,2114,2117,2119,2121,2123,2125,2127,2129,2132,2134,2136,2138,2140,2143,2145],{"class":566,"line":567},[564,2105,2107],{"class":2106},"spNyl","const",[564,2109,2110],{"class":578}," response ",[564,2112,2113],{"class":574},"=",[564,2115,2116],{"class":570}," await",[564,2118,1615],{"class":578},[564,2120,482],{"class":574},[564,2122,86],{"class":578},[564,2124,482],{"class":574},[564,2126,1624],{"class":578},[564,2128,482],{"class":574},[564,2130,2131],{"class":578},"callList",[564,2133,482],{"class":574},[564,2135,1634],{"class":682},[564,2137,685],{"class":578},[564,2139,1639],{"class":574},[564,2141,2142],{"class":623}," \u002F* … *\u002F",[564,2144,588],{"class":574},[564,2146,728],{"class":578},[564,2148,2149,2152,2154,2157,2160,2162,2165],{"class":566,"line":604},[564,2150,2151],{"class":570},"if",[564,2153,492],{"class":578},[564,2155,2156],{"class":574},"!",[564,2158,2159],{"class":578},"response",[564,2161,482],{"class":574},[564,2163,2164],{"class":578},"isSuccess) ",[564,2166,642],{"class":574},[564,2168,2169,2172,2174,2176,2178,2180,2182,2185,2188,2190,2193,2195,2197,2200,2202],{"class":566,"line":611},[564,2170,2171],{"class":578},"  console",[564,2173,482],{"class":574},[564,2175,654],{"class":682},[564,2177,685],{"class":651},[564,2179,2159],{"class":578},[564,2181,482],{"class":574},[564,2183,2184],{"class":682},"getErrorMessages",[564,2186,2187],{"class":651},"()",[564,2189,482],{"class":574},[564,2191,2192],{"class":682},"join",[564,2194,685],{"class":651},[564,2196,1653],{"class":574},[564,2198,2199],{"class":597},"; ",[564,2201,1653],{"class":574},[564,2203,2204],{"class":651},"))\n",[564,2206,2207],{"class":566,"line":620},[564,2208,2209],{"class":570},"  return\n",[564,2211,2212],{"class":566,"line":627},[564,2213,630],{"class":574},[564,2215,2216,2218,2221,2223,2226,2228,2231],{"class":566,"line":633},[564,2217,2107],{"class":2106},[564,2219,2220],{"class":578}," items ",[564,2222,2113],{"class":574},[564,2224,2225],{"class":578}," response",[564,2227,482],{"class":574},[564,2229,2230],{"class":682},"getData",[564,2232,1743],{"class":578},[1566,2234,2235,2237],{"v-slot:rest-api-ver3":560},[458,2236,2096],{},[555,2238,2240],{"className":557,"code":2239,"language":559,"meta":560,"style":560},"const response = await $b24.actions.v3.callList.make({ \u002F* … *\u002F })\nif (!response.isSuccess) {\n  console.error(response.getErrorMessages().join('; '))\n  return\n}\nconst items = response.getData()\n",[468,2241,2242,2280,2296,2328,2332,2336],{"__ignoreMap":560},[564,2243,2244,2246,2248,2250,2252,2254,2256,2258,2260,2262,2264,2266,2268,2270,2272,2274,2276,2278],{"class":566,"line":567},[564,2245,2107],{"class":2106},[564,2247,2110],{"class":578},[564,2249,2113],{"class":574},[564,2251,2116],{"class":570},[564,2253,1615],{"class":578},[564,2255,482],{"class":574},[564,2257,86],{"class":578},[564,2259,482],{"class":574},[564,2261,1883],{"class":578},[564,2263,482],{"class":574},[564,2265,2131],{"class":578},[564,2267,482],{"class":574},[564,2269,1634],{"class":682},[564,2271,685],{"class":578},[564,2273,1639],{"class":574},[564,2275,2142],{"class":623},[564,2277,588],{"class":574},[564,2279,728],{"class":578},[564,2281,2282,2284,2286,2288,2290,2292,2294],{"class":566,"line":604},[564,2283,2151],{"class":570},[564,2285,492],{"class":578},[564,2287,2156],{"class":574},[564,2289,2159],{"class":578},[564,2291,482],{"class":574},[564,2293,2164],{"class":578},[564,2295,642],{"class":574},[564,2297,2298,2300,2302,2304,2306,2308,2310,2312,2314,2316,2318,2320,2322,2324,2326],{"class":566,"line":611},[564,2299,2171],{"class":578},[564,2301,482],{"class":574},[564,2303,654],{"class":682},[564,2305,685],{"class":651},[564,2307,2159],{"class":578},[564,2309,482],{"class":574},[564,2311,2184],{"class":682},[564,2313,2187],{"class":651},[564,2315,482],{"class":574},[564,2317,2192],{"class":682},[564,2319,685],{"class":651},[564,2321,1653],{"class":574},[564,2323,2199],{"class":597},[564,2325,1653],{"class":574},[564,2327,2204],{"class":651},[564,2329,2330],{"class":566,"line":620},[564,2331,2209],{"class":570},[564,2333,2334],{"class":566,"line":627},[564,2335,630],{"class":574},[564,2337,2338,2340,2342,2344,2346,2348,2350],{"class":566,"line":633},[564,2339,2107],{"class":2106},[564,2341,2220],{"class":578},[564,2343,2113],{"class":574},[564,2345,2225],{"class":578},[564,2347,482],{"class":574},[564,2349,2230],{"class":682},[564,2351,1743],{"class":578},[458,2353,2354,2355,496,2358,2360,2361,2364,2365,2368,2369,2371],{},"For batches with ",[468,2356,2357],{},"isHaltOnError: false",[468,2359,2072],{}," flips false on ",[505,2362,2363],{},"any"," sub-call failure but ",[468,2366,2367],{},"getData()"," still contains the successful entries. Iterate and check per-row ",[468,2370,541],{}," if you need to know which calls passed.",[1546,2373,2375,2376,2378,2379],{"id":2374},"catch-around-for-await-for-fetchlist","Catch around ",[468,2377,1044],{}," for ",[468,2380,103],{},[1563,2382,2383,2551],{},[1566,2384,2385,2388],{"v-slot:rest-api-ver2":560},[458,2386,2387],{},"\u002F\u002F @check-ignore: top-level for-await in fetchList error-handling illustration",[555,2389,2391],{"className":557,"code":2390,"language":559,"meta":560,"style":560},"try {\n  for await (const chunk of $b24.actions.v2.fetchList.make({ \u002F* … *\u002F })) {\n    await persist(chunk)\n  }\n}\ncatch (error) {\n  if (\n    error instanceof SdkError\n    && error.code === 'JSSDK_CORE_B24_FETCH_LIST_METHOD_API_V2'\n  ) {\n    \u002F\u002F a page request failed; persisted chunks before this point are still good\n    return resumeFromLastSavedId()\n  }\n  throw error\n}\n",[468,2392,2393,2399,2448,2463,2467,2471,2479,2486,2496,2515,2522,2527,2537,2541,2547],{"__ignoreMap":560},[564,2394,2395,2397],{"class":566,"line":567},[564,2396,614],{"class":570},[564,2398,617],{"class":574},[564,2400,2401,2404,2406,2408,2410,2413,2416,2418,2420,2422,2424,2426,2428,2431,2433,2435,2437,2439,2441,2443,2446],{"class":566,"line":604},[564,2402,2403],{"class":570},"  for",[564,2405,2116],{"class":570},[564,2407,492],{"class":651},[564,2409,2107],{"class":2106},[564,2411,2412],{"class":578}," chunk",[564,2414,2415],{"class":574}," of",[564,2417,1615],{"class":578},[564,2419,482],{"class":574},[564,2421,86],{"class":578},[564,2423,482],{"class":574},[564,2425,1624],{"class":578},[564,2427,482],{"class":574},[564,2429,2430],{"class":578},"fetchList",[564,2432,482],{"class":574},[564,2434,1634],{"class":682},[564,2436,685],{"class":651},[564,2438,1639],{"class":574},[564,2440,2142],{"class":623},[564,2442,588],{"class":574},[564,2444,2445],{"class":651},")) ",[564,2447,642],{"class":574},[564,2449,2450,2453,2456,2458,2461],{"class":566,"line":611},[564,2451,2452],{"class":570},"    await",[564,2454,2455],{"class":682}," persist",[564,2457,685],{"class":651},[564,2459,2460],{"class":578},"chunk",[564,2462,728],{"class":651},[564,2464,2465],{"class":566,"line":620},[564,2466,734],{"class":574},[564,2468,2469],{"class":566,"line":627},[564,2470,630],{"class":574},[564,2472,2473,2475,2477],{"class":566,"line":633},[564,2474,636],{"class":570},[564,2476,639],{"class":578},[564,2478,642],{"class":574},[564,2480,2481,2483],{"class":566,"line":645},[564,2482,648],{"class":570},[564,2484,2485],{"class":651}," (\n",[564,2487,2488,2491,2493],{"class":566,"line":668},[564,2489,2490],{"class":578},"    error",[564,2492,657],{"class":574},[564,2494,2495],{"class":660}," SdkError\n",[564,2497,2498,2501,2503,2505,2507,2509,2511,2513],{"class":566,"line":674},[564,2499,2500],{"class":574},"    &&",[564,2502,696],{"class":578},[564,2504,482],{"class":574},[564,2506,468],{"class":578},[564,2508,1726],{"class":574},[564,2510,594],{"class":574},[564,2512,1030],{"class":597},[564,2514,601],{"class":574},[564,2516,2517,2520],{"class":566,"line":731},[564,2518,2519],{"class":651},"  ) ",[564,2521,642],{"class":574},[564,2523,2524],{"class":566,"line":737},[564,2525,2526],{"class":623},"    \u002F\u002F a page request failed; persisted chunks before this point are still good\n",[564,2528,2529,2532,2535],{"class":566,"line":758},[564,2530,2531],{"class":570},"    return",[564,2533,2534],{"class":682}," resumeFromLastSavedId",[564,2536,1743],{"class":651},[564,2538,2539],{"class":566,"line":764},[564,2540,734],{"class":574},[564,2542,2543,2545],{"class":566,"line":791},[564,2544,1821],{"class":570},[564,2546,809],{"class":578},[564,2548,2549],{"class":566,"line":796},[564,2550,630],{"class":574},[1566,2552,2553,2555],{"v-slot:rest-api-ver3":560},[458,2554,2387],{},[555,2556,2558],{"className":557,"code":2557,"language":559,"meta":560,"style":560},"try {\n  for await (const chunk of $b24.actions.v3.fetchList.make({ \u002F* … *\u002F })) {\n    await persist(chunk)\n  }\n}\ncatch (error) {\n  if (\n    error instanceof SdkError\n    && error.code === 'JSSDK_CORE_B24_FETCH_LIST_METHOD_API_V3'\n  ) {\n    \u002F\u002F a page request failed; persisted chunks before this point are still good\n    return resumeFromLastSavedId()\n  }\n  throw error\n}\n",[468,2559,2560,2566,2610,2622,2626,2630,2638,2644,2652,2670,2676,2680,2688,2692,2698],{"__ignoreMap":560},[564,2561,2562,2564],{"class":566,"line":567},[564,2563,614],{"class":570},[564,2565,617],{"class":574},[564,2567,2568,2570,2572,2574,2576,2578,2580,2582,2584,2586,2588,2590,2592,2594,2596,2598,2600,2602,2604,2606,2608],{"class":566,"line":604},[564,2569,2403],{"class":570},[564,2571,2116],{"class":570},[564,2573,492],{"class":651},[564,2575,2107],{"class":2106},[564,2577,2412],{"class":578},[564,2579,2415],{"class":574},[564,2581,1615],{"class":578},[564,2583,482],{"class":574},[564,2585,86],{"class":578},[564,2587,482],{"class":574},[564,2589,1883],{"class":578},[564,2591,482],{"class":574},[564,2593,2430],{"class":578},[564,2595,482],{"class":574},[564,2597,1634],{"class":682},[564,2599,685],{"class":651},[564,2601,1639],{"class":574},[564,2603,2142],{"class":623},[564,2605,588],{"class":574},[564,2607,2445],{"class":651},[564,2609,642],{"class":574},[564,2611,2612,2614,2616,2618,2620],{"class":566,"line":611},[564,2613,2452],{"class":570},[564,2615,2455],{"class":682},[564,2617,685],{"class":651},[564,2619,2460],{"class":578},[564,2621,728],{"class":651},[564,2623,2624],{"class":566,"line":620},[564,2625,734],{"class":574},[564,2627,2628],{"class":566,"line":627},[564,2629,630],{"class":574},[564,2631,2632,2634,2636],{"class":566,"line":633},[564,2633,636],{"class":570},[564,2635,639],{"class":578},[564,2637,642],{"class":574},[564,2639,2640,2642],{"class":566,"line":645},[564,2641,648],{"class":570},[564,2643,2485],{"class":651},[564,2645,2646,2648,2650],{"class":566,"line":668},[564,2647,2490],{"class":578},[564,2649,657],{"class":574},[564,2651,2495],{"class":660},[564,2653,2654,2656,2658,2660,2662,2664,2666,2668],{"class":566,"line":674},[564,2655,2500],{"class":574},[564,2657,696],{"class":578},[564,2659,482],{"class":574},[564,2661,468],{"class":578},[564,2663,1726],{"class":574},[564,2665,594],{"class":574},[564,2667,1051],{"class":597},[564,2669,601],{"class":574},[564,2671,2672,2674],{"class":566,"line":731},[564,2673,2519],{"class":651},[564,2675,642],{"class":574},[564,2677,2678],{"class":566,"line":737},[564,2679,2526],{"class":623},[564,2681,2682,2684,2686],{"class":566,"line":758},[564,2683,2531],{"class":570},[564,2685,2534],{"class":682},[564,2687,1743],{"class":651},[564,2689,2690],{"class":566,"line":764},[564,2691,734],{"class":574},[564,2693,2694,2696],{"class":566,"line":791},[564,2695,1821],{"class":570},[564,2697,809],{"class":578},[564,2699,2700],{"class":566,"line":796},[564,2701,630],{"class":574},[1546,2703,2705],{"id":2704},"decide-what-to-retry","Decide what to retry",[828,2707,2708,2718],{},[831,2709,2710],{},[834,2711,2712,2715],{},[837,2713,2714],{},"Error condition",[837,2716,2717],{},"Safe to retry?",[850,2719,2720,2731,2741,2754,2765],{},[834,2721,2722,2728],{},[855,2723,2724,496,2726],{},[468,2725,1449],{},[468,2727,1473],{},[855,2729,2730],{},"Yes — the built-in limiter already does.",[834,2732,2733,2738],{},[855,2734,2735,2737],{},[468,2736,1381],{}," (Frame\u002FOAuth)",[855,2739,2740],{},"Yes — already automatic. For custom transports: refresh, retry once.",[834,2742,2743,2751],{},[855,2744,2745,496,2747,496,2749],{},[468,2746,1403],{},[468,2748,1418],{},[468,2750,1434],{},[855,2752,2753],{},"No — needs human intervention (re-auth, fix scopes).",[834,2755,2756,2762],{},[855,2757,2758,496,2760],{},[468,2759,1492],{},[468,2761,1515],{},[855,2763,2764],{},"No — request is malformed; retrying gives the same error.",[834,2766,2767,2770],{},[855,2768,2769],{},"Network \u002F 5xx without a specific code",[855,2771,2772,2773,2775,2776,2779],{},"Yes — but only via ",[468,2774,1258],{}," boundary; bump ",[468,2777,2778],{},"restrictionParams.maxRetries"," if you need more attempts.",[453,2781,2783],{"id":2782},"see-also","See also",[462,2785,2786,2793,2800],{},[465,2787,2788,2792],{},[1532,2789,2791],{"href":2790},"\u002Fdocs\u002Fworking-with-the-rest-api\u002Fchoosing-the-right-method\u002F","Choosing the right method"," — picks the right primitive before you have to read this page.",[465,2794,2795,2799],{},[1532,2796,2798],{"href":2797},"\u002Fdocs\u002Fworking-with-the-rest-api\u002Flimiters\u002F","Restrictions System"," — rate limit, operating-time and adaptive delay configuration.",[465,2801,2802,2808,2809,496,2811,496,2813,2815,2816,496,2819,496,2822,496,2825,1393,2828,2831,2832,2838,2839,2845,2846,2849,2850,2852],{},[1532,2803,2806],{"href":2804,"rel":2805},"https:\u002F\u002Fgithub.com\u002Fbitrix24\u002Fb24jssdk\u002Fblob\u002Fmain\u002Fpackages\u002Fjssdk\u002Fsrc\u002Fcore\u002Fhttp\u002Fajax-result.ts",[1536],[468,2807,247],{}," — full payload surface (",[468,2810,2072],{},[468,2812,2230],{},[468,2814,2184],{},"). The v2-only paging helpers ",[468,2817,2818],{},"isMore",[468,2820,2821],{},"hasMore",[468,2823,2824],{},"getNext",[468,2826,2827],{},"fetchNext",[468,2829,2830],{},"getTotal"," are deprecated and slated for removal in 2.0.0; use ",[1532,2833,2835],{"href":2834},"\u002Fdocs\u002Fworking-with-the-rest-api\u002Fcall-list-rest-api-ver2\u002F",[468,2836,2837],{},"b24.actions.v{2,3}.callList.make"," or ",[1532,2840,2842],{"href":2841},"\u002Fdocs\u002Fworking-with-the-rest-api\u002Ffetch-list-rest-api-ver2\u002F",[468,2843,2844],{},"fetchList.make"," instead. ",[468,2847,2848],{},"getNext()"," continues to throw ",[468,2851,1007],{}," against v3 clients.",[2854,2855,2856],"style",{},"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 .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}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 .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}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 .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}",{"title":560,"searchDepth":604,"depth":604,"links":2858},[2859,2860,2861,2863,2871],{"id":455,"depth":604,"text":456},{"id":822,"depth":604,"text":823},{"id":1341,"depth":604,"text":2862},"REST-side codes that come back as AjaxError",{"id":1543,"depth":604,"text":1544,"children":2864},[2865,2866,2868,2870],{"id":1548,"depth":611,"text":1549},{"id":2068,"depth":611,"text":2867},"Use isSuccess for non-throwing methods",{"id":2374,"depth":611,"text":2869},"Catch around for await for FetchList",{"id":2704,"depth":611,"text":2705},{"id":2782,"depth":604,"text":2783},"md",[2874,2877,2879,2880],{"label":470,"iconName":2875,"to":2876},"GitHubIcon","https:\u002F\u002Fgithub.com\u002Fbitrix24\u002Fb24jssdk\u002Fblob\u002Fmain\u002Fpackages\u002Fjssdk\u002Fsrc\u002Fcore\u002Fsdk-error.ts",{"label":1345,"iconName":2875,"to":2878},"https:\u002F\u002Fgithub.com\u002Fbitrix24\u002Fb24jssdk\u002Fblob\u002Fmain\u002Fpackages\u002Fjssdk\u002Fsrc\u002Fcore\u002Fhttp\u002Fajax-error.ts",{"label":247,"iconName":2875,"to":2804},{"label":2881,"iconName":2875,"to":2882},"Skill — b24jssdk-core","https:\u002F\u002Fgithub.com\u002Fbitrix24\u002Fb24jssdk\u002Fblob\u002Fmain\u002Fskills\u002Fb24jssdk-core\u002FSKILL.md",{},{"title":226},{"title":447,"description":229},"LuusIETvi95yw0Ft7KcuWvr9C5SRPQPUrqferTk1zGM",{"data":2888,"body":2889},{},{"type":2890,"children":2891},"root",[2892],{"type":2893,"tag":458,"props":2894,"children":2895},"element",{},[2896],{"type":2897,"value":229},"text",1780384098594]