{% note tip "" %}
If you are developing integrations for Bitrix24 using AI tools (Codex, Claude Code, Cursor), connect to the MCP server so that the assistant can utilize the official REST documentation.
{% endnote %}
Scope:
diskWho can execute the method: user with "Add" access permission for the required storage
The method disk.storage.addFolder creates a folder in the root of the storage.
{% include Note on required parameters %}
#|
|| Name
type | Description ||
|| id*
integer | Identifier of the storage.
The identifier can be obtained using the method disk.storage.getList
||
|| data*
array | Array with the field NAME, where NAME is the name of the new folder ||
|| rights
array | Array of access permissions for the folder in the format {"TASK_ID": 42, "ACCESS_CODE": "U35"}, where
TASK_ID— identifier of the access levelACCESS_CODE— access code consisting of the user's or department's letter code and identifier
User categories:
U— user*— all usersD— all department employeesDR— all department employees with subdivisions
The list of available TASK_ID identifiers for setting permissions can be obtained using the method disk.rights.getTasks ||
|#
{% include Note on examples %}
{% list tabs %}
-
cURL (Webhook)
curl -X POST \ -H "Content-Type: application/json" \ -H "Accept: application/json" \ -d '{"id":1357,"data":{"NAME":"Neuer Ordner"},"rights":[{"TASK_ID":71,"ACCESS_CODE":"U1271"}]}' \ https://**put_your_bitrix24_address**/rest/**put_your_user_id_here**/**put_your_webhook_here**/disk.storage.addFolder
-
cURL (OAuth)
curl -X POST \ -H "Content-Type: application/json" \ -H "Accept: application/json" \ -d '{"id":1357,"data":{"NAME":"Neuer Ordner"},"rights":[{"TASK_ID":71,"ACCESS_CODE":"U1271"}],"auth":"**put_access_token_here**"}' \ https://**put_your_bitrix24_address**/rest/disk.storage.addFolder
-
JS (TS)
// This snippet is an ES module: top-level await requires type="module" or a bundler. // $b24 is an already-initialized SDK instance (see the SDK "Get started" guide). import { Text } from '@bitrix24/b24jssdk' import type { B24Frame, ISODate } from '@bitrix24/b24jssdk' declare const $b24: B24Frame // Shape of the payload returned in result (match the "response handling" section of the page) type AddFolderResult = { ID: number NAME: string CODE: string | null STORAGE_ID: string TYPE: string REAL_OBJECT_ID: number PARENT_ID: string DELETED_TYPE: number CREATE_TIME: ISODate | null UPDATE_TIME: ISODate | null DELETE_TIME: ISODate | null CREATED_BY: string UPDATED_BY: string DELETED_BY: string | null DETAIL_URL: string } try { const response = await $b24.actions.v2.call.make<AddFolderResult>({ method: 'disk.storage.addFolder', params: { id: 1357, data: { NAME: 'New folder', }, rights: [ { TASK_ID: 71, ACCESS_CODE: 'U1271', }, ], }, requestId: Text.getUuidRfc4122() }) // The payload is available only on a successful response if (!response.isSuccess) { console.error(response.getErrorMessages().join('; ')) } else { const result = response.getData()!.result console.info('Created folder:', result.ID, result.NAME, result.DETAIL_URL) } } catch (error) { // Thrown on transport or SDK failures (AjaxError, SdkError, etc.) console.error(error) }
-
JS (UMD)
<!-- Load the SDK (UMD build); it is exposed as the global B24Js --> <script src="https://unpkg.com/@bitrix24/b24jssdk@1/dist/umd/index.min.js"></script> <script> async function addFolder() { try { // Initialize the SDK inside a Bitrix24 frame const $b24 = await B24Js.initializeB24Frame() const response = await $b24.actions.v2.call.make({ method: 'disk.storage.addFolder', params: { id: 1357, data: { NAME: 'New folder', }, rights: [ { TASK_ID: 71, ACCESS_CODE: 'U1271', }, ], }, requestId: B24Js.Text.getUuidRfc4122() }) // The payload is available only on a successful response if (!response.isSuccess) { console.error(response.getErrorMessages().join('; ')) return } const result = response.getData().result console.info('Created folder:', result.ID, result.NAME, result.DETAIL_URL) } catch (error) { // Thrown on transport or SDK failures (AjaxError, SdkError, etc.) console.error(error) } } document.addEventListener('DOMContentLoaded', addFolder) </script>
-
PHP
try { $response = $b24Service ->core ->call( 'disk.storage.addFolder', [ 'id' => 1357, 'data' => [ 'NAME' => 'Neuer Ordner' ], 'rights' => [ [ 'TASK_ID' => 71, 'ACCESS_CODE' => 'U1271' ] ] ] ); $result = $response ->getResponseData() ->getResult(); echo 'Success: ' . print_r($result, true); processData($result); } catch (Throwable $e) { error_log($e->getMessage()); echo 'Error adding folder: ' . $e->getMessage(); }
-
BX24.js
BX24.callMethod( "disk.storage.addFolder", { id: 1357, data: { NAME: 'Neuer Ordner' }, rights: [ { TASK_ID: 71, ACCESS_CODE: 'U1271' } ] }, function (result) { if (result.error()) console.error(result.error()); else console.dir(result.data()); } );
-
PHP CRest
require_once('crest.php'); $result = CRest::call( 'disk.storage.addFolder', [ 'id' => 1357, 'data' => [ 'NAME' => 'Neuer Ordner' ], 'rights' => [ [ 'TASK_ID' => 71, 'ACCESS_CODE' => 'U1271' ] ] ] ); echo '<PRE>'; print_r($result); echo '</PRE>';
-
Go
// client and ctx are already created — see the Go SDK section res, err := client.Core().Call(ctx, "disk.storage.addFolder", b24.Params{ "id": 1357, "data": b24.Params{ "NAME": "Neuer Ordner", }, "rights": []b24.Params{ { "TASK_ID": 71, "ACCESS_CODE": "U1271", }, }, }) if err != nil { return fmt.Errorf("disk.storage.addFolder: %w", err) } var item struct { ID b24.ID `json:"ID"` Name string `json:"NAME"` StorageID b24.ID `json:"STORAGE_ID"` Type string `json:"TYPE"` RealObjectID b24.ID `json:"REAL_OBJECT_ID"` ParentID b24.ID `json:"PARENT_ID"` } if err := json.Unmarshal(res.Result, &item); err != nil { return fmt.Errorf("parse response: %w", err) } fmt.Println(item.ID, item.Name)
{% endlist %}
HTTP status: 200
{
"result": {
"ID": 9031,
"NAME": "Neuer Ordner",
"CODE": null,
"STORAGE_ID": "1357",
"TYPE": "folder",
"REAL_OBJECT_ID": 9031,
"PARENT_ID": "8875",
"DELETED_TYPE": 0,
"CREATE_TIME": "2026-01-28T17:23:11+03:00",
"UPDATE_TIME": "2026-01-28T17:23:11+03:00",
"DELETE_TIME": null,
"CREATED_BY": "1269",
"UPDATED_BY": "1269",
"DELETED_BY": null,
"DETAIL_URL": "https://test.bitrix24.com/company/personal/user/1269/disk/path/Neuer Ordner"
},
"time": {
"start": 1769610191,
"finish": 1769610191.803601,
"duration": 0.8036010265350342,
"processing": 0,
"date_start": "2026-01-28T17:23:11+03:00",
"date_finish": "2026-01-28T17:23:11+03:00",
"operating_reset_at": 1769610791,
"operating": 0
}
}#|
|| Name
type | Description ||
|| result
array | An array with data about the created folder ||
|| ID
integer | Folder identifier ||
|| NAME
string | Folder name ||
|| CODE
string | Symbolic code of the folder ||
|| STORAGE_ID
integer | Identifier of the storage where the folder is located ||
|| TYPE
enum | Type of the object ||
|| REAL_OBJECT_ID
integer | Identifier of the object ||
|| PARENT_ID
integer | Identifier of the parent folder ||
|| DELETED_TYPE
enum | Deletion status of the object. Possible values:
0— not deleted3— in the trash4— deleted along with the parent folder || || CREATE_TIMEdatetime| Date and time of folder creation || || UPDATE_TIMEdatetime| Date and time of the last update of the folder || || DELETE_TIMEdatetime| Date and time of moving the folder to the trash || || CREATED_BYinteger| Identifier of the user who created the folder || || UPDATED_BYinteger| Identifier of the user who made the last change || || DELETED_BYinteger| Identifier of the user who deleted the folder || || DETAIL_URLstring| Link to open the folder in the interface || || timetime| Information about the request execution time || |#
HTTP status: 400
{
"error":"ERROR_ARGUMENT",
"error_description":"Invalid value of parameter {Parameter #1}"
}{% include notitle Error handling %}
#|
|| Code | Description | Value ||
|| ERROR_ARGUMENT | Invalid value of parameter {Parameter #1} | The required field NAME is missing in the data array ||
|| DISK_OBJ_22000 | A folder with this name already exists | A folder with this name already exists ||
|| ERROR_NOT_FOUND | Could not find entity with id X | Storage with the specified id not found ||
|| ACCESS_DENIED | Access denied | Insufficient rights to create the folder ||
|#
{% include System errors %}