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

ParameterTypeRequiredDescription
ipstringYesClient 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

Was this page helpful?