This is easy.
1) IB - 4
Requires Java-based TWS as "middleware".
Unreliable...will stop deliverying data without error or exception thrown.
Dozens of "gotchas" and workarounds required for throttling and other subtle server-side limitations.
Overall poor tech support and even worse documentation.
2) Laser(Genesis) - 5
Fast. Good sample code.
C/C++ only. Ok, C# as well.
Docs are decent, but the tech support is NOT.
One programmer I know has not been able to program a stop order for over 8 weeks now due to an API glitch that remains unresolved.
I found an untrapped exception bug in their Excel COM interface that was confirmed by their manager and I told them where and how to fix it. They refused....told me to use the API instead (a complete rewrite for me !).
4) Sterling - 5
Docs look good, but another trader/programmer said the entire API is full of "gotchas" which are undocumented.