跳转至主要内容

API Migration

Deprecation deadline: 20 June 2026

The legacy https://api.boros.finance/open-api/*, /send-txs-bot/*, and /core/* mounts will be shut off on 20 June 2026. After that date, requests to those hosts will fail. Migrate to https://api-boros.pendle.finance/apis/* before then.

The legacy Boros Open API is being replaced. All integrations should move to the redesigned API at https://api-boros.pendle.finance/apis/.

Interactive docs for the new API: api-boros.pendle.finance/apis/docs.

SDK users

If you integrate via our SDK, migrate from @pendle/sdk-boros (legacy) to @pendle/boros-sdk-public (new). The legacy SDK targets the legacy API and will stop working after 20 June 2026.


Hosts

OldNew
Public APIhttps://api.boros.finance/open-api/*https://api-boros.pendle.finance/apis/*
Send Txshttps://api.boros.finance/send-txs-bot/*https://api-boros.pendle.finance/apis/v1/send-txs/*
Internal UI APIhttps://api.boros.finance/core/*https://api-boros.pendle.finance/apis/*

/open-api/*/apis/*

OldNew
GET /open-api/v1/marketsGET /apis/v1/markets
GET /open-api/v1/markets/{id}GET /apis/v1/markets/by-ids?marketIds={id} (batched)
GET /open-api/v1/markets/chartGET /apis/v1/markets/ohlcv (indicators moved to /apis/v1/indicators)
GET /open-api/v1/assets/allGET /apis/v1/assets
GET /open-api/v1/agents/expiry-timeGET /apis/v1/agents/expiry-time
GET /open-api/v1/gas-price/currentGET /apis/v1/gas-price/current
GET /open-api/v1/accounts/gas-balanceGET /apis/v1/accounts/gas-balance
GET /open-api/v1/accounts/active-positionsGET /apis/v1/accounts/active-positions
POST /open-api/v1/accounts/market-acc-infosPOST /apis/v1/accounts/market-acc-infos
GET /open-api/v1/incentives/maker-incentives/campaigns/{id}GET /apis/v1/incentives/maker-incentives/campaigns/{id}
GET /open-api/v1/calldata/cancel-orderPOST /apis/v1/calldata-builder/agent/cancel-orders (GET → POST, body { markets: [...] })
POST /open-api/v1/calldata/place-ordersPOST /apis/v1/calldata-builder/agent/place-orders
POST /open-api/v1/calldata/place-orders-with-ratePOST /apis/v1/calldata-builder/agent/place-orders (merged; use desiredRate XOR slippage)
GET /open-api/v2/accounts/transactionsGET /apis/v1/accounts/position-update-events (cursor-based)
GET /open-api/v2/accounts/limit-ordersGET /apis/v1/accounts/orders (cursor-based)
GET /open-api/v2/markets/order-booksGET /apis/v1/markets/order-book
GET /open-api/v2/simulations/place-orderPOST /apis/v1/simulations/place-order (GET → POST)

/send-txs-bot/*/apis/v1/send-txs/*

OldNew
POST /send-txs-bot/v1/agent/approvePOST /apis/v1/send-txs/approve
POST /send-txs-bot/v1/agent/tracePOST /apis/v1/send-txs/trace
POST /send-txs-bot/v1/agent/tx-statusPOST /apis/v1/send-txs/tx-status
POST /send-txs-bot/v1/agent/tx-status-with-eventsPOST /apis/v1/send-txs/tx-status-with-events
POST /send-txs-bot/v2/agent/dedicated/bulk-direct-callPOST /apis/v1/send-txs/dedicated/bulk-calls
POST /send-txs-bot/v2/agent/dedicated/tx-statusPOST /apis/v1/send-txs/tx-status
POST /send-txs-bot/v2/agent/dedicated/tx-status-with-eventsPOST /apis/v1/send-txs/tx-status-with-events

/core/*/apis/*

The /core/* mount will be deprecated on 20 June 2026. Migrate to the public /apis/v1/* equivalent below.

OldNew
GET /core/v1/marketsGET /apis/v1/markets
GET /core/v1/markets/{id}GET /apis/v1/markets/by-ids?marketIds={id}
GET /core/v1/markets/chartGET /apis/v1/markets/ohlcv
GET /core/v1/order-books/{id}GET /apis/v1/markets/order-book?marketId={id}
GET /core/v2/amm/{id}GET /apis/v1/amm/states?marketIds={id} (batched; up to 100 IDs)
GET /core/v2/assets/allGET /apis/v1/assets
GET /core/v1/accounts/gas-balanceGET /apis/v1/accounts/gas-balance
GET /core/v1/gas-priceGET /apis/v1/gas-price/current
GET /core/v1/collaterals/summaryGET /apis/v1/accounts/market-acc-infos-by-root?root={addr} or POST /apis/v1/accounts/market-acc-infos
GET /core/v1/pnl/positionsGET /apis/v1/accounts/active-positions
GET /core/v1/pnl/limit-orders, GET /core/v2/pnl/limit-ordersGET /apis/v1/accounts/orders
GET /core/v1/pnl/transactionsGET /apis/v1/accounts/position-update-events
GET /core/v1/pnl/market-acc-cumulative-pnlPOST /apis/v1/accounts/market-acc-infos (cumulative PnL inlined)
GET /core/v1/settlement/settlementsGET /apis/v1/accounts/settlement-events
GET /core/v2/incentives/maker-incentives/statisticsGET /apis/v1/incentives/maker-incentives/campaigns/{id}?maker={addr}

Use WebSocket to Reduce Polling

The new API enforces strict rate limits (see Computing Units). If you currently poll the same endpoint many times per minute (markets, order-book, account state), switch to a WebSocket channel — subscribe once and receive push updates.

Account Channel

Subscribe per root address. See WebSocket → Account Channels.

EventReplaces polling of
POSITION_UPDATE/accounts/position-update-events, /accounts/market-acc-infos (position fields), legacy /core/v1/pnl/transactions, /open-api/v2/accounts/transactions
ORDER_UPDATE/accounts/orders, legacy /open-api/v2/accounts/limit-orders, /core/v1/pnl/limit-orders

Market-Data Channel

Subscribe per marketId. See WebSocket → Market-Data Events.

Replaces polling of
/apis/v1/markets/by-ids, legacy /open-api/v1/markets/{id}, /core/v1/markets/{id}, /core/v2/amm/{id}
/apis/v1/incentives/maker-incentives/campaigns/{id}, legacy /core/v2/incentives/maker-incentives/statistics

Order-Book Channel

Subscribe per marketId. See WebSocket → Orderbook Events.

Replaces polling of
/apis/v1/markets/order-book, legacy /open-api/v2/markets/order-books, /core/v1/order-books/{id}

Cross-Cutting Changes

  • marketAcc required on every account-scoped endpoint. Anonymous mode is removed.
  • Pagination: skip/limitcursor/limit.
  • Response envelope: { results: [...], cursor?: { next, hasMore }, syncStatus: { ... } }.
  • Computing Units: every endpoint advertises CU cost via the x-computing-unit response header. See Computing Units for the budget and per-endpoint costs.
  • Field renames: metadata.assetSymbolunderlyingSymbol; config.status numeric → string label; body field tiftimeInForce; place-orders body orderRequests[].singleOrderorders[].