UNPKG

ibkr-api-sdk

Version:

A Node.js SDK for Interactive Brokers API

101 lines (90 loc) 2.45 kB
const axios = require("axios"); const pino = require("pino"); const logger = pino({ level: "info" }); const IBKR_BASE_URL = process.env.IBKR_BASE_URL; const API_KEY = process.env.IBKR_API_KEY; const ACCOUNT_ID = process.env.IBKR_ACCOUNT_ID; const axiosInstance = axios.create({ baseURL: IBKR_BASE_URL, headers: { "Authorization": `Bearer ${API_KEY}` }, }); /** * Create an IBKR account. */ const createAccount = async (accountData) => { try { const response = await axiosInstance.post("/accounts", accountData); return response.data; } catch (error) { logger.error(error.response?.data || error.message); throw new Error("Error creating account"); } }; /** * Submit KYC verification. */ const submitKYC = async (kycData) => { try { const response = await axiosInstance.post("/kyc/submit", kycData); return response.data; } catch (error) { logger.error(error.response?.data || error.message); throw new Error("Error submitting KYC"); } }; /** * Get account status. */ const getAccountStatus = async () => { try { const response = await axiosInstance.get(`/accounts/${ACCOUNT_ID}/status`); return response.data; } catch (error) { logger.error(error.response?.data || error.message); throw new Error("Error fetching account status"); } }; /** * Add a bank account. */ const addBank = async (bankData) => { try { const response = await axiosInstance.post(`/accounts/${ACCOUNT_ID}/banks`, bankData); return response.data; } catch (error) { logger.error(error.response?.data || error.message); throw new Error("Error adding bank account"); } }; /** * Delete a bank account. */ const deleteBank = async (bankId) => { try { const response = await axiosInstance.delete(`/accounts/${ACCOUNT_ID}/banks/${bankId}`); return response.data; } catch (error) { logger.error(error.response?.data || error.message); throw new Error("Error deleting bank account"); } }; /** * Perform an ACH transfer. */ const achTransfer = async (transferData) => { try { const response = await axiosInstance.post(`/accounts/${ACCOUNT_ID}/funds/ach`, transferData); return response.data; } catch (error) { logger.error(error.response?.data || error.message); throw new Error("Error processing ACH transfer"); } }; module.exports = { createAccount, submitKYC, getAccountStatus, addBank, deleteBank, achTransfer, };