Upcoming Changes
OKX trading fee scheme update
Last updated: 2025/11/3
OKX will update the trading fee scheme for improved fee differentiation across tiers. Please refer to the announcement for more details.
Instruments endpoint/channel
- Add a new response parameter groupId to indicate which group a specific symbol belongs to.
Response Parameters
| Parameter | Type | Description |
|---|---|---|
| groupId | String | Instrument trading fee group ID Spot: 1: Spot USDT2: Spot USDC & Crypto3: Spot TRY4: Spot EUR5: Spot BRL7: Spot AED8: Spot AUD9: Spot USD10: Spot SGD11: Spot zero12: Spot group one13: Spot group two14: Spot group threeExpiry futures: 1: Expiry futures crypto-margined2: Expiry futures USDT-margined3: Expiry futures USDC-margined4: Expiry futures premarket5: Expiry futures group one6: Expiry futures group twoPerpetual futures: 1: Perpetual futures crypto-margined2: Perpetual futures USDT-margined3: Perpetual futures USDC-margined4: Perpetual futures group one5: Perpetual futures group twoOptions: 1: Options crypto-margined2: Options USDC-marginedinstType and groupId should be used together to determine a trading fee group. Users should use this endpoint together with fee rates endpoint to get the trading fee of a specific symbol. **Some enum values may not apply to you; the actual return values shall prevail. |
Response Example
{
"code":"0",
"msg":"",
"data":[
{
"alias": "",
"auctionEndTime": "",
"baseCcy": "BTC",
"category": "1",
"ctMult": "",
"ctType": "",
"ctVal": "",
"ctValCcy": "",
"contTdSwTime": "1704876947000",
"expTime": "",
"futureSettlement": false,
"groupId": "13"
"instFamily": "",
"instId": "BTC-USDT",
"instType": "SPOT",
"lever": "10",
"listTime": "1606468572000",
"lotSz": "0.00000001",
"maxIcebergSz": "9999999999.0000000000000000",
"maxLmtAmt": "1000000",
"maxLmtSz": "9999999999",
"maxMktAmt": "1000000",
"maxMktSz": "",
"maxStopSz": "",
"maxTriggerSz": "9999999999.0000000000000000",
"maxTwapSz": "9999999999.0000000000000000",
"minSz": "0.00001",
"optType": "",
"openType": "call_auction",
"preMktSwTime": "",
"quoteCcy": "USDT",
"tradeQuoteCcyList": [
"USDT"
],
"settleCcy": "",
"state": "live",
"ruleType": "normal",
"stk": "",
"tickSz": "0.1",
"uly": "",
"instIdCode": 1000000000
}
]
}
Get fee rates endpoint
- Add new response parameter feeGroup.
Response Parameters
| Parameter | Type | Description |
|---|---|---|
| feeGroup | Array of objects | Fee groups. Applicable to SPOT/MARGIN/SWAP/FUTURES/OPTION |
| > taker | String | Taker fee |
| > maker | String | Maker fee |
| > groupId | String | Instrument trading fee group ID instType and groupId should be used together to determine a trading fee group. Users should use this endpoint together with instruments endpoint to get the trading fee of a specific symbol. |
Response Example
{
"code": "0",
"msg": "",
"data": [{
"category": "1", //Deprecated
"delivery": "",
"exercise": "",
"feeGroup": [
{
"taker": "0.001",
"maker": "0.0001",
"groupId": "1"
},
{
"taker": "0.01",
"maker": "0.001",
"groupId": "2"
},
{
"taker": "0.1",
"maker": "0.01",
"groupId": "3"
},
......
],
"instType": "SPOT",
"level": "lv1",
"maker": "-0.0008",
"makerU": "",
"makerUSDC": "",
"taker": "-0.001",
"takerU": "",
"takerUSDC": "",
"ruleType": "normal",
"ts": "1608623351857",
"fiat": []
}
]
}
2025-08-27
Fiat buy/sell is supported.
2025-07-24
- Added
toAddrTypeparameter in the following endpoints:
| Parameter | Type | Required | Description |
|---|---|---|---|
| toAddrType | String | No | Address type1: wallet address, email, phone, or login account name2: UID (only applicable for dest=3) |
2025-07-08
Open API supports Unified USD Orderbook
For more details, please refer to Unified USD Orderbook FAQ
- Added new request parameter
| Parameter | Type | Required | Description |
|---|---|---|---|
| tradeQuoteCcy | String | No | The quote currency used for trading. Only applicable to SPOT. The default value is the quote currency of the instId, for example: for BTC-USD, the default is USD. |
- Added new response parameter
| Parameter | Type | Description |
|---|---|---|
| tradeQuoteCcyList | Array of strings | List of quote currencies available for trading, e.g. ["USD", "USDC"]. |
- Added new response parameter
| Parameter | Type | Description |
|---|---|---|
| tradeQuoteCcy | String | The quote currency used for trading. |
Trades channel adds seqId field
| Parameter | Type | Description |
|---|---|---|
| data | Array | Subscribed data |
| > seqId | Integer | Sequence ID of the current message. |
Note: The seqId may be the same for different trade updates that occur at the same time.
Fiat
Fiat deposits and withdrawals are supported.
2025-07-02
Added new endpoint
The request parameter has been updated as follows:
Before
| Parameter | Type | Required | Description |
|---|---|---|---|
| after | String | No | Pagination of data to return records earlier than the requested ts, Unix timestamp format in milliseconds, e.g. 1597026383085 |
| before | String | No | Pagination of data to return records newer than the requested ts, Unix timestamp format in milliseconds, e.g. 1597026383085 |
After
| Parameter | Type | Required | Description |
|---|---|---|---|
| after | String | No | Pagination of data to return records earlier than the requested ts or billId, Unix timestamp format in milliseconds, e.g. 1597026383085 |
| before | String | No | Pagination of data to return records newer than the requested ts or billId, Unix timestamp format in milliseconds, e.g. 1597026383085 |
| pagingType | String | No | PagingType1: Timestamp of the bill record2: Bill ID of the bill recordThe default is 1 |
- Added new response parameter
| Parameter | Type | Description |
|---|---|---|
| notes | String | Notes |
2025-05-28
- Added endpoints. Bills details (since 2021) endpoints below have been released in production
2025-04-17
Added endpoints
Added new error codes
| Error code | Error Message |
|---|---|
| 59515 | You are currently not on the custody whitelist. Please contact customer service for assistance. |
| 59516 | Please create the Copper custody funding account first. |
| 59517 | Please create the Komainu custody funding account first. |
| 59518 | You can’t create a sub-account using the API; please use the app or web. |
| 59519 | You can’t use this function/feature while it's frozen, due to: {freezereason} |
2025-02-12
- Added new parameters
| Parameter | Type | Description |
|---|---|---|
| notionalUsdForBorrow | String | Notional value for Borrow in USDApplicable to Spot mode/Multi-currency margin/Portfolio margin |
| notionalUsdForSwap | String | Notional value of positions for Perpetual Futures in USDApplicable to Multi-currency margin/Portfolio margin |
| notionalUsdForFutures | String | Notional value of positions for Expiry Futures in USDApplicable to Multi-currency margin/Portfolio margin |
| notionalUsdForOption | String | Notional value of positions for Option in USDApplicable to Spot mode/Multi-currency margin/Portfolio margin |
2025-01-14
Withdrawal API adjustment for EEA entity users
Due to compliance requirements, EEA entity users need to pass in the field rcvrInfo when making on-chain/lightning withdrawal.
| Parameters | Type | Required | Description |
|---|---|---|---|
| rcvrInfo | Object | Conditional | Recipient information For the specific entity users to do on-chain withdrawal/lightning withdrawal, this information is required. |
| > walletType | String | Yes | Wallet Typeexchange: Withdraw to exchange walletIf withdrawal to the exchange wallet, relevant information about the recipient must be provided. For the exchange wallet belongs to business recipient, rcvrFirstName may input the company name, rcvrLastName may input "N/A" |
| > exchId | String | Conditional | Exchange ID You can query supported exchanges through the endpoint of Get exchange list (public) If the exchange is not in the exchange list, fill in '0' in this field. |
| > rcvrFirstName | String | Conditional | Receiver's first name, e.g. Bruce |
| > rcvrLastName | String | Conditional | Receiver's last name, e.g. Wayne |
Withdraw assets to the exchange wallet
If users withdraw assets to the exchange wallet, they need to provide recipient information.
- Users under the EEA entity need to pass in the following field information of the recipient (rcvrFirstName, rcvrLastName). For the exchange wallet belongs to business recipient,
rcvrFirstNamemay input the company name,rcvrLastNamemay input "N/A". The examples are as follows:
Withdraw assets to the private wallet
You can't withdraw to a private wallet via API. Please withdraw via our app or website instead.
Other API adjustment
- Added new response parameters
| Parameter | Type | Description |
|---|---|---|
| note | String | Withdrawal note |
- Added new enumerations
| Parameter | Type | Description |
|---|---|---|
| state | String | 17: Pending response from Travel Rule vendor |
Newly added error code
| Error code | Error Message |
|---|---|
| 58239 | You can't withdraw to a private wallet via API. Please withdraw via our app or website instead. |
2024-12-30
2024-09-19
- Added new response parameters
| Parameter | Type | Description |
|---|---|---|
| enableSpotBorrow | Boolean | Whether borrow is allowed or not in Spot modetrue: Enabledfalse: Disabled |
| spotBorrowAutoRepay | Boolean | Whether auto-repay is allowed or not in Spot modetrue: Enabledfalse: Disabled |
- Added new response parameters
| Parameter | Type | Description |
|---|---|---|
| ccy | String | Currency |
- Added new response parameters
| Parameter | Type | Description |
|---|---|---|
| isTradeBorrowMode | String | Whether borrowing currency automatically true false Only applicable to trigger order, trailing order and twap order |
2024-09-18
- Added new endpoints: