Orderly EVM Trading API
REST API for order management (create/edit/cancel/batch/algo), accounts and sub-accounts, Orderly Key registration, cross-chain deposits and withdrawals, positions, holdings, settlement, funding, and public market data.
REST API for order management (create/edit/cancel/batch/algo), accounts and sub-accounts, Orderly Key registration, cross-chain deposits and withdrawals, positions, holdings, settlement, funding, and public market data.
openapi: 3.0.1
info:
title: EVM
description: ""
version: 1.0.0
tags:
- name: public
- name: private
paths:
/v1/client/add_sub_account:
post:
summary: Add sub account
description: |
**Limit: 10 requests per second**
`POST /v1/client/add_sub_account`
Only the main account is allowed to call this API.
Main account’s Orderly key can control sub accounts.
tags:
- private
parameters:
- $ref: "#/components/parameters/orderly_timestamp"
- $ref: "#/components/parameters/orderly_account_id"
- $ref: "#/components/parameters/orderly_key"
- $ref: "#/components/parameters/orderly_signature"
requestBody:
content:
application/json:
schema:
type: object
properties:
description:
type: string
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/AddSubAccountResponse"
/v1/client/sub_account:
get:
summary: Get sub account list
description: |
**Limit: 10 requests per second**
`GET /v1/client/sub_account`
Only the main account is allowed to call this API.
tags:
- private
parameters:
- $ref: "#/components/parameters/orderly_timestamp"
- $ref: "#/components/parameters/orderly_account_id"
- $ref: "#/components/parameters/orderly_key"
- $ref: "#/components/parameters/orderly_signature"
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/SubAccountResponse"
/v1/client/update_sub_account:
post:
summary: Update sub account
description: |
**Limit: 10 requests per second**
`POST /v1/client/update_sub_account`
Only the main account is allowed to call this API.
tags:
- private
parameters:
- $ref: "#/components/parameters/orderly_timestamp"
- $ref: "#/components/parameters/orderly_account_id"
- $ref: "#/components/parameters/orderly_key"
- $ref: "#/components/parameters/orderly_signature"
requestBody:
content:
application/json:
schema:
required:
- sub_account_id
type: object
properties:
sub_account_id:
type: string
description:
type: string
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/BasicResponse"
/v1/client/aggregate/positions:
get:
summary: Get aggregate positions
description: |
**Limit: 1 request per 60 seconds**
`GET /v1/client/aggregate/positions`
Only the main account is allowed to call this API.
tags:
- private
parameters:
- $ref: "#/components/parameters/orderly_timestamp"
- $ref: "#/components/parameters/orderly_account_id"
- $ref: "#/components/parameters/orderly_key"
- $ref: "#/components/parameters/orderly_signature"
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/AggregatePositionsResponse"
/v1/client/aggregate/holding:
get:
summary: Get aggregate holding
description: |
**Limit: 1 request per 60 seconds**
`GET /v1/client/aggregate/holding`
Only the main account is allowed to call this API.
tags:
- private
parameters:
- $ref: "#/components/parameters/orderly_timestamp"
- $ref: "#/components/parameters/orderly_account_id"
- $ref: "#/components/parameters/orderly_key"
- $ref: "#/components/parameters/orderly_signature"
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/AggregateHoldingResponse"
/v1/sub_account_settle_pnl:
post:
summary: Settle sub account PnL
description: |
**Limit: 10 requests per second**
`POST /v1/sub_account_settle_pnl`
Main account’s Orderly key can control sub accounts.
tags:
- private
parameters:
- $ref: "#/components/parameters/orderly_timestamp"
- name: orderly_account_id
in: header
description: "account_id in header can only be sub_account"
required: true
schema:
type: string
- $ref: "#/components/parameters/orderly_key"
- $ref: "#/components/parameters/orderly_signature"
requestBody:
content:
application/json:
schema:
required:
- settle_nonce
type: object
properties:
settle_nonce:
type: number
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/SettlePnlResponse"
/v1/public/futures:
get:
summary: Get market info for all symbols
deprecated: false
description: |
**Limit: 10 requests per 1 second per IP address**
`GET /v1/public/futures`
Get basic market information for all the symbols.
tags:
- public
parameters: []
responses:
"200":
description: Success
content:
application/json:
schema:
$ref: "#/components/schemas/FuturesInfoResponse"
/v1/ip_info:
get:
summary: Get IP info
deprecated: false
description: |
**Limit: 10 requests per 1 second per IP address**
`GET /v1/ip_info`
Returns the detected IP address and location metadata for the calling client.
tags:
- public
parameters: []
responses:
"200":
description: Success
content:
application/json:
schema:
$ref: "#/components/schemas/GetIpInfoResponse"
/v1/public/futures_market:
get:
summary: Get market volume by builder
deprecated: false
description: |
**Limit: 10 requests per 1 second per IP address**
`GET /v1/public/futures_market`
Returns market-level trading volume data. Use `symbol` to filter by market and `broker_id` to filter by builder.
tags:
- public
parameters:
- name: symbol
in: query
description: Filter results to a specific market symbol, for example `PERP_ETH_USDC`.
required: false
schema:
type: string
- name: broker_id
in: query
description: Filter results to a specific broker ID.
required: false
schema:
type: string
responses:
"200":
description: Success
content:
application/json:
schema:
$ref: "#/components/schemas/GetMarketVolumeByBrokerResponse"
/v1/public/balance/stats:
get:
summary: Get TVL by builder
deprecated: false
description: |
**Limit: 10 requests per 1 second per IP address**
`GET /v1/public/balance/stats`
Returns TVL (total balance plus unsettled PnL), optionally filtered by broker ID.
tags:
- public
parameters:
- name: broker_id
in: query
description: When omitted, returns TVL for all brokers.
required: false
schema:
type: string
responses:
"200":
description: Success
content:
application/json:
schema:
$ref: "#/components/schemas/GetTVLByBrokerResponse"
/v1/public/market_trades:
get:
summary: Get market trades
deprecated: false
description: |
**Limit: 10 requests per 1 second per IP address**
`GET /v1/public/market_trades`
Get the latest market trades.
tags:
- public
parameters:
- name: symbol
in: query
description: Symbol to query, for example `PERP_BTC_USDC`.
required: true
example: PERP_NEAR_USDC
schema:
type: string
- name: limit
in: query
description: Numbers of trades want to query.
required: false
example: "10"
schema:
type: integer
responses:
"200":
description: Success
content:
application/json:
schema:
$ref: "#/components/schemas/MarketTradesResponse"
/v1/public/market_info/price_changes:
get:
summary: Get price info for all symbols
deprecated: false
description: |
**Limit: 10 requests per 1 second per IP address**
`GET /v1/public/market_info/price_changes`
Return the current price and the price 5m, 30m, 1h, 24h, 3d, 7d, 30d ago for all symbols
Examples:
- Now: 11:06:30 (2024-07-11)
- 5m: 11:01:00 (2024-07-11)
- 30m: 10:36:00 (2024-07-11)
- 1h: 10:06:00 (2024-07-11)
- 4h: 07:06:00 (2024-07-11)
- 24h: 11:06:00 (2024-07-10)
- 3d: 00:00:00 (2024-07-08)
- 7d: 00:00:00 (2024-07-04)
- 30d: 00:00:00 (2024-06-11)
tags:
- public
responses:
"200":
description: Success
content:
application/json:
schema:
$ref: "#/components/schemas/MarketPriceChangeInfoResponse"
/v1/public/market_info/traders_open_interests:
get:
summary: Get open interests for all symbols
deprecated: false
description: |
**Limit: 10 requests per 1 second per IP address**
`GET /v1/public/market_info/traders_open_interests`
Return the long/short Open Interests for all symbols (mm accounts are excluded).
tags:
- public
responses:
"200":
description: Success
content:
application/json:
schema:
$ref: "#/components/schemas/MarketOpenInterestsResponse"
/v1/public/market_info/history_charts:
get:
summary: Get historical price list for all symbols
deprecated: false
description: |
**Limit: 10 requests per 1 second per IP address**
`GET /v1/public/market_info/history_charts`
Return the close price for all symbols
tags:
- public
parameters:
- name: time_interval
in: query
description: ""
required: false
schema:
type: string
responses:
"200":
description: Success
content:
application/json:
schema:
$ref: "#/components/schemas/GetPriceForSmallChartsResponse"
/v1/public/market_info/funding_history:
get:
summary: Get funding rate for all markets
deprecated: false
description: |
**Limit: 10 requests per 1 second per IP address**
`GET /v1/public/market_info/funding_history`
tags:
- public
responses:
"200":
description: Success
content:
application/json:
schema:
$ref: "#/components/schemas/GetMarketFundingRateHistoryResponse"
/v1/public/volume/stats:
get:
summary: Get builder volume
deprecated: false
description: >
**Limit: 10 requests per 1 second per IP address**
`GET /v1/public/volume/stats`
Returns the latest trading volume statistics for Orderly and its
associated builders. For a specific builder, volume is calculated as
maker volume plus taker volume. Platform-wide volume counts each matched
trade once.
tags:
- public
parameters:
- name: broker_id
in: query
description: Filter results to a specific broker ID.
required: false
example: test_broker
schema:
type: string
responses:
"200":
description: Success
content:
application/json:
schema:
$ref: "#/components/schemas/VolumeStatsResponse"
/v1/public/broker/stats:
get:
summary: Get builder stats
deprecated: false
description: |
**Limit: 10 requests per 1 second per IP address**
`GET /v1/public/broker/stats?broker_id={broker_id}`
Returns statistics for builders on Orderly. Use `broker_id` to limit the response to a single builder.
tags:
- public
parameters:
- name: broker_id
in: query
description: Filter results to a specific broker ID.
required: false
example: test_broker
schema:
type: string
responses:
"200":
description: Success
content:
application/json:
schema:
$ref: "#/components/schemas/BrokerStatsResponse"
/v1/public/broker/name:
get:
summary: Get builder list
deprecated: false
description: |
**Limit: 10 requests per 1 second per IP address**
`GET /v1/public/broker/name?broker_id={broker_id}`
Returns the list of builders currently onboarded to Orderly. Use `broker_id` to retrieve a single builder entry.
tags:
- public
parameters:
- name: broker_id
in: query
description: Filter results to a specific broker ID.
required: false
example: test_broker
schema:
type: string
responses:
"200":
description: Success
content:
application/json:
schema:
$ref: "#/components/schemas/BrokerListResponse"
/v1/public/funding_rates:
get:
summary: Get predicted funding rates for all markets
deprecated: false
description: >-
**Limit: 10 requests per 1 second per IP address**
`GET /v1/public/funding_rates`
Get predicted funding rates for all futures trading pairs.
Get the :
* `last_funding_rate` : latest hourly funding rate for all the markets
for the last funding period (dt = 8h)
* `est_funding_rate` : rolling average of all funding rates over the
last 8 hours
tags:
- public
parameters: []
responses:
"200":
description: Success
content:
application/json:
schema:
$ref: "#/components/schemas/FundingRatesResponse"
/v1/public/funding_rate/{symbol}:
get:
summary: Get predicted funding rate for one market
deprecated: false
description: |
**Limit: 30 requests per 1 second per IP address**
`GET /v1/public/funding_rate/{symbol}`
Get latest funding rate for one market.
tags:
- public
parameters:
- name: symbol
in: path
description: ""
required: true
example: PERP_ETH_USDC
schema:
type: string
responses:
"200":
description: Success
content:
application/json:
schema:
$ref: "#/components/schemas/FundingRateResponse"
/v1/public/funding_rate_history:
get:
summary: Get funding rate history for one market
deprecated: false
description: |
**Limit: 10 requests per 1 second per IP address**
`GET /v1/public/funding_rate_history`
Get funding rate history for one market.
tags:
- public
parameters:
- name: symbol
in: query
description: ""
required: true
example: PERP_NEAR_USDC
schema:
type: string
- name: start_t
in: query
description: >-
start time range that you wish to query, noted that the time stamp
is a 13-digits timestamp.
required: false
example: ""
schema:
type: number
- name: end_t
in: query
description: >-
end time range that you wish to query, noted that the time stamp is
a 13-digits timestamp.
required: false
example: ""
schema:
type: number
- name: page
in: query
description: the page you wish to query. start from 1
required: false
example: ""
schema:
type: number
- name: size
in: query
description: "Default: 60"
required: false
example: ""
schema:
type: number
responses:
"200":
description: Success
content:
application/json:
schema:
$ref: "#/components/schemas/FundingRateHistoryResponse"
/v1/public/futures/{symbol}:
get:
summary: Get market info for one symbol
deprecated: false
description: |
**Limit: 10 requests per 1 second per IP address**
`GET /v1/public/futures/{symbol}`
Get basic market information for one trading pair.
tags:
- public
parameters:
- name: symbol
in: path
description: ""
required: true
example: PERP_ETH_USDC
schema:
type: string
responses:
"200":
description: Success
content:
application/json:
schema:
$ref: "#/components/schemas/FuturesInfoResponse"
/v1/public/liquidation:
get:
summary: Get positions under liquidation
deprecated: false
description: |
**Limit: 10 requests per 1 second per IP address**
`GET /v1/public/liquidation`
Returns a list of positions that are currently being liquidated. These are positions where the margin has dropped below the maintenance margin requirement and are in the process of being closed by the liquidation engine.
tags:
- public
parameters:
- name: start_t
in: query
description: >-
start time range that you wish to query, noted that the time stamp
is a 13-digits timestamp.
required: false
example: ""
schema:
type: number
- name: end_t
in: query
description: >-
end time range that you wish to query, noted that the time stamp is
a 13-digits timestamp.
required: false
example: ""
schema:
type: number
- name: page
in: query
description: the page you wish to query. start from 1
required: false
example: ""
schema:
type: integer
- name: size
in: query
description: "Default: 60"
required: false
example: ""
schema:
type: integer
responses:
"200":
description: Success
content:
application/json:
schema:
$ref: "#/components/schemas/LiquidationResponse"
/v1/public/liquidated_positions:
get:
summary: Get liquidated positions info
deprecated: false
description: |
**Limit: 10 requests per 1 second per IP address**
`GET /v1/public/liquidated_positions`
Returns a list of positions that have been fully liquidated. This includes historical data on positions that were closed by the liquidation engine after margin was exhausted.
tags:
- public
parameters:
- name: symbol
in: query
description: Filter results to a specific trading symbol, for example `PERP_ETH_USDC`.
required: false
example: PERP_ETH_USDC
schema:
type: string
- name: start_t
in: query
description: Start time of the query range as a 13-digit Unix timestamp in milliseconds.
required: false
example: ""
schema:
type: string
- name: end_t
in: query
description: End time of the query range as a 13-digit Unix timestamp in milliseconds.
required: false
example: ""
schema:
type: string
- name: page
in: query
description: Page number to return. Starts from 1.
required: false
example: ""
schema:
type: string
- name: size
in: query
description: Number of records to return per page.
required: false
example: ""
schema:
type: string
responses:
"200":
description: Success
content:
application/json:
schema:
$ref: "#/components/schemas/LiquidatedPositionsResponse"
/v1/public/info/{symbol}:
get:
summary: Get order rules per symbol
deprecated: false
description: |
**Limit: 10 requests per 1 second per IP address**
`GET /v1/public/info/{symbol}`
This endpoint provides all the values for the rules that an order need
to fulfil in order for it to be placed successfully. The rules are
defined as follows:
Price filter
- `price` >= `quote_min`
- `price` =< `quote_max`
- `(price - quote_min) % quote_tick` should equal to zero
- `price` =< `mark_price * (1 + price_range)` when BUY
- `price` >= `mark_price * (1 - price_range)` when SELL
Size filter
- `base_min` =< `quantity` =< `base_max`
- `(quantity - base_min) % base_tick` should equal to zero
Min Notional filter
- `price * quantity` should greater than `min_notional`
Risk Exposure filer
- Order size should be within holding threshold. See
[account_info](/docs/build-on-omnichain/restful-api/private/get-account-information)
tags:
- public
parameters:
- name: symbol
in: path
description: ""
required: true
schema:
type: string
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/ExchangeInformationResponse"
/v1/public/token:
get:
summary: Get supported collateral info
deprecated: false
description: |
**Limit: 10 requests per 1 second per IP address**
`GET /v1/public/token`
Retrieves the available tokens to be used as collateral within Orderly.
tags:
- public
parameters:
- name: chain_id
in: query
description: "Filter results by chain_id"
required: false
schema:
type: string
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/TokenInfoResponse"
/v1/public/info:
get:
summary: Get available symbols
deprecated: false
description: >
**Limit: 10 requests per 1 second per IP address**
`GET /v1/public/info`
Get available symbols that Orderly supports, and also send order
rules for each symbol. The definition of rules can be found at [Get Order Rules per Market](/docs/build-on-omnichain/restful-api/public/get-order-rules-per-symbol)
tags:
- public
parameters: []
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/AvailableSymbolsResponse"
/v1/public/index_price_source:
get:
summary: Get index price source
deprecated: false
description: |
**Limit: 10 requests per 1 second per IP address**
`GET /v1/public/index_price_source`
Retrieves the available tokens to be used as collateral within Orderly.
tags:
- public
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/GetIndexPriceSourceResponse"
/v1/public/insurancefund:
get:
summary: Get insurance fund info
deprecated: false
description: |
**Limit: 10 requests per 1 second per IP address**
`GET /v1/public/insurancefund`
Returns the current balance and risk metrics for the Orderly insurance fund.
tags:
- public
parameters: []
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/InsuranceFundResponse"
/v1/tv/config:
get:
summary: Get tradingview localized config info
deprecated: false
description: |
**Limit: 10 requests per 1 second per IP address**
`GET /v1/tv/config`
tags:
- public
parameters:
- name: locale
in: query
description: ""
required: true
example: ""
schema:
type: string
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/TvConfigResponse"
/v1/tv/history:
get:
summary: Get tradingview history bars
deprecated: false
description: |
**Limit: 10 requests per 1 second per IP address**
`GET /v1/tv/history?symbol={}&resolution={}&from={}&to={}`
tags:
- public
parameters:
- name: symbol
in: query
description: ""
required: true
example: ""
schema:
type: string
- name: resolution
in: query
description: ""
required: true
example: ""
schema:
type: string
- name: from
in: query
description: ""
required: true
example: ""
schema:
type: string
- name: to
in: query
description: ""
required: true
example: ""
schema:
type: string
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/TvHistoryResponse"
/v1/tv/symbol_info:
get:
summary: Get tradingview symbol info
deprecated: false
description: |
**Limit: 10 requests per 1 second per IP address**
`GET /v1/tv/symbol_info`
tags:
- public
parameters:
- name: group
in: query
description: ""
required: true
example: ""
schema:
type: string
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/TvSymbolResponse"
/v1/positions:
get:
summary: Get all positions info
deprecated: false
description: |
**Limit: 30 requests per 10 second per user**
`GET /v1/positions`
tags:
- private
parameters:
- $ref: "#/components/parameters/orderly_timestamp"
- $ref: "#/components/parameters/orderly_account_id"
- $ref: "#/components/parameters/orderly_key"
- $ref: "#/components/parameters/orderly_signature"
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/PositionsResponse"
/v1/positions_lite:
get:
summary: Get lite positions info
deprecated: false
description: |
**Limit: 10 requests per 1 second**
`GET /v1/positions_lite`
Get lightweight positions information.
tags:
- private
parameters:
- $ref: "#/components/parameters/orderly_timestamp"
- $ref: "#/components/parameters/orderly_account_id"
- $ref: "#/components/parameters/orderly_key"
- $ref: "#/components/parameters/orderly_signature"
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/PositionsLiteResponse"
/v1/position/{symbol}:
get:
summary: Get one position info
deprecated: false
description: |
**Limit: 30 requests per 10 second per user**
`GET /v1/position/{symbol}`
tags:
- private
parameters:
- name: symbol
in: path
description: ""
required: true
schema:
type: string
- name: margin_mode
in: query
description: "Default: `CROSS`. Supported values: `CROSS`/`ISOLATED`"
required: false
schema:
type: string
enum:
- CROSS
- ISOLATED
- $ref: "#/components/parameters/orderly_timestamp"
- $ref: "#/components/parameters/orderly_account_id"
- $ref: "#/components/parameters/orderly_key"
- $ref: "#/components/parameters/orderly_signature"
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/PositionResponse"
/v1/position_history:
get:
summary: Get position history
deprecated: false
description: |
**Limit: 10 requests per 1 second per user**
`GET /v1/position_history`
tags:
- private
parameters:
- name: symbol
in: query
description: ""
required: false
schema:
type: string
- name: limit
in: query
description: ""
required: true
schema:
type: number
- $ref: "#/components/parameters/orderly_timestamp"
- $ref: "#/components/parameters/orderly_account_id"
- $ref: "#/components/parameters/orderly_key"
- $ref: "#/components/parameters/orderly_signature"
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/PositionHistoryResponse"
/v1/funding_fee/history:
get:
summary: Get funding fee history
deprecated: false
description: |
**Limit: 20 requests per 60 second per user**
`GET /v1/funding_fee/history`
Get funding fee history.
tags:
- private
parameters:
- name: symbol
in: query
description: "omit to get funding fee history for all symbols"
required: false
example: PERP_ETH_USDC
schema:
type: string
- name: start_t
in: query
description: >-
start time range that you wish to query, noted that the time stamp
is a 13-digits timestamp.
required: false
example: ""
schema:
type: string
- name: end_t
in: query
description: >-
end time range that you wish to query, noted that the time stamp is
a 13-digits timestamp.
required: false
example: ""
schema:
type: string
- name: page
in: query
description: the page you wish to query. start from 1
required: false
example: ""
schema:
type: string
- name: size
in: query
description: "Defaul
# --- truncated at 32 KB (536 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/orderly-network/refs/heads/main/openapi/orderly-network-openapi-original.yml