Layer specification for bpy.ops.mesh.primitive_torus_add From this API documentation, it appears, unlike all the other mesh primitives, there is no provision for specifying the layer on which one would like the torus placed.

Would the best way of doing this be to create it, and then assign the layer, or is there an undocumented feature which I can use?
Yes, that's one primitive which doesn't seem to inherit the layers attribute. You can however in the meantime use code like this to set layers.

obj.layers = [(i in [0,3,5]) for i in range(20)]


the object will appear on layer 0, 3 and 5.