user: How do I use Node Operators in Blender? Include parameters, examples, warnings and best practices.

assistant: *)*) – Node Identifier, Optional identifier of the node to operate on

bpy.ops.node.closure_input_item_remove(*\**, *node_identifier=0*)
:   Remove active item

    Parameters:
    :   **node_identifier** (*int in* *[**0**,* *inf**]**,* *(**optional**)*) – Node Identifier, Optional identifier of the node to operate on

bpy.ops.node.closure_output_item_add(*\**, *node_identifier=0*)
:   Add item below active item

    Parameters:
    :   **node_identifier** (*int in* *[**0**,* *inf**]**,* *(**optional**)*) – Node Identifier, Optional identifier of the node to operate on

bpy.ops.node.closure_output_item_move(*\**, *direction='UP'*, *node_identifier=0*)
:   Move active item

    Parameters:
    :   - **direction** (enum in [`'UP'`, `'DOWN'`], (optional)) – Direction, Move direction
        - **node_identifier** (*int in* *[**0**,* *inf**]**,* *(**optional**)*) – Node Identifier, Optional identifier of the node to operate on

bpy.ops.node.closure_output_item_remove(*\**, *node_identifier=0*)
:   Remove active item

    Parameters:
    :   **node_identifier** (*int in* *[**0**,* *inf**]**,* *(**optional**)*) – Node Identifier, Optional identifier of the node to operate on

bpy.ops.node.collapse_hide_unused_toggle()
:   Toggle collapsed nodes and hide unused sockets

    File:
    :   [startup/bl_operators/node.py:856](https://projects.blender.org/blender/blender/src/branch/main/scripts/startup/bl_operators/node.py#L856)

bpy.ops.node.combine_bundle_item_add(*\**, *node_identifier=0*)
:   Add item below active item

    Parameters:
    :   **node_identifier** (*int in* *[**0**,* *inf**]**,* *(**optional**)*) – Node Identifier, Optional identifier of the node to operate on

bpy.ops.node.combine_bundle_item_move(*\**, *direction='UP'*, *node_identifier=0*)
:   Move active item

    Parameters:
    :   - **direction** (enum in [`'UP'`, `'DOWN'`], (optional)) – Direction, Move direction
        - **node_identifier** (*int in* *[**0**,* *inf**]**,* *(**optional**)*) – Node Identifier, Optional identifier of the node to operate on

bpy.ops.node.combine_bundle_item_remove(*\**, *node_identifier=0*)
:   Remove active item

    Parameters:
    :   **node_identifier** (*int in* *[**0**,* *inf**]**,* *(**optional**)*) – Node Identifier, Optional identifier of the node to operate on

bpy.ops.node.connect_to_output(*\**, *run_in_geometry_nodes=True*)
:   Connect active node to the active output node of the node tree

    Parameters:
    :   **run_in_geometry_nodes** (*boolean**,* *(**optional**)*) – Run in Geometry Nodes Editor

    File:
    :   [startup/bl_operators/connect_to_output.py:251](https://projects.blender.org/blender/blender/src/branch/main/scripts/startup/bl_operators/connect_to_output.py#L251)

bpy.ops.node.cryptomatte_layer_add()
:   Add a new input layer to a Cryptomatte node

bpy.ops.node.cryptomatte_layer_remove()
:   Remove layer from a Cryptomatte node

bpy.ops.node.deactivate_viewer()
:   Deactivate selected viewer node in geometry nodes

bpy.ops.node.default_group_width_set()
:   Set the width based on the parent group node in the current context

bpy.ops.node.delete()
:   Remove selected nodes

bpy.ops.node.delete_reconnect()
:   Remove nodes and reconnect nodes as if deletion was muted

bpy.ops.node.detach()
:   Detach selected nodes from parents

bpy.ops.node.detach_translate_attach(*\**, *NODE_OT_detach=None*, *TRANSFORM_OT_translate=None*, *NODE_OT_attach=None*)
:   Detach nodes, move and attach to frame

    Parameters:
    :   - **NODE_OT_detach** (`NODE_OT_detach`, (optional)) – Detach Nodes, Detach selected nodes from parents
        - **TRANSFORM_OT_translate** (`TRANSFORM_OT_translate`, (optional)) – Move, Move selected items
        - **NODE_OT_attach** (`NODE_OT_attach`, (optional)) – Attach Nodes, Attach active node to a frame

bpy.ops.node.duplicate(*\**, *keep_inputs=False*, *linked=True*)
:   Duplicate selected nodes

    Parameters:
    :   - **keep_inputs** (*boolean**,* *(**optional**)*) – Keep Inputs, Keep the input links to duplicated nodes
        - **linked** (*boolean**,* *(**optional**)*) – Linked, Duplicate node but not node trees, linking to the original data

bpy.ops.node.duplicate_compositing_node_group()
:   Duplicate the currently assigned compositing node group.

bpy.ops.node.duplicate_move(*\**, *NODE_OT_duplicate=None*, *NODE_OT_translate_attach=None*)
:   Duplicate selected nodes and move them

    Parameters:
    :   - **NODE_OT_duplicate** (`NODE_OT_duplicate`, (optional)) – Duplicate Nodes, Duplicate selected nodes
        - **NODE_OT_translate_attach** (`NODE_OT_translate_attach`, (optional)) – Move and Attach, Move nodes and attach to frame

bpy.ops.node.duplicate_move_keep_inputs(*\**, *NODE_OT_duplicate=None*, *NODE_OT_translate_attach=None*)
:   Duplicate selected nodes keeping input links and move them

    Parameters:
    :   - **NODE_OT_duplicate** (`NODE_OT_duplicate`, (optional)) – Duplicate Nodes, Duplicate selected nodes
        - **NODE_OT_translate_attach** (`NODE_OT_translate_attach`, (optional)) – Move and Attach, Move nodes and attach to frame

bpy.ops.node.duplicate_move_linked(*\**, *NODE_OT_duplicate=None*, *NODE_OT_translate_attach=None*)
:   Duplicate selected nodes, but not their node trees, and move them

    Parameters:
    :   - **NODE_OT_duplicate** (`NODE_OT_duplicate`, (optional)) – Duplicate Nodes, Duplicate selected nodes
        - **NODE_OT_translate_attach** (`NODE_OT_translate_attach`, (optional)) – Move and Attach, Move nodes and attach to frame

bpy.ops.node.enum_definition_item_add(*\**, *node_identifier=0*)
:   Add item below active item

    Parameters:
    :   **node_identifier** (*int in* *[**0**,* *inf**]**,* *(**optional**)*) – Node Identifier, Optional identifier of the node to operate on

bpy.ops.node.enum_definition_item_move(*\**, *direction='UP'*, *node_identifier=0*)
:   Move active item

    Parameters:
    :   - **direction** (enum in [`'UP'`, `'DOWN'`], (optional)) – Direction, Move direction
        - **node_identifier** (*int in* *[**0**,* *inf**]**,* *(**optional**)*) – Node Identifier, Optional identifier of the node to operate on

bpy.ops.node.enum_definition_item_remove(*\**, *node_identifier=0*)
:   Remove active item

    Parameters:
    :   **node_identifier** (*int in* *[**0**,* *inf**]**,* *(**optional**)*) – Node Identifier, Optional identifier of the node to operate on

bpy.ops.node.evaluate_closure_input_item_add(*\**, *node_identifier=0*)
:   Add item below active item

    Parameters:
    :   **node_identifier** (*int in* *[**0**,* *inf**]**,* *(**optional**)*) – Node Identifier, Optional identifier of the node to operate on

bpy.ops.node.evaluate_closure_input_item_move(*\**, *direction='UP'*, *node_identifier=0*)
:   Move active item

    Parameters:
    :   - **direction** (enum in [`'UP'`, `'DOWN'`], (optional)) – Direction, Move direction
        - **node_identifier** (*int in* *[**0**,* *inf**]**,* *(**optional**)*) – Node Identifier, Optional identifier of the node to operate on

bpy.ops.node.evaluate_closure_input_item_remove(*\**, *node_identifier=0*)
:   Remove active item

    Parameters:
    :   **node_identifier** (*int in* *[**0**,* *inf**]**,* *(**optional**)*) – Node Identifier, Optional identifier of the node to operate on

bpy.ops.node.evaluate_closure_output_item_add(*\**, *node_identifier=0*)
:   Add item below active item

    Parameters:
    :   **node_identifier** (*int in* *[**0**,* *inf**]**,* *(**optional**)*) – Node Identifier, Optional identifier of the node to operate on

bpy.ops.node.evaluate_closure_output_item_move(*\**, *direction='UP'*, *node_identifier=0*)
:   Move active item

    Parameters:
    :   - **direction** (enum in [`'UP'`, `'DOWN'`], (optional)) – Direction, Move direction
        - **node_identifier** (*int in* *[**0**,* *inf**]**,* *(**optional**)*) – Node Identifier, Optional identifier of the node to operate on

bpy.ops.node.evaluate_closure_output_item_remove(*\**, *node_identifier=0*)
:   Remove active item

    Parameters:
    :   **node_identifier** (*int in* *[**0**,* *inf**]**,* *(**optional**)*) – Node Identifier, Optional identifier of the node to operate on

bpy.ops.node.field_to_grid_item_add(*\**, *node_identifier=0*)
:   Add item below active item

    Parameters:
    :   **node_identifier** (*int in* *[**0**,* *inf**]**,* *(**optional**)*) – Node Identifier, Optional identifier of the node to operate on

bpy.ops.node.field_to_grid_item_move(*\**, *direction='UP'*, *node_identifier=0*)
:   Move active item

    Parameters:
    :   - **direction** (enum in [`'UP'`, `'DOWN'`], (optional)) – Direction, Move direction
        - **node_identifier** (*int in* *[**0**,* *inf**]**,* *(**optional**)*) – Node Identifier, Optional identifier of the node to operate on

bpy.ops.node.field_to_grid_item_remove(*\**, *node_identifier=0*)
:   Remove active item

    Parameters:
    :   **node_identifier** (*int in* *[**0**,* *inf**]**,* *(**optional**)*) – Node Identifier, Optional identifier of the node to operate on

bpy.ops.node.file_output_item_add(*\**, *node_identifier=0*)
:   Add item below active item

    Parameters:
    :   **node_identifier** (*int in* *[**0**,* *inf**]**,* *(**optional**)*) – Node Identifier, Optional identifier of the node to operate on

bpy.ops.node.file_output_item_move(*\**, *direction='UP'*, *node_identifier=0*)
:   Move active item

    Parameters:
    :   - **direction** (enum in [`'UP'`, `'DOWN'`], (optional)) – Direction, Move direction
        - **node_identifier** (*int in* *[**0**,* *inf**]**,* *(**optional**)*) – Node Identifier, Optional identifier of the node to operate on

bpy.ops.node.file_output_item_remove(*\**, *node_identifier=0*)
:   Remove active item

    Parameters:
    :   **node_identifier** (*int in* *[**0**,* *inf**]**,* *(**optional**)*) – Node Identifier, Optional identifier of the node to operate on

bpy.ops.node.find_node()
:   Search for a node by name and focus and select it

bpy.ops.node.foreach_geometry_element_zone_generation_item_add(*\**, *node_identifier=0*)
:   Add item below active item

    Parameters:
    :   **node_identifier** (*int in* *[**0**,* *inf**]**,* *(**optional**)*) – Node Identifier, Optional identifier of the node to operate on

bpy.ops.node.foreach_geometry_element_zone_generation_item_move(*\**, *direction='UP'*, *node_identifier=0*)
:   Move active item

    Parameters:
    :   - **direction** (enum in [`'UP'`, `'DOWN'`], (optional)) – Direction, Move direction
        - **node_identifier** (*int in* *[**0**,* *inf**]**,* *(**optional**)*) – Node Identifier, Optional identifier of the node to operate on

bpy.ops.node.foreach_geometry_element_zone_generation_item_remove(*\**, *node_identifier=0*)
:   Remove active item

    Parameters:
    :   **node_identifier** (*int in* *[**0**,* *inf**]**,* *(**optional**)*) – Node Identifier, Optional identifier of the node to operate on

bpy.ops.node.foreach_geometry_element_zone_input_item_add(*\**, *node_identifier=0*)
:   Add item below active item

    Parameters:
    :   **node_identifier** (*int in* *[**0**,* *inf**]**,* *(**optional**)*) – Node Identifier, Optional identifier of the node to operate on

bpy.ops.node.foreach_geometry_element_zone_input_item_move(*\**, *direction='UP'*, *node_identifier=0*)
:   Move active item

    Parameters:
    :   - **direction** (enum in [`'UP'`, `'DOWN'`], (optional)) – Direction, Move direction
        - **node_identifier** (*int in* *[**0**,* *inf**]**,* *(**optional**)*) – Node Identifier, Optional identifier of the node to operate on

bpy.ops.node.foreach_geometry_element_zone_input_item_remove(*\**, *node_identifier=0*)
:   Remove active item

    Parameters:
    :   **node_identifier** (*int in* *[**0**,* *inf**]**,* *(**optional**)*) – Node Identifier, Optional identifier of the node to operate on

bpy.ops.node.foreach_geometry_element_zone_main_item_add(*\**, *node_identifier=0*)
:   Add item below active item

    Parameters:
    :   **node_identifier** (*int in* *[**0**,* *inf**]**,* *(**optional**)*) – Node Identifier, Optional identifier of the node to operate on

bpy.ops.node.foreach_geometry_element_zone_main_item_move(*\**, *direction='UP'*, *node_identifier=0*)
:   Move active item

    Parameters:
    :   - **direction** (enum in [`'UP'`, `'DOWN'`], (optional)) – Direction, Move direction
        - **node_identifier** (*int in* *[**0**,* *inf**]**,* *(**optional**)*) – Node Identifier, Optional identifier of the node to operate on

bpy.ops.node.foreach_geometry_element_zone_main_item_remove(*\**, *node_identifier=0*)
:   Remove active item

    Parameters:
    :   **node_identifier** (*int in* *[**0**,* *inf**]**,* *(**optional**)*) – Node Identifier, Optional identifier of the node to operate on

bpy.ops.node.format_string_item_add(*\**, *node_identifier=0*)
:   Add item below active item

    Parameters:
    :   **node_identifier** (*int in* *[**0**,* *inf**]**,* *(**optional**)*) – Node Identifier, Optional identifier of the node to operate on

bpy.ops.node.format_string_item_move(*\**, *direction='UP'*, *node_identifier=0*)
:   Move active item

    Parameters:
    :   - **direction** (enum in [`'UP'`, `'DOWN'`], (optional)) – Direction, Move direction
        - **node_identifier** (*int in* *[**0**,* *inf**]**,* *(**optional**)*) – Node Identifier, Optional identifier of the node to operate on

bpy.ops.node.format_string_item_remove(*\**, *node_identifier=0*)
:   Remove active item

    Parameters:
    :   **node_identifier** (*int in* *[**0**,* *inf**]**,* *(**optional**)*) – Node Identifier, Optional identifier of the node to operate on

bpy.ops.node.geometry_nodes_viewer_item_add(*\**, *node_identifier=0*)
:   Add item below active item

    Parameters:
    :   **node_identifier** (*int in* *[**0**,* *inf**]**,* *(**optional**)*) – Node Identifier, Optional identifier of the node to operate on

bpy.ops.node.geometry_nodes_viewer_item_move(*\**, *direction='UP'*, *node_identifier=0*)
:   Move active item

    Parameters:
    :   - **direction** (enum in [`'UP'`, `'DOWN'`], (optional)) – Direction, Move direction
        - **node_identifier** (*int in* *[**0**,* *inf**]**,* *(**optional**)*) – Node Identifier, Optional identifier of the node to operate on

bpy.ops.node.geometry_nodes_viewer_item_remove(*\**, *node_identifier=0*)
:   Remove active item

    Parameters:
    :   **node_identifier** (*int in* *[**0**,* *inf**]**,* *(**optional**)*) – Node Identifier, Optional identifier of the node to operate on

bpy.ops.node.gltf_settings_node_operator()
:   Add a node to the active tree for glTF export

    File:
    :   [addons_core/io_scene_gltf2/blender/com/gltf2_blender_ui.py:34](https://projects.blender.org/blender/blender/src/branch/main/scripts/addons_core/io_scene_gltf2/blender/com/gltf2_blender_ui.py#L34)

bpy.ops.node.group_edit(*\**, *exit=False*)
:   Edit node group

    Parameters:
    :   **exit** (*boolean**,* *(**optional**)*) – Exit

bpy.ops.node.group_enter_exit()
:   Enter or exit node group based on cursor location

bpy.ops.node.group_insert()
:   Insert selected nodes into a node group

bpy.ops.node.group_make()
:   Make group from selected nodes

bpy.ops.node.group_separate(*\**, *type='COPY'*)
:   Separate selected nodes from the node group

    Parameters:
    :   **type** (enum in [`'COPY'`, `'MOVE'`], (optional)) –

        Type

        - `COPY`
          Copy – Copy to parent node tree, keep group intact.
        - `MOVE`
          Move – Move to parent node tree, remove from group.

bpy.ops.node.group_ungroup()
:   Ungroup selected nodes

bpy.ops.node.hide_socket_toggle()
:   Toggle unused node socket display

bpy.ops.node.hide_toggle()
:   Toggle collapsing of selected nodes

bpy.ops.node.index_switch_item_add(*\**, *node_identifier=0*)
:   Add an item to the index switch

    Parameters:
    :   **node_identifier** (*int in* *[**0**,* *inf**]**,* *(**optional**)*) – Node Identifier, Optional identifier of the node to operate on

bpy.ops.node.index_switch_item_remove(*\**, *index=0*)
:   Remove an item from the index switch

    Parameters:
    :   **index** (*int in* *[**0**,* *inf**]**,* *(**optional**)*) – Index, Index to remove

bpy.ops.node.insert_offset()
:   Automatically offset nodes on insertion

bpy.ops.node.interface_item_duplicate()
:   Add a copy of the active item to the interface

    File:
    :   [startup/bl_operators/node.py:1042](https://projects.blender.org/blender/blender/src/branch/main/scripts/startup/bl_operators/node.py#L1042)

bpy.ops.node.interface_item_make_panel_toggle()
:   Make the active boolean socket a toggle for its parent panel

    File:
    :   [startup/bl_operators/node.py:1118](https://projects.blender.org/blender/blender/src/branch/main/scripts/startup/bl_operators/node.py#L1118)

bpy.ops.node.interface_item_new(*\**, *item_type='INPUT'*)
:   Add a new item to the interface

    Parameters:
    :   **item_type** (enum in [`'INPUT'`, `'OUTPUT'`, `'PANEL'`], (optional)) – Item Type, Type of the item to create

    File:
    :   [startup/bl_operators/node.py:948](https://projects.blender.org/blender/blender/src/branch/main/scripts/startup/bl_operators/node.py#L948)

bpy.ops.node.interface_item_new_panel_toggle()
:   Add a checkbox to the currently selected panel

    File:
    :   [startup/bl_operators/node.py:1013](https://projects.blender.org/blender/blender/src/branch/main/scripts/startup/bl_operators/node.py#L1013)

bpy.ops.node.interface_item_remove()
:   Remove active item from the interface

    File:
    :   [startup/bl_operators/node.py:1061](https://projects.blender.org/blender/blender/src/branch/main/scripts/startup/bl_operators/node.py#L1061)

bpy.ops.node.interface_item_unlink_panel_toggle()
:   Make the panel toggle a stand-alone socket

    File:
    :   [startup/bl_operators/node.py:1166](https://projects.blender.org/blender/blender/src/branch/main/scripts/startup/bl_operators/node.py#L1166)

bpy.ops.node.join()
:   Attach