Bearer Token API
This endpoint exchanges your PiTrade JWT token for an Interactive Brokers bearer token, which is required for all Interactive Brokers API requests.
Endpoint
POST https://api.pitrade.com/partner/brokerage-bearer-token
Authentication
Requires Bearer token authentication with your PiTrade JWT token:
Authorization: Bearer <PITRADE_JWT_TOKEN>
Request
Headers
Content-Type: application/json
Authorization: Bearer <PITRADE_JWT_TOKEN>
User-Agent: Your Application/1.0
Body
| Parameter | Type | Required | Description |
|---|---|---|---|
ip | string | Yes | Client IP address (IPv4) for the brokerage session |
Example
curl -X POST https://api.pitrade.com/partner/brokerage-bearer-token \
-H "Content-Type: application/json" \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..." \
-H "User-Agent: Your Application/1.0" \
-d '{
"ip": "<USE_IP>"
}'
Response
Success (200 OK)
{
"bearerToken": "U4472-1c88d8c0-9912-4355-9ab5-d2c62ebb3e7e"
}
Error Responses
400 Bad Request
{
"message": "Missing required field: ip"
}
401 Unauthorized
{
"message": "Invalid or expired JWT token"
}
500 Internal Server Error
{
"message": "Failed to generate bearer token"
}
Usage
Step 1: Generate PiTrade JWT
const jwt = require("jsonwebtoken");
const token = jwt.sign(
{
clientId: "<YOUR_CLIENT_ID>",
iat: Math.floor(Date.now() / 1000),
exp: Math.floor(Date.now() / 1000) + 900, // 15 minutes
},
"<YOUR_API_KEY>",
);
Step 2: Request Bearer Token
const response = await fetch(
"https://api.pitrade.com/partner/brokerage-bearer-token",
{
method: "POST",
headers: {
"Content-Type": "application/json",
Authorization: `Bearer ${token}`,
"User-Agent": "Your Application/1.0",
},
body: JSON.stringify({
ip: "YOUR_CLIENT_IP",
}),
},
);
const { bearerToken } = await response.json();
Step 3: Use Bearer Token for Interactive Brokers APIs
const IBKR_BASE_PATH = "https://api.ibkr.com";
// Now use bearerToken for Interactive Brokers API calls
const ibkrResponse = await fetch(
`${IBKR_BASE_PATH}/v1/api/iserver/auth/status`,
{
headers: {
Authorization: `Bearer ${bearerToken}`,
"User-Agent": "Your Application/1.0",
},
},
);
Important Notes
- Bearer tokens are scoped to the IP address provided in the request
- Requests from different IP addresses require new bearer tokens
- JWT tokens expire in 15 minutes; request a new bearer token when needed
- Store bearer tokens securely; do not expose them in client-side code
- One bearer token per session; creating a new token invalidates previous tokens
Next Steps
- IBKR Trading APIs - Use bearer token for trading
- IBKR Session Management - Manage IBKR sessions
- Complete IBKR Flow Example - Full working example