For automatic, bundled bezier edges (curve - style: bezier):

http://js.cytoscape.org/#style/bezier-edges

interface BezierEdges {
    control-point-distance: PropertyValueEdge<number>;
    control-point-step-size: PropertyValueEdge<number>;
    control-point-weight: PropertyValueEdge<number>;
    edge-distances: PropertyValueEdge<"intersection" | "node-position">;
}

Properties

control-point-distance: PropertyValueEdge<number>

A single value that overrides "control-point-step-size" with a manual value. Because it overrides the step size, bezier edges with the same value will overlap. Thus, it’s best to use this as a one- off value for particular edges if need be.

control-point-step-size: PropertyValueEdge<number>

From the line perpendicular from source to target, this value specifies the distance between successive bezier edges.

control-point-weight: PropertyValueEdge<number>

A single value that weights control points along the line from source to target. The value usually ranges on [0, 1], with 0 towards the source node and 1 towards the target node — but larger or smaller values can also be used.

edge-distances: PropertyValueEdge<"intersection" | "node-position">

With value intersection (default), the line from source to target for "control-point-weight" is from the outside of the source node’s shape to the outside of the target node’s shape.With value node- position, the line is from the source position to the target position. The "node-position" option makes calculating edge points easier — but it should be used carefully because you can create invalid points that intersection would have automatically corrected.