Bearer Token API
Exchange your PiTrade IdToken (obtained from the Native API authentication flow) for an Interactive Brokers bearer token. The bearer token is required for every Interactive Brokers API request.
Endpoint
POST /user/bearer-token
Authentication
Requires Bearer token authentication with your PiTrade IdToken (from the Native API flow):
Authorization: Bearer <ID_TOKEN>
See PiTrade Native APIs Authentication for instructions on obtaining your IdToken.
Request Format
Headers:
Content-Type: application/json Authorization: Bearer <ID_TOKEN> User-Agent: Your Application/1.0
Body:
| Parameter | Type | Required | Description |
|---|---|---|---|
| `ip` | string | Yes | Client IP address (IPv4) for the brokerage session |
Response Format
| Field | Type | Description |
|---|---|---|
| bearerToken | string | Interactive Brokers bearer token to use for IBKR API requests |
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
Example
Usage Example
A bearer token request has three parts: generate a PiTrade JWT, exchange it for a bearer token, then use that bearer token directly against Interactive Brokers.
Step 1: Generate PiTrade JWT
javascript
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
javascript
const response = await fetch(
"https://api.pitrade.com/client/user/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
javascript
const IBKR_BASE_PATH = "https://api.ibkr.com";
const ibkrResponse = await fetch(
`${IBKR_BASE_PATH}/v1/api/iserver/auth/status`,
{
headers: {
Authorization: `Bearer ${bearerToken}`,
"User-Agent": "Your Application/1.0",
},
},
);