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

assistant:  selected nodes to a new common frame

bpy.ops.node.join_named(*\**, *NODE_OT_join=None*, *WM_OT_call_panel=None*)
:   Create a new frame node around the selected nodes and name it immediately

    Parameters:
    :   - **NODE_OT_join** (`NODE_OT_join`, (optional)) – Join Nodes in Frame, Attach selected nodes to a new common frame
        - **WM_OT_call_panel** (`WM_OT_call_panel`, (optional)) – Call Panel, Open a predefined panel

bpy.ops.node.join_nodes()
:   Merge selected group input nodes into one if possible

bpy.ops.node.link(*\**, *detach=False*, *drag_start=(0.0, 0.0)*, *inside_padding=2.0*, *outside_padding=0.0*, *speed_ramp=1.0*, *max_speed=26.0*, *delay=0.5*, *zoom_influence=0.5*)
:   Use the mouse to create a link between two nodes

    Parameters:
    :   - **detach** (*boolean**,* *(**optional**)*) – Detach, Detach and redirect existing links
        - **drag_start** (*float array* *of* *2 items in* *[**-6**,* *6**]**,* *(**optional**)*) – Drag Start, The position of the mouse cursor at the start of the operation
        - **inside_padding** (*float in* *[**0**,* *100**]**,* *(**optional**)*) – Inside Padding, Inside distance in UI units from the edge of the region within which to start panning
        - **outside_padding** (*float in* *[**0**,* *100**]**,* *(**optional**)*) – Outside Padding, Outside distance in UI units from the edge of the region at which to stop panning
        - **speed_ramp** (*float in* *[**0**,* *100**]**,* *(**optional**)*) – Speed Ramp, Width of the zone in UI units where speed increases with distance from the edge
        - **max_speed** (*float in* *[**0**,* *10000**]**,* *(**optional**)*) – Max Speed, Maximum speed in UI units per second
        - **delay** (*float in* *[**0**,* *10**]**,* *(**optional**)*) – Delay, Delay in seconds before maximum speed is reached
        - **zoom_influence** (*float in* *[**0**,* *1**]**,* *(**optional**)*) – Zoom Influence, Influence of the zoom factor on scroll speed

bpy.ops.node.link_make(*\**, *replace=False*)
:   Make a link between selected output and input sockets

    Parameters:
    :   **replace** (*boolean**,* *(**optional**)*) – Replace, Replace socket connections with the new links

bpy.ops.node.link_viewer()
:   Link to viewer node

bpy.ops.node.links_cut(*\**, *path=None*, *cursor=15*)
:   Use the mouse to cut (remove) some links

    Parameters:
    :   - **path** (`bpy_prop_collection` of `OperatorMousePath`, (optional)) – Path
        - **cursor** (*int in* *[**0**,* *inf**]**,* *(**optional**)*) – Cursor

bpy.ops.node.links_detach()
:   Remove all links to selected nodes, and try to connect neighbor nodes together

bpy.ops.node.links_mute(*\**, *path=None*, *cursor=39*)
:   Use the mouse to mute links

    Parameters:
    :   - **path** (`bpy_prop_collection` of `OperatorMousePath`, (optional)) – Path
        - **cursor** (*int in* *[**0**,* *inf**]**,* *(**optional**)*) – Cursor

bpy.ops.node.move_detach_links(*\**, *NODE_OT_links_detach=None*, *TRANSFORM_OT_translate=None*)
:   Move a node to detach links

    Parameters:
    :   - **NODE_OT_links_detach** (`NODE_OT_links_detach`, (optional)) – Detach Links, Remove all links to selected nodes, and try to connect neighbor nodes together
        - **TRANSFORM_OT_translate** (`TRANSFORM_OT_translate`, (optional)) – Move, Move selected items

bpy.ops.node.move_detach_links_release(*\**, *NODE_OT_links_detach=None*, *NODE_OT_translate_attach=None*)
:   Move a node to detach links

    Parameters:
    :   - **NODE_OT_links_detach** (`NODE_OT_links_detach`, (optional)) – Detach Links, Remove all links to selected nodes, and try to connect neighbor nodes together
        - **NODE_OT_translate_attach** (`NODE_OT_translate_attach`, (optional)) – Move and Attach, Move nodes and attach to frame

bpy.ops.node.mute_toggle()
:   Toggle muting of selected nodes

bpy.ops.node.new_compositing_node_group(*\**, *name=''*)
:   Create a new compositing node group and initialize it with default nodes

    Parameters:
    :   **name** (*string**,* *(**optional**,* *never None**)*) – Name

bpy.ops.node.new_compositor_sequencer_node_group(*\**, *name='Sequencer Compositor Nodes'*)
:   Create a new compositor node group for sequencer

    Parameters:
    :   **name** (*string**,* *(**optional**,* *never None**)*) – Name

bpy.ops.node.new_geometry_node_group_assign()
:   Create a new geometry node group and assign it to the active modifier

    File:
    :   [startup/bl_operators/geometry_nodes.py:340](https://projects.blender.org/blender/blender/src/branch/main/scripts/startup/bl_operators/geometry_nodes.py#L340)

bpy.ops.node.new_geometry_node_group_tool()
:   Create a new geometry node group for a tool

    File:
    :   [startup/bl_operators/geometry_nodes.py:361](https://projects.blender.org/blender/blender/src/branch/main/scripts/startup/bl_operators/geometry_nodes.py#L361)

bpy.ops.node.new_geometry_nodes_modifier()
:   Create a new modifier with a new geometry node group

    File:
    :   [startup/bl_operators/geometry_nodes.py:317](https://projects.blender.org/blender/blender/src/branch/main/scripts/startup/bl_operators/geometry_nodes.py#L317)

bpy.ops.node.new_node_tree(*\**, *type=''*, *name='NodeTree'*)
:   Create a new node tree

    Parameters:
    :   - **type** (*enum in* *[**]**,* *(**optional**)*) – Tree Type
        - **name** (*string**,* *(**optional**,* *never None**)*) – Name

bpy.ops.node.node_color_preset_add(*\**, *name=''*, *remove_name=False*, *remove_active=False*)
:   Add or remove a Node Color Preset

    Parameters:
    :   - **name** (*string**,* *(**optional**,* *never None**)*) – Name, Name of the preset, used to make the path name
        - **remove_name** (*boolean**,* *(**optional**)*) – remove_name
        - **remove_active** (*boolean**,* *(**optional**)*) – remove_active

    File:
    :   [startup/bl_operators/presets.py:119](https://projects.blender.org/blender/blender/src/branch/main/scripts/startup/bl_operators/presets.py#L119)

bpy.ops.node.node_copy_color()
:   Copy color to all selected nodes

bpy.ops.node.options_toggle()
:   Toggle option buttons display for selected nodes

bpy.ops.node.parent_set()
:   Attach selected nodes

bpy.ops.node.preview_toggle()
:   Toggle preview display for selected nodes

bpy.ops.node.read_viewlayers()
:   Read all render layers of all used scenes

bpy.ops.node.render_changed()
:   Render current scene, when input node’s layer has been changed

bpy.ops.node.repeat_zone_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.repeat_zone_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.repeat_zone_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.resize()
:   Resize a node

bpy.ops.node.select(*\**, *extend=False*, *deselect=False*, *toggle=False*, *deselect_all=False*, *select_passthrough=False*, *location=(0, 0)*, *socket_select=False*, *clear_viewer=False*)
:   Select the node under the cursor

    Parameters:
    :   - **extend** (*boolean**,* *(**optional**)*) – Extend, Extend selection instead of deselecting everything first
        - **deselect** (*boolean**,* *(**optional**)*) – Deselect, Remove from selection
        - **toggle** (*boolean**,* *(**optional**)*) – Toggle Selection, Toggle the selection
        - **deselect_all** (*boolean**,* *(**optional**)*) – Deselect On Nothing, Deselect all when nothing under the cursor
        - **select_passthrough** (*boolean**,* *(**optional**)*) – Only Select Unselected, Ignore the select action when the element is already selected
        - **location** (*int array* *of* *2 items in* *[**-inf**,* *inf**]**,* *(**optional**)*) – Location, Mouse location
        - **socket_select** (*boolean**,* *(**optional**)*) – Socket Select
        - **clear_viewer** (*boolean**,* *(**optional**)*) – Clear Viewer, Deactivate geometry nodes viewer when clicking in empty space

bpy.ops.node.select_all(*\**, *action='TOGGLE'*)
:   (De)select all nodes

    Parameters:
    :   **action** (enum in [`'TOGGLE'`, `'SELECT'`, `'DESELECT'`, `'INVERT'`], (optional)) –

        Action, Selection action to execute

        - `TOGGLE`
          Toggle – Toggle selection for all elements.
        - `SELECT`
          Select – Select all elements.
        - `DESELECT`
          Deselect – Deselect all elements.
        - `INVERT`
          Invert – Invert selection of all elements.

bpy.ops.node.select_box(*\**, *tweak=False*, *xmin=0*, *xmax=0*, *ymin=0*, *ymax=0*, *wait_for_input=True*, *mode='SET'*)
:   Use box selection to select nodes

    Parameters:
    :   - **tweak** (*boolean**,* *(**optional**)*) – Tweak, Only activate when mouse is not over a node (useful for tweak gesture)
        - **xmin** (*int in* *[**-inf**,* *inf**]**,* *(**optional**)*) – X Min
        - **xmax** (*int in* *[**-inf**,* *inf**]**,* *(**optional**)*) – X Max
        - **ymin** (*int in* *[**-inf**,* *inf**]**,* *(**optional**)*) – Y Min
        - **ymax** (*int in* *[**-inf**,* *inf**]**,* *(**optional**)*) – Y Max
        - **wait_for_input** (*boolean**,* *(**optional**)*) – Wait for Input
        - **mode** (enum in [`'SET'`, `'ADD'`, `'SUB'`], (optional)) –

          Mode

          - `SET`
            Set – Set a new selection.
          - `ADD`
            Extend – Extend existing selection.
          - `SUB`
            Subtract – Subtract existing selection.

bpy.ops.node.select_circle(*\**, *x=0*, *y=0*, *radius=25*, *wait_for_input=True*, *mode='SET'*)
:   Use circle selection to select nodes

    Parameters:
    :   - **x** (*int in* *[**-inf**,* *inf**]**,* *(**optional**)*) – X
        - **y** (*int in* *[**-inf**,* *inf**]**,* *(**optional**)*) – Y
        - **radius** (*int in* *[**1**,* *inf**]**,* *(**optional**)*) – Radius
        - **wait_for_input** (*boolean**,* *(**optional**)*) – Wait for Input
        - **mode** (enum in [`'SET'`, `'ADD'`, `'SUB'`], (optional)) –

          Mode

          - `SET`
            Set – Set a new selection.
          - `ADD`
            Extend – Extend existing selection.
          - `SUB`
            Subtract – Subtract existing selection.

bpy.ops.node.select_grouped(*\**, *extend=False*, *type='TYPE'*)
:   Select nodes with similar properties

    Parameters:
    :   - **extend** (*boolean**,* *(**optional**)*) – Extend, Extend selection instead of deselecting everything first
        - **type** (enum in [`'TYPE'`, `'COLOR'`, `'PREFIX'`, `'SUFFIX'`], (optional)) – Type

bpy.ops.node.select_lasso(*\**, *tweak=False*, *path=None*, *use_smooth_stroke=False*, *smooth_stroke_factor=0.75*, *smooth_stroke_radius=35*, *mode='SET'*)
:   Select nodes using lasso selection

    Parameters:
    :   - **tweak** (*boolean**,* *(**optional**)*) – Tweak, Only activate when mouse is not over a node (useful for tweak gesture)
        - **path** (`bpy_prop_collection` of `OperatorMousePath`, (optional)) – Path
        - **use_smooth_stroke** (*boolean**,* *(**optional**)*) – Stabilize Stroke, Selection lags behind mouse and follows a smoother path
        - **smooth_stroke_factor** (*float in* *[**0.5**,* *0.99**]**,* *(**optional**)*) – Smooth Stroke Factor, Higher values gives a smoother stroke
        - **smooth_stroke_radius** (*int in* *[**10**,* *200**]**,* *(**optional**)*) – Smooth Stroke Radius, Minimum distance from last point before selection continues
        - **mode** (enum in [`'SET'`, `'ADD'`, `'SUB'`], (optional)) –

          Mode

          - `SET`
            Set – Set a new selection.
          - `ADD`
            Extend – Extend existing selection.
          - `SUB`
            Subtract – Subtract existing selection.

bpy.ops.node.select_link_viewer(*\**, *NODE_OT_select=None*, *NODE_OT_link_viewer=None*)
:   Select node and link it to a viewer node

    Parameters:
    :   - **NODE_OT_select** (`NODE_OT_select`, (optional)) – Select, Select the node under the cursor
        - **NODE_OT_link_viewer** (`NODE_OT_link_viewer`, (optional)) – Link to Viewer Node, Link to viewer node

bpy.ops.node.select_linked_from()
:   Select nodes linked from the selected ones

bpy.ops.node.select_linked_to()
:   Select nodes linked to the selected ones

bpy.ops.node.select_same_type_step(*\**, *prev=False*)
:   Activate and view same node type, step by step

    Parameters:
    :   **prev** (*boolean**,* *(**optional**)*) – Previous

bpy.ops.node.separate_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.separate_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.separate_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.shader_script_update()
:   Update shader script node with new sockets and options from the script

bpy.ops.node.simulation_zone_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.simulation_zone_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.simulation_zone_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.sockets_sync(*\**, *node_name=''*)
:   Update sockets to match what is actually used

    Parameters:
    :   **node_name** (*string**,* *(**optional**,* *never None**)*) – Node Name

bpy.ops.node.swap_empty_group(*\**, *settings=None*)
:   Replace active node with an empty group

    Parameters:
    :   **settings** (`bpy_prop_collection` of `NodeSetting`, (optional)) – Settings, Settings to be applied on the newly created node

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

bpy.ops.node.swap_group_asset(*\**, *asset_library_type='LOCAL'*, *asset_library_identifier=''*, *relative_asset_identifier=''*)
:   Swap selected nodes with the specified node group asset

    Parameters:
    :   - **asset_library_type** (enum in [Asset Library Type Items](bpy_types_enum_items/asset_library_type_items.html#rna-enum-asset-library-type-items), (optional)) – Asset Library Type
        - **asset_library_identifier** (*string**,* *(**optional**,* *never None**)*) – Asset Library Identifier
        - **relative_asset_identifier** (*string**,* *(**optional**,* *never None**)*) – Relative Asset Identifier

bpy.ops.node.swap_node(*\**, *settings=None*, *type=''*, *visible_output=''*)
:   Replace the selected nodes with the specified type

    Parameters:
    :   - **settings** (`bpy_prop_collection` of `NodeSetting`, (optional)) – Settings, Settings to be applied on the newly created node
        - **type** (*string**,* *(**optional**,* *never None**)*) – Node Type, Node type
        - **visible_output** (*string**,* *(**optional**,* *never None**)*) – Output Name, If provided, all outputs that are named differently will be hidden

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

bpy.ops.node.swap_zone(*\**, *settings=None*, *offset=(150.0, 0.0)*, *input_node_type=''*, *output_node_type=''*, *add_default_geometry_link=False*)
:   Undocumented, consider [contributing](https://developer.blender.org/).

    Parameters:
    :   - **settings** (`bpy_prop_collection` of `NodeSetting`, (optional)) – Settings, Settings to be applied on the newly created node
        - **offset** (*float array* *of* *2 items in* *[**-inf**,* *inf**]**,* *(**optional**)*) – Offset, Offset of nodes from the cursor when added
        - **input_node_type** (*string**,* *(**optional**,* *never None**)*) – Input Node, Specifies the input node used by the created zone
        - **output_node_type** (*string**,* *(**optional**,* *never None**)*) – Output Node, Specifies the output node used by the created zone
        - **add_default_geometry_link** (*boolean**,* *(**optional**)*) – Add Geometry Link, When enabled, create a link between geometry sockets in this zone

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

bpy.ops.node.test_inlining_shader_nodes()
:   Create a new inlined shader node tree as is consumed by rendere