# Adding a driver to a Cycles node via Python

I'm trying to add a driver to a Cycles Value node using Python. So far my code is:

node = material.node_tree.nodes.new("ShaderNodeValue")


However, this just gives me a 'property "default_value" not found' error. I've also tried:

node.driver_add("value")


None of these work either. So my question is: how do I exactly add a driver to a Cycles Value node? It can be done via the UI right-click menu, but I can't find a data path that driver_add() will accept.

You need to add the driver on the output, not the node directly:

fcurve = node.outputs[0].driver_new("default_value")


or

fcurve = node.outputs['Value'].driver_new("default_value")


The driver expression is accessed like:

fcurve.driver.expression

• Thanks! Still finding my around Blender's API so I appreciate the guidance. Mar 1, 2014 at 11:18

I would suggest doing it with the GUI first and then examine the data structure.

I.e. added a driver to the Composite Node

The path is relative to node_tree.

So try to add the driver to node_tree with the given data path

import bpy

#right click on the socket value of the node -> Copy Data Path
path = 'nodes["Composite"].inputs[1].default_value'

scene = bpy.context.scene
scene.use_nodes = True