v1.0.0

IBKR Trading

FlokieW FlokieW ← All skills

Interactive Brokers (IBKR) trading automation via Client Portal API. Use when setting up IBKR account access, authenticating sessions, checking portfolio/positions, or building trading bots. Handles IBeam automated login with IBKR Key 2FA.

Downloads
1.1k
Stars
7
Versions
1
Updated
2026-02-24

Install

npx clawhub@latest install ibkr-trader

Documentation

IBKR Trading Skill

Automate trading with Interactive Brokers using the Client Portal Gateway API.

Overview

This skill enables:

  • -Automated IBKR authentication via IBeam + IBKR Key
  • -Portfolio and position monitoring
  • -Order placement and management
  • -Building custom trading strategies

Prerequisites

  • -IBKR account (live or paper)
  • -IBKR Key app installed on phone (for 2FA)
  • -Linux server with Java 11+ and Chrome/Chromium

Quick Setup

1. Install Dependencies

Java (for Client Portal Gateway)

sudo apt-get install -y openjdk-17-jre-headless

Chrome + ChromeDriver (for IBeam)

sudo apt-get install -y chromium-browser chromium-chromedriver

Virtual display (headless auth)

sudo apt-get install -y xvfb

Python venv

python3 -m venv ~/trading/venv

source ~/trading/venv/bin/activate

pip install ibeam requests

2. Download Client Portal Gateway

cd ~/trading

wget https://download2.interactivebrokers.com/portal/clientportal.gw.zip

unzip clientportal.gw.zip -d clientportal

3. Configure Credentials

Create ~/trading/.env:

IBEAM_ACCOUNT=your_username

IBEAM_PASSWORD='your_password'

IBEAM_GATEWAY_DIR=/path/to/trading/clientportal

IBEAM_CHROME_DRIVER_PATH=/usr/bin/chromedriver

IBEAM_TWO_FA_SELECT_TARGET="IB Key"

Authentication

Start Gateway + Authenticate

1. Start Client Portal Gateway

cd ~/trading/clientportal && bash bin/run.sh root/conf.yaml &

2. Wait for startup (~20 sec)

sleep 20

3. Run IBeam authentication

cd ~/trading

source venv/bin/activate

source .env

export DISPLAY=:99

Xvfb :99 -screen 0 1024x768x24 &

python -m ibeam --authenticate

Important: User must approve IBKR Key notification on phone within ~2 minutes!

Check Auth Status

curl -sk https://localhost:5000/v1/api/iserver/auth/status

Authenticated response includes "authenticated": true.

API Usage

Account Info

List accounts

curl -sk https://localhost:5000/v1/api/portfolio/accounts

Account summary

curl -sk "https://localhost:5000/v1/api/portfolio/{accountId}/summary"

Positions

Current positions

curl -sk "https://localhost:5000/v1/api/portfolio/{accountId}/positions/0"

Market Data

Search for symbol

curl -sk "https://localhost:5000/v1/api/iserver/secdef/search?symbol=AAPL"

Get quote (after searching)

curl -sk "https://localhost:5000/v1/api/iserver/marketdata/snapshot?conids=265598&fields=31,84,86"

Place Orders

curl -sk -X POST "https://localhost:5000/v1/api/iserver/account/{accountId}/orders" \

-H "Content-Type: application/json" \

-d '{

"orders": [{

"conid": 265598,

"orderType": "MKT",

"side": "BUY",

"quantity": 1,

"tif": "DAY"

}]

}'

Session Management

Sessions expire after ~24 hours. Options:

1. Keepalive cron - Ping /v1/api/tickle every 5 min

2. Auto re-auth - Run IBeam when session expires (requires phone approval)

Keepalive Script

import requests

import urllib3

urllib3.disable_warnings()

def keepalive():

try:

r = requests.post("https://localhost:5000/v1/api/tickle", verify=False, timeout=10)

status = requests.get("https://localhost:5000/v1/api/iserver/auth/status", verify=False, timeout=10)

return status.json().get("authenticated", False)

except:

return False

Troubleshooting

| Issue | Solution |

|-------|----------|

| Gateway not responding | Check if Java process is running: ps aux \| grep GatewayStart |

| Login timeout | User didn't approve IBKR Key in time - retry auth |

| Connection refused | Gateway not started - run bin/run.sh root/conf.yaml |

| Chrome errors | Ensure Xvfb is running: Xvfb :99 & and export DISPLAY=:99 |

Files Reference

See references/api-endpoints.md for complete API documentation.

See scripts/ for ready-to-use automation scripts.

Launch an agent with IBKR Trading on Termo.