Rithmic is the plumbing behind a lot of futures prop firms, and it wears two faces.
There’s R|Trader Pro, the desktop GUI a human clicks, and there’s R|Protocol,
the programmatic API our bots actually speak (via the async_rithmic library). Most
people only ever meet the first one. If you want a bot, you live in the second.
When you are let in, R|Protocol is good. It streams real-time order, fill, and position updates, account P&L, and — the part we care about most — full depth of market, not just the best bid and offer. We build order-flow imbalance (OFI) off those L2 levels. That’s a real, usable signal you simply cannot reconstruct from a delayed REST quote. For a futures bot, the order book is the edge.
Here’s the trap. API access is granted per account, separately from the GUI. You
can log into R|Trader Pro, see your account, sign every agreement in front of you,
flip the “Allow Plugins” switch ON — and the API will still refuse you. The refusal
comes back as rpCode 13, permission denied. Nothing in the UI tells you the API
flag is a different switch entirely, one you can’t reach.
We confirmed this the slow way. A Rithmic Paper Trading account: denied. A second
paper account: denied. A sim tournament (Tradeify’s Grand Cup): denied. We tried
every combination that could possibly matter — different system names, both the
public and test gateways, eight different app-name strings including Rithmic’s own
documentation sample, several version numbers. Every single one came back rpCode 13.
The pattern that fell out of it: sim, paper, and tournament accounts get the GUI but not the API. The accounts that get programmatic access are the paid combines — the ones you actually fund. Even then, don’t assume; we verify on first connect with a login-only probe before wiring anything else.
One gotcha worth an afternoon of your life: the system name the API wants is not
the label in the dropdown. “Tradeify” in the UI is tradesea to R|Protocol. Use the
UI label and you get a different error that looks like a typo but isn’t your real
problem — sending you off debugging the wrong thing.
The lesson generalizes past Rithmic: before you build an adapter for any gated platform, answer the cheapest question first. Is this account paid or sim? If it’s sim, assume the door is locked until a thirty-second login check proves otherwise. We learned that one receipt at a time.