What I want is a block diagram, with a central node called "API", with a node on the left called "User" and a node on the right called "Workflow".
However, because workflow node has lengthier text, it squishes up against the other nodes:

Now I know that I can increase the node distance argument, but is there a way to say something like "Always have nodes separated by a given distance"? So that it does not depend on the amount of size of the node "rectangle"?
Here is my source for the diagram:
\begin{tikzpicture}[node distance=15mm]
\tikzstyle{block} = [inner sep=2mm, rectangle, draw, fill=blue!20]
\node [block] (api) {API};
\node [block, right of=api] (workflow) {Workflow};
\node [block, left of=api] (user) {User};
% Connect the blocks
\draw [->] (user) to (api);
\draw [->] (api) to (workflow);
\end{tikzpicture}
EDIT: I should be able to use arrows that can go in both directions, and add new nodes above and below.



left=of api(orleft=0.5cm of api) using\usetikzlibrary{positioning}. Then the anchors are automatically set correctly. (I did not write an answer as I'm currently on a computer without TeX and hence cannot test any code for correctness.) – Caramdir May 18 '12 at 22:26