Skip to content

Latest commit

 

History

History
374 lines (314 loc) · 10.7 KB

File metadata and controls

374 lines (314 loc) · 10.7 KB

Create a Subfolder disk.folder.addSubFolder

{% 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: disk

Who can execute the method: a user with "Add" or "Edit" access permission for the required folder

The method disk.folder.addSubFolder creates a subfolder.

Method Parameters

{% include Note on required parameters %}

#| || Name type | Description || || id* integer | Identifier of the parent folder.

The identifier can be obtained using the method disk.storage.getChildren if the folder is in the root of the storage, and using the method disk.folder.getChildren if the folder is in another folder || || data* array | An array with the field NAME, where NAME is the name of the subfolder || |#

{% note info "" %}

To manage access to the created folder, use the method disk.folder.shareToUser

{% endnote %}

Code Examples

{% include Note on examples %}

{% list tabs %}

  • cURL (Webhook)

    curl -X POST \
    -H "Content-Type: application/json" \
    -H "Accept: application/json" \
    -d '{"id":8907,"data":{"NAME":"Folder in Folder"}}' \
    https://**put_your_bitrix24_address**/rest/**put_your_user_id_here**/**put_your_webhook_here**/disk.folder.addSubFolder
  • cURL (OAuth)

    curl -X POST \
    -H "Content-Type: application/json" \
    -H "Accept: application/json" \
    -d '{"id":8907,"data":{"NAME":"Folder in Folder"},"auth":"**put_access_token_here**"}' \
    https://**put_your_bitrix24_address**/rest/disk.folder.addSubFolder
  • 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 AddSubfolderResult = {
      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
      UPDATE_TIME: ISODate
      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<AddSubfolderResult>({
        method: 'disk.folder.addSubFolder',
        params: {
          id: 8907,
          data: {
            NAME: 'Subfolder name',
          },
        },
        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 subfolder:', result.ID, result.NAME)
      }
    } 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 addSubfolder() {
        try {
          // Initialize the SDK inside a Bitrix24 frame
          const $b24 = await B24Js.initializeB24Frame()
    
          const response = await $b24.actions.v2.call.make({
            method: 'disk.folder.addSubFolder',
            params: {
              id: 8907,
              data: {
                NAME: 'Subfolder name',
              },
            },
            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 subfolder:', result.ID, result.NAME)
        } catch (error) {
          // Thrown on transport or SDK failures (AjaxError, SdkError, etc.)
          console.error(error)
        }
      }
    
      document.addEventListener('DOMContentLoaded', addSubfolder)
    </script>
  • PHP

    try {
        $response = $b24Service
            ->core
            ->call(
                'disk.folder.addSubFolder',
                [
                    'id' => 8907,
                    'data' => [
                        'NAME' => 'Folder in Folder'
                    ]
                ]
            );
    
        $result = $response
            ->getResponseData()
            ->getResult();
    
        echo 'Success: ' . print_r($result, true);
        processData($result);
    
    } catch (Throwable $e) {
        error_log($e->getMessage());
        echo 'Error adding subfolder: ' . $e->getMessage();
    }
  • BX24.js

    BX24.callMethod(
        "disk.folder.addSubFolder",
        {
            id: 8907,
            data: {
                NAME: 'Folder in Folder'
            },
        },
        function (result) {
            if (result.error())
                console.error(result.error());
            else
                console.dir(result.data());
        }
    );
  • PHP CRest

    require_once('crest.php');
    
    $result = CRest::call(
        'disk.folder.addSubFolder',
        [
            'id' => 8907,
            'data' => [
                'NAME' => 'Folder in Folder'
            ]
        ]
    );
    
    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.folder.addSubFolder", b24.Params{
    	"id": 8907,
    	"data": b24.Params{
    		"NAME": "Folder in Folder",
    	},
    })
    if err != nil {
    	return fmt.Errorf("disk.folder.addSubFolder: %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 %}

Response Handling

HTTP Status: 200

{
    "result": {
        "ID": 8930,
        "NAME": "Folder in Folder",
        "CODE": null,
        "STORAGE_ID": "1357",
        "TYPE": "folder",
        "REAL_OBJECT_ID": 8930,
        "PARENT_ID": "8907",
        "DELETED_TYPE": 0,
        "CREATE_TIME": "2026-01-13T11:20:40+01:00",
        "UPDATE_TIME": "2026-01-13T11:20:40+01: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/Folder/Folder in Folder"
    },
    "time": {
        "start": 1768292440,
        "finish": 1768292440.894889,
        "duration": 0.8948891162872314,
        "processing": 0,
        "date_start": "2026-01-13T11:20:40+01:00",
        "date_finish": "2026-01-13T11:20:40+01:00",
        "operating_reset_at": 1768293040,
        "operating": 0
    }
}

Returned Data

#| || Name type | Description || || result array | An array with data about the created folder || || ID integer | Identifier of the folder || || NAME string | Name of the folder || || 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 deleted
  • 3 — in the trash
  • 4 — deleted along with the parent folder || || CREATE_TIME datetime | Date and time of folder creation || || UPDATE_TIME datetime | Date and time of the last update of the folder || || DELETE_TIME datetime | Date and time of moving the folder to the trash || || CREATED_BY integer | Identifier of the user who created the folder || || UPDATED_BY integer | Identifier of the user who made the last change || || DELETED_BY integer | Identifier of the user who deleted the folder || || DETAIL_URL string | Link to open the folder in the interface || || time time | Information about the execution time of the request || |#

Error Handling

HTTP Status: 400

{
    "error":"ERROR_ARGUMENT",
    "error_description":"Invalid value of parameter {Parameter #1}"
}

{% include notitle error handling %}

Possible Error Codes

#| || 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 | The folder with the specified id was not found || || ACCESS_DENIED | Access denied | Insufficient rights to create the folder || |#

{% include system errors %}

Continue Learning