NAV Navbar
shell

Introduction

Setup

# make sure you have curl installed

Poloniex provides both HTTP and websocket APIs for interacting with the exchange. Both allow read access to public market data and private read access to your account. Private write access to your account is available via the private HTTP API.

The public HTTP endpoint is accessed via GET requests while the private endpoint is accessed via HMAC-SHA512 signed POST requests using API keys. Both types of HTTP endpoints return results in JSON format.

The websocket API allows push notifications about the public order books, lend books and your private account. Similarly to the HTTP API, it requires HMAC-SHA512 signed requests using API keys for requests related to your private account.

Getting Started

Sign Up

If you do not have a Poloniex account yet, use the button below to sign up.

Sign Up

Create an API Key

Once you are verified and have an account, you can create an API Key.

Enabling IP address restrictions for API keys is strongly recommended. Withdrawals are disabled by default and must be enabled on a per key basis.

As the name implies, your secret must remain private! If you suspect your key has been compromised, immediately disable that key and generate a new one.

Authenticate

# Find the HMAC-SHA512 signature of your POST parameters
# using your secret key. Set the nonce to the current
# milliseconds. (available with date +%s00000)
 echo -n "command=returnBalances&nonce=154264078495300" | \
openssl sha512 -hmac $API_SECRET
# You will use this signature as a header in your request.
# For example:
 curl -X POST \
     -d "command=returnBalances&nonce=154264078495300" \
     -H "Key: 7BCLAZQZ-HKLK9K6U-3MP1RNV9-2LS1L33J" \
     -H "Sign: 2a7849ecf...ae71161c8e9a364e21d9de9" \
     https://poloniex.com/tradingApi

Private HTTP endpoints are authenticated using HMAC-SHA512 signed POST request.

Private HTTP endpoints also require a nonce, which must be an integer greater than the previous nonce used. There is no requirement that nonces increase by a specific amount, so the current epoch time in milliseconds is an easy choice. As each API key has its own nonce tracking, using a different key for each client process can greatly simplify nonce management.

Deposit

Transfer some funds into your account.

Minimize Latency

If you will be performing high-frequency trading, you may wish to locate your bots as close to our servers as possible. As Poloniex uses Cloudflare for all requests, you can minimize network latency by positioning your client near the Cloudflare gateway in Ashburn, VA, United States. You can identify which Cloudflare gateway your client is accessing by running this command on the same machine as your bot:

curl -s https://www.cloudflare.com/cdn-cgi/trace

Cloudflare’s Ashburn data center will return a “colo” field of “IAD”. If you get a different “colo” value, you can look up the location at https://www.cloudflarestatus.com.

HTTP API

The HTTP API allows read access to public market data through the public endpoint and read / write access to your private account via the private endpoint.

Please note that there is a default limit of 6 calls per second. If you require more than this, please consider optimizing your application using the websocket-based push API, the "moveOrder" command, or the "all" parameter where appropriate.

Making more than 6 calls per second to the API, or repeatedly and needlessly fetching excessive amounts of data, can result in rate limit. Please be careful.

Public HTTP API Methods

The public HTTP API allows read access to public market data.

There are seven public methods, all of which take HTTP GET requests and return output in JSON format. No authentication is necessary but you must not excessively use any API endpoint.

returnTicker

curl "https://poloniex.com/public?command=returnTicker"

Example output:

...
{ BTC_BCN:
   { id: 7,
     last: '0.00000024',
     lowestAsk: '0.00000025',
     highestBid: '0.00000024',
     percentChange: '0.04347826',
     baseVolume: '58.19056621',
     quoteVolume: '245399098.35236773',
     isFrozen: '0',
     high24hr: '0.00000025',
     low24hr: '0.00000022' },
  USDC_BTC:
   { id: 224,
     last: '6437.65329245',
     lowestAsk: '6436.73575054',
     highestBid: '6425.68259132',
     percentChange: '0.00744080',
     baseVolume: '1193053.18913982',
     quoteVolume: '185.43611063',
     isFrozen: '0',
     high24hr: '6499.09114231',
     low24hr: '6370.00000000' },
...

Retrieves summary information for each currency pair listed on the exchange. Fields include:

Field Description
id Id of the currency pair.
last Execution price for the most recent trade for this pair.
lowestAsk Lowest current purchase price for this asset.
highestBid Highest current sale price for this asset.
percentChange Price change percentage.
baseVolume Base units traded in the last 24 hours.
quoteVolume Quoted units traded in the last 24 hours.
isFrozen Indicates if this market is currently trading or not.
high24hr The highest execution price for this pair within the last 24 hours.
low24hr The lowest execution price for this pair within the last 24 hours.

return24hVolume

curl "https://poloniex.com/public?command=return24hVolume"

Example output:

{ BTC_LTC: { BTC: '38.13504038', LTC: '4662.34229096' },
  BTC_MAID: { BTC: '10.38010322', MAID: '359919.71515255' },
...
  USDC_BTC: { USDC: '481389.13175764', BTC: '74.73988488' },
  USDC_ETH: { USDC: '72302.27016210', ETH: '357.72884034' },
  totalBTC: '2340.96441558',
  totalETH: '2771.63218462',
  totalUSDC: '681255.56961992' }

Returns the 24-hour volume for all markets as well as totals for primary currencies.

Primary currencies include BTC, ETH, USDT, USDC and show the total amount of those tokens that have traded within the last 24 hours.

returnOrderBook

curl "https://poloniex.com/public?command=returnOrderBook&currencyPair=BTC_ETH&depth=10"

Example output for a selected market:

{ asks: 
   [ [ '0.03142500', 16.5322 ],
     [ '0.03143140', 0.14561998 ],
     [ '0.03144000', 149.2466 ],
...
     [ '0.03175915', 3.95025486 ],
     [ '0.03176634', 0.01579061 ] ],
  bids: 
   [ [ '0.03141658', 4.75222193 ],
     [ '0.03141644', 0.05252027 ],
     [ '0.03141608', 0.20943191 ],
...
     [ '0.03129457', 0.01861854 ],
     [ '0.03128648', 0.47593681 ] ],
  isFrozen: '0',
  seq: 595100792 }

Example output for all markets:

{ BTC_ETH: 
   { asks: 
      [ [ '0.03143500', 46.84591041 ],
        [ '0.03144000', 100.086388 ],
        [ '0.03144865', 6.01683252 ],
...
        [ '0.03132669', 0.01619218 ] ],
     isFrozen: '0',
     seq: 130962406 },
  BTC_LTC: 
   { asks: 
      [ [ '0.00812000', 6.82726987 ],
        [ '0.00812253', 6.6911383 ],
        [ '0.00812500', 84.1323 ],
...
        [ '1.06900000', 0.0162 ],
        [ '1.06800000', 0.0162 ],
        [ '1.06700000', 0.0162 ] ],
     isFrozen: '0',
     seq: 51055117 } }

Returns the order book for a given market, as well as a sequence number used by websockets for synchronization of book updates and an indicator specifying whether the market is frozen. You may set currencyPair to "all" to get the order books of all markets.

Request Parameter Description
currencyPair A pair like BTC_ETH or all
depth (optional) Default depth is 50. Max depth is 100.
Field Description
asks An array of price aggregated offers in the book ordered from low to high price.
bids An array of price aggregated bids in the book ordered from high to low price.
isFrozen Indicates if trading the market is currently disabled or not.
seq An always-incrementing sequence number for this market.

returnTradeHistory (public)

curl "https://poloniex.com/public?command=returnTradeHistory&currencyPair=BTC_ETH"
curl "https://poloniex.com/public?command=returnTradeHistory&currencyPair=BTC_ETH&start=1410158341&end=1410499372"

Example output:

[ { globalTradeID: 394604821,
    tradeID: 45205037,
    date: '2018-10-22 15:03:57',
    type: 'sell',
    rate: '0.03143485',
    amount: '0.00009034',
    total: '0.00000283' },
  { globalTradeID: 394604809,
    tradeID: 45205036,
    date: '2018-10-22 15:03:47',
    type: 'buy',
    rate: '0.03143485',
    amount: '0.00770177',
    total: '0.00024210' },
...
  { globalTradeID: 394603147,
    tradeID: 45204939,
    date: '2018-10-22 14:31:59',
    type: 'sell',
    rate: '0.03139500',
    amount: '0.00041216',
    total: '0.00001293' },
  { globalTradeID: 394603133,
    tradeID: 45204938,
    date: '2018-10-22 14:31:41',
    type: 'sell',
    rate: '0.03140030',
    amount: '2.42099000',
    total: '0.07601981' } ]

Returns the past 200 trades for a given market, or up to 1,000 trades between a range specified in UNIX timestamps by the "start" and "end" GET parameters. Fields include:

Field Description
globalTradeID The globally unique ID associated with this trade.
tradeID The ID unique only to this currency pair associated with this trade.
date The UTC date and time of the trade execution.
type Designates this trade as a buy or a sell from the side of the taker.
rate The price in base currency for this asset.
amount The number of units transacted in this trade.
total The total price in base units for this trade.

returnChartData

curl "https://poloniex.com/public?command=returnChartData&currencyPair=BTC_XMR&start=1546300800&end=1546646400&period=14400"

Example output:

[ { date: 1539864000,
    high: 0.03149999,
    low: 0.031,
    open: 0.03144307,
    close: 0.03124064,
    volume: 64.36480422,
    quoteVolume: 2055.56810329,
    weightedAverage: 0.03131241 },
  { date: 1539878400,
    high: 0.03129379,
    low: 0.03095999,
    open: 0.03124064,
    close: 0.03108499,
    volume: 50.21821153,
    quoteVolume: 1615.31999527,
    weightedAverage: 0.0310887 },
...
  { date: 1540195200,
    high: 0.03160347,
    low: 0.03140002,
    open: 0.031455,
    close: 0.03151499,
    volume: 21.44394862,
    quoteVolume: 681.30276558,
    weightedAverage: 0.03147491 },
  { date: 1540209600,
    high: 0.03153475,
    low: 0.031265,
    open: 0.03151497,
    close: 0.03141781,
    volume: 39.82606009,
    quoteVolume: 1268.53159161,
    weightedAverage: 0.0313954 } ]

Returns candlestick chart data. Required GET parameters are "currencyPair", "period" (candlestick period in seconds; valid values are 300, 900, 1800, 7200, 14400, and 86400), "start", and "end". "Start" and "end" are given in UNIX timestamp format and used to specify the date range for the data returned. Fields include:

Input Fields

Field Description
currencyPair The currency pair of the market being requested.
period Candlestick period in seconds. Valid values are 300, 900, 1800, 7200, 14400, and 86400.
start The start of the window in seconds since the unix epoch.
end The end of the window in seconds since the unix epoch.

Output Fields

Field Description
date The UTC date for this candle in miliseconds since the Unix epoch.
high The highest price for this asset within this candle.
low The lowest price for this asset within this candle.
open The price for this asset at the start of the candle.
close The price for this asset at the end of the candle.
volume The total amount of this asset transacted within this candle.
quoteVolume The total amount of base currency transacted for this asset within this candle.
weightedAverage The average price paid for this asset within this candle.

returnCurrencies

curl "https://poloniex.com/public?command=returnCurrencies"

Example output:

{ '1CR': 
   { id: 1,
     name: '1CRedit',
     txFee: '0.01000000',
     minConf: 10000,
     depositAddress: null,
     disabled: 1,
     delisted: 1,
     frozen: 0 },
  ABY: 
   { id: 2,
     name: 'ArtByte',
     txFee: '0.01000000',
     minConf: 10000,
     depositAddress: null,
     disabled: 1,
     delisted: 1,
     frozen: 0 },
...
  ZEC: 
   { id: 286,
     name: 'Zcash',
     txFee: '0.00100000',
     minConf: 8,
     depositAddress: null,
     disabled: 0,
     delisted: 0,
     frozen: 0 },
  ZRX: 
   { id: 293,
     name: '0x',
     txFee: '5.00000000',
     minConf: 30,
     depositAddress: null,
     disabled: 0,
     delisted: 0,
     frozen: 0 } }

Returns information about currencies. Fields include:

Field Description
name Name of the currency.
txFee The network fee necessary to withdraw this currency.
minConf The minimum number of blocks necessary before a deposit can be credited to an account.
depositAddress If available, the deposit address for this currency.
disabled Designates whether (1) or not (0) deposits and withdrawals are disabled.
delisted Designates whether (1) or not (0) this currency has been delisted from the exchange.
frozen Designates whether (1) or not (0) trading for this currency is disabled for trading.

If the currency lists a deposit address, deposits to that address must be accompanied by a deposit message unique to your account. See the Balances, Deposits & Withdrawals page for more information.

returnLoanOrders

curl "https://poloniex.com/public?command=returnLoanOrders&currency=BTC"

Example output:

{ offers: 
   [ { rate: '0.00005900',
       amount: '0.01961918',
       rangeMin: 2,
       rangeMax: 2 },
     { rate: '0.00006000',
       amount: '62.24928418',
       rangeMin: 2,
       rangeMax: 2 },
...
     { rate: '0.00007037',
       amount: '0.03083815',
       rangeMin: 2,
       rangeMax: 2 } ],
  demands: 
   [ { rate: '0.02000000',
       amount: '0.00100014',
       rangeMin: 2,
       rangeMax: 2 },
...
     { rate: '0.00001000',
       amount: '0.04190154',
       rangeMin: 2,
       rangeMax: 2 } ] }

Returns the list of loan offers and demands for a given currency, specified by the "currency" GET parameter. Fields include:

Field Description
rate The interest rate in percentage per day charged for this loan.
amount The total number of units available at this rate and within this range.
rangeMin The lowest duration in days offered by the loans within this group.
rangeMax The highest duration in days offered by the loans within this group.

Private HTTP API Methods

The private HTTP API allows read / write access to your private account.

All calls to the trading API are sent via HTTP using POST parameters to https://poloniex.com/tradingApi and must contain the following headers:

Additionally, all queries must include a "nonce" POST parameter. The nonce parameter is an integer which must always be greater than the previous nonce used and does not need to increase by one. Using the epoch in milliseconds is an easy choice here but be careful about time synchronization if using the same API key across multiple servers.

All responses from the trading API are in JSON format. In the event of an error, the response will always be of the following format:

{ "error": "<error message>" }

There are several methods accepted by the trading API, each of which is specified by the "command" POST parameter:

returnBalances

# Note: set the nonce to the current milliseconds. For example: date +%s00000
echo -n "command=returnBalances&nonce=154264078495300" | \
openssl sha512 -hmac $API_SECRET

curl -X POST \
     -d "command=returnBalances&nonce=154264078495300" \
     -H "Key: 7BCLAZQZ-HKLK9K6U-3MP1RNV9-2LS1L33J" \
     -H "Sign: 2a7849ecf...ae71161c8e9a364e21d9de9" \
     https://poloniex.com/tradingApi

Example output:

{ '1CR': '0.00000000',
  ABY: '0.00000000',
  AC: '0.00000000',
...
  YIN: '0.00000000',
  ZEC: '0.02380926',
  ZRX: '0.00000000' }

Returns all of your balances available for trade after having deducted all open orders.

returnCompleteBalances

# Note: set the nonce to the current milliseconds. For example: date +%s00000
echo -n "command=returnCompleteBalances&nonce=154264078495300" | \
openssl sha512 -hmac $API_SECRET

curl -X POST \
     -d "command=returnCompleteBalances&nonce=154264078495300" \
     -H "Key: 7BCLAZQZ-HKLK9K6U-3MP1RNV9-2LS1L33J" \
     -H "Sign: 2a7849ecf...ae71161c8e9a364e21d9de9" \
     https://poloniex.com/tradingApi

Example output:

{ '1CR':
   { available: '0.00000000',
     onOrders: '0.00000000',
     btcValue: '0.00000000' },
  ABY:
   { available: '0.00000000',
     onOrders: '0.00000000',
     btcValue: '0.00000000' },
  AC:
   { available: '0.00000000',
     onOrders: '0.00000000',
     btcValue: '0.00000000' },
...
  YIN:
   { available: '0.00000000',
     onOrders: '0.00000000',
     btcValue: '0.00000000' },
  ZEC:
   { available: '0.02380926',
     onOrders: '0.00000000',
     btcValue: '0.00044059' },
  ZRX:
   { available: '0.00000000',
     onOrders: '0.00000000',
     btcValue: '0.00000000' } }

Returns all of your balances, including available balance, balance on orders, and the estimated BTC value of your balance. By default, this call is limited to your exchange account; set the "account" POST parameter to "all" to include your margin and lending accounts.

Field Description
available Number of tokens not reserved in orders.
onOrders Number of tokens in open orders.
btcValue The BTC value of this token's balance.

returnDepositAddresses

# Note: set the nonce to the current milliseconds. For example: date +%s00000
echo -n "command=returnDepositAddresses&nonce=154264078495300" | \
openssl sha512 -hmac $API_SECRET

curl -X POST \
     -d "command=returnDepositAddresses&nonce=154264078495300" \
     -H "Key: 7BCLAZQZ-HKLK9K6U-3MP1RNV9-2LS1L33J" \
     -H "Sign: 2a7849ecf...ae71161c8e9a364e21d9de9" \
     https://poloniex.com/tradingApi

Example output:

{ BCH: '1FhCkdKeMGa621mCpAtFYzeVfUBnHbooLj',
  BTC: '131rdg5Rzn6BFufnnQaHhVa5ZtRU1J2EZR',
...
  XMR: '4JUdGzvrMFDWrUUwY3toJATSeNwjn54LkCnKBPRzDuhzi5vSepHfUckJNxRL2gjkNrSqtCoRUrEDAgRwsQvVCjZbRxGLC7uLNMGQ693YeY',
  ZEC: 't1MHktAs4DMjMWqKiji4czLYD1rGNczGeFV' }

Returns all of your deposit addresses.

Some currencies use a common deposit address for everyone on the exchange and designate the account for which this payment is destined by including a payment ID field. In these cases, use returnCurrencies to look up the mainAccount for the currency to find the deposit address and use the address returned here in the payment ID field. Note: returnCurrencies will only include a mainAccount property for currencies which require a payment ID.

generateNewAddress

# Note: set the nonce to the current milliseconds. For example: date +%s00000
echo -n "command=generateNewAddress&nonce=154264078495300" | \
openssl sha512 -hmac $API_SECRET

curl -X POST \
     -d "command=generateNewAddress&nonce=154264078495300" \
     -H "Key: 7BCLAZQZ-HKLK9K6U-3MP1RNV9-2LS1L33J" \
     -H "Sign: 2a7849ecf...ae71161c8e9a364e21d9de9" \
     https://poloniex.com/tradingApi

Example output:

{ success: 1,
  response: '0xa6f0dacc33c7f63e137e0106ed71cc20b4b931af' }

Generates a new deposit address for the currency specified by the "currency" POST parameter. Only one address per currency per day may be generated, and a new address may not be generated before the previously-generated one has been used.

Some currencies use a common deposit address for everyone on the exchange and designate the account for which this payment is destined by including a payment ID field. In these cases, use returnCurrencies to look up the mainAccount for the currency to find the deposit address and use the address returned here in the payment ID field. Note: returnCurrencies will only include a mainAccount property for currencies which require a payment ID.

Input Fields

Field Description
currency The currency to use for the deposit address.

Output Field

Field Description
success Denotes the success or failure of the operation.
response The newly created address.

returnDepositsWithdrawals

# Note: set the nonce to the current milliseconds. For example: date +%s00000
echo -n "command=returnDepositsWithdrawals&start=1539954535&end=1540314535&nonce=154264078495300" | \
openssl sha512 -hmac $API_SECRET

curl -X POST \
     -d "command=returnDepositsWithdrawals&start=1539954535&end=1540314535&nonce=154264078495300" \
     -H "Key: 7BCLAZQZ-HKLK9K6U-3MP1RNV9-2LS1L33J" \
     -H "Sign: 2a7849ecf...ae71161c8e9a364e21d9de9" \
     https://poloniex.com/tradingApi

Example output:

{ deposits:
   [ { depositNumber: 7397520,
       currency: 'BTC',
       address: '131rdg5Rzn6BFufnnQaHhVa5ZtRU1J2EZR',
       amount: '0.06830697',
       confirmations: 1,
       txid: '3a4b9b2404f6e6fb556c3e1d46a9752f5e70a93ac1718605c992b80aacd8bd1d',
       timestamp: 1506005439,
       status: 'COMPLETE' },
     { depositNumber: 7397521,
       currency: 'BCH',
       address: '1FhCkdKeMGa621mCpAtFYzeVfUBnHbooLj',
       amount: '10.00000000',
       confirmations: 5,
       txid: 'eb2e0914105b02fbe6e17913d74b4e5950c1ba122eb71afdfc49e2c58b272456',
       timestamp: 1508436102,
       status: 'COMPLETE' },
...
     { depositNumber: 7397519,
       currency: 'BTC',
       address: '131rdg5Rzn6BFufnnQaHhVa5ZtRU1J2EZR',
       amount: '1.49998357',
       confirmations: 1,
       txid: 'b05bdec7430a56b5a5ed34af4a31a54859dda9b7c88a5586bc5d6540cdfbfc7a',
       timestamp: 1537304458,
       status: 'COMPLETE' },
     { depositNumber: 7397518,
       currency: 'ETH',
       address: '0xb7e033598cb94ef5a35349316d3a2e4f95f308da',
       amount: '29.99825341',
       confirmations: 53,
       txid: '0xf7e7eeb44edcad14c0f90a5fffb1cbb4b80e8f9652124a0838f6906ca939ccd2',
       timestamp: 1537305507,
       status: 'COMPLETE' } ],
  withdrawals:
   [ { withdrawalNumber: 7397527,
       currency: 'ETC',
       address: '0x26419a62055af459d2cd69bb7392f5100b75e304',
       amount: '13.19951600',
       fee: '0.01000000',
       timestamp: 1506010932,
       status: 'COMPLETE: 0x423346392f82ac16e8c2604f2a604b7b2382d0e9d8030f673821f8de4b5f5a30',
       ipAddress: '1.2.3.4',
       paymentID: null
     },
     { withdrawalNumber: 7704882,
       currency: 'ETH',
       address: '0x00c90335F92FfcD26C8c915c79d7aB424454B7c7',
       amount: '0.01318826',
       fee: '0.00500000',
       timestamp: 1507908127,
       status: 'COMPLETE: 0xbd4da74e1a0b81c21d056c6f58a5b306de85d21ddf89992693b812bb117eace4',
       ipAddress: '1.2.3.4',
       paymentID: null
     },
...
     { withdrawalNumber: 11967216,
       currency: 'ZRX',
       address: '0x3B2E298b401D1E11cE6ee82b54792CA435CE81eC',
       amount: '1535.58403218',
       fee: '5.00000000',
       timestamp: 1538419390,
       status: 'COMPLETE: 0x52f9e37f29944f20b624df4d7a0ea5a09173e6ea048d49fb05c29585f1d74032',
       ipAddress: '1.2.3.4',
       paymentID: null
     },
     { withdrawalNumber: 12017755,
       currency: 'STR',
       address: 'GACNWS3R4FJUMHLDNMFGUQZD33FBRE4IODAPK5G7AVX7S2VEJRT2XXHQ',
       amount: '7281.99772728',
       fee: '0.00001000',
       timestamp: 1539709673,
       status: 'COMPLETE: 2d27ae26fa9c70d6709e27ac94d4ce2fde19b3986926e9f3bfcf3e2d68354ec5',
       ipAddress: '1.2.3.4',
       paymentID: 'MEMOTEXT'
     } ],
  adjustments:
   [ { currency: 'STR',
       amount: '2.38291827',
       timestamp: 1538419390,
       status: 'COMPLETE',
       category: 'adjustment',
       adjustmentTitle: 'Stellar Inflation',
       adjustmentDesc: 'Your Stellar inflation reward for the week of Jun 11, 2019.',
       adjustmentHelp:
        'https://poloniex.freshdesk.com/support/solutions/articles/1000278072-stellar-inflation-what-is-it-and-other-frequently-asked-questions'
      }
    ]
}

Returns your adjustment, deposit, and withdrawal history within a range window, specified by the "start" and "end" POST parameters, both of which should be given as UNIX timestamps. Note that only adjustments intended to be shown in the UI will be returned

Input Fields

Field Description
start The start date of the range window in UNIX timestamp format.
end The end date of the range window in UNIX timestamp format.

Adjustment Output Fields

Field Description
currency The currency of this adjustment.
amount The total value of this adjustment.
timestamp The timestamp in UNIX timestamp format of when this adjustment was credited.
status The status of the adjustment (only COMPLETE).
category Always adjustment.
adjustmentTitle The type of adjustment.
adjustmentDesc A human-readable description of the adjustment.
adjustmentHelp A help center link to describe the adjustment.

Deposit Output Fields

Field Description
depositNumber The unique Poloniex specific deposit ID for this deposit.
currency The currency of this deposit.
address The address to which this deposit was sent.
amount The total value of the deposit. (network fees will not be included in this)
confirmations The total number of confirmations for this deposit.
txid The blockchain transaction ID of this deposit.
timestamp The timestamp in UNIX timestamp format of when this deposit was first noticed.
status The current status of this deposit. (either PENDING or COMPLETE)

Withdrawal Output Fields

Field Description
withdrawalNumber The unique Poloniex specific withdrawal ID for this withdrawal.
currency The currency of this withdrawal.
address The address to which the withdrawal was made.
amount The total amount withdrawn including the fee.
fee The fee paid to the exchange for this withdrawal.
timestamp The Unix timestamp of the withdrawal.
status The status of the withdrawal (one of PENDING, AWAITING APPROVAL, COMPLETE or COMPLETE ERROR) and optionally the transaction ID of the withdrawal.
ipAddress The IP address which initiated the withdrawal request.
paymentID The paymentID specified for this withdrawal. If none were specified, the field will be null.

returnOpenOrders

# Note: set the nonce to the current milliseconds. For example: date +%s00000
echo -n "command=returnOpenOrders&currencyPair=BTC_ETH&nonce=154264078495300" | \
openssl sha512 -hmac $API_SECRET

curl -X POST \
     -d "command=returnOpenOrders&currencyPair=BTC_ETH&nonce=154264078495300" \
     -H "Key: 7BCLAZQZ-HKLK9K6U-3MP1RNV9-2LS1L33J" \
     -H "Sign: 2a7849ecf...ae71161c8e9a364e21d9de9" \
     https://poloniex.com/tradingApi

Example output for a single market:

[ { orderNumber: '514514894224',
    type: 'buy',
    rate: '0.00001000',
    startingAmount: '100.00000000',
    amount: '100.00000000',
    total: '0.00100000',
    date: '2018-10-23 17:38:53',
    margin: 0 },
  { orderNumber: '514515104014',
    type: 'buy',
    rate: '0.00002000',
    startingAmount: '100.00000000',
    amount: '100.00000000',
    total: '0.00200000',
    date: '2018-10-23 17:39:46',
    margin: 0 },
...
  { orderNumber: '514515150967',
    type: 'buy',
    rate: '0.00003000',
    startingAmount: '100.00000000',
    amount: '100.00000000',
    total: '0.00300000',
    date: '2018-10-23 17:39:55',
    margin: 0 } ]

Example output for all markets:

{ BTC_ARDR: [],
  BTC_BAT: [],
  BTC_BCH: [],
...
  BTC_ETH:
   [ { orderNumber: '514515459658',
       type: 'buy',
       rate: '0.00001000',
       startingAmount: '100.00000000',
       amount: '100.00000000',
       total: '0.00100000',
       date: '2018-10-23 17:41:15',
       margin: 0 },
...
     { orderNumber: '514515389728',
       type: 'buy',
       rate: '0.00003000',
       startingAmount: '100.00000000',
       amount: '100.00000000',
       total: '0.00300000',
       date: '2018-10-23 17:40:55',
       margin: 0 } ],
  BTC_FCT: [],
...
  BTC_SC:
   [ { orderNumber: '26422960740',
       type: 'buy',
       rate: '0.00000001',
       startingAmount: '100000.00000000',
       amount: '100000.00000000',
       total: '0.00100000',
       date: '2018-10-23 17:41:49',
       margin: 0 },
     { orderNumber: '26422963737',
       type: 'buy',
       rate: '0.00000002',
       startingAmount: '100000.00000000',
       amount: '100000.00000000',
       total: '0.00200000',
       date: '2018-10-23 17:42:00',
       margin: 0 } ],
  BTC_SNT: [] }

Returns your open orders for a given market, specified by the "currencyPair" POST parameter, e.g. "BTC_ETH". Set "currencyPair" to "all" to return open orders for all markets.

Input Fields

Field Description
currencyPair The major and minor currency that define this market. (or 'all' for all markets)

Output Fields

Field Description
orderNumber The number uniquely identifying this order.
type Denotes this order as a 'buy' or 'sell'.
rate The price per unit in base units.
startingAmount The size of the original order.
amount The amount left to fill in this order.
total The total cost of this order in base units.
date The UTC date of order creation.
margin Denotes this as a margin order (1) or not. (0)

returnTradeHistory (private)

# Note: set the nonce to the current milliseconds. For example: date +%s00000
echo -n "command=returnTradeHistory&currencyPair=BTC_ETH&nonce=154264078495300" | \
openssl sha512 -hmac $API_SECRET

curl -X POST \
     -d "command=returnTradeHistory&currencyPair=BTC_ETH&nonce=154264078495300" \
     -H "Key: 7BCLAZQZ-HKLK9K6U-3MP1RNV9-2LS1L33J" \
     -H "Sign: 2a7849ecf...ae71161c8e9a364e21d9de9" \
     https://poloniex.com/tradingApi

Example output for a single market:

[ { globalTradeID: 394700861,
    tradeID: 45210354,
    date: '2018-10-23 18:01:58',
    type: 'buy',
    rate: '0.03117266',
    amount: '0.00000652',
    total: '0.00000020',
    orderNumber: '104768235093' },
  { globalTradeID: 394700815,
    tradeID: 45210353,
    date: '2018-10-23 18:01:08',
    type: 'buy',
    rate: '0.03116000',
    amount: '5.93292717',
    total: '0.18487001',
    orderNumber: '104768235092' },
...
  { globalTradeID: 394699047,
    tradeID: 45210256,
    date: '2018-10-23 17:30:32',
    type: 'sell',
    rate: '0.03114533',
    amount: '0.01934000',
    total: '0.00060235',
    orderNumber: '104768235091' },
  { globalTradeID: 394698946,
    tradeID: 45210255,
    date: '2018-10-23 17:28:55',
    type: 'sell',
    rate: '0.03114126',
    amount: '0.00018753',
    total: '0.00000583',
    orderNumber: '104768235090' } ]

Example output for all markets:

{ BTC_BCH:
   [ { globalTradeID: 394131412,
       tradeID: '5455033',
       date: '2018-10-16 18:05:17',
       rate: '0.06935244',
       amount: '1.40308443',
       total: '0.09730732',
       fee: '0.00100000',
       orderNumber: '104768235081',
       type: 'sell',
       category: 'exchange' },
...
     { globalTradeID: 394126818,
       tradeID: '5455007',
       date: '2018-10-16 16:55:34',
       rate: '0.06935244',
       amount: '0.00155709',
       total: '0.00010798',
       fee: '0.00200000',
       orderNumber: '104768179137',
       type: 'sell',
       category: 'exchange' } ],
  BTC_STR:
   [ { globalTradeID: 394127362,
       tradeID: '13536351',
       date: '2018-10-16 17:03:43',
       rate: '0.00003432',
       amount: '3696.05342780',
       total: '0.12684855',
       fee: '0.00200000',
       orderNumber: '96238912841',
       type: 'buy',
       category: 'exchange' },
...
     { globalTradeID: 394127361,
       tradeID: '13536350',
       date: '2018-10-16 17:03:43',
       rate: '0.00003432',
       amount: '3600.53748129',
       total: '0.12357044',
       fee: '0.00200000',
       orderNumber: '96238912841',
       type: 'buy',
       category: 'exchange' } ] }

Returns your trade history for a given market, specified by the "currencyPair" POST parameter. You may specify "all" as the currencyPair to receive your trade history for all markets. You may optionally specify a range via "start" and/or "end" POST parameters, given in UNIX timestamp format; if you do not specify a range, it will be limited to one day. You may optionally limit the number of entries returned using the "limit" parameter, up to a maximum of 10,000. If the "limit" parameter is not specified, no more than 500 entries will be returned.

Input Fields

Field Description
currencyPair The major and minor currency that define this market. (or 'all' for all markets)

Output Fields

Field Description
globalTradeID The globally unique identifier of this trade.
tradeID The identifier of this trade unique only within this trading pair.
date The UTC date at which this trade executed.
rate The rate at which this trade executed.
amount The amount transacted in this trade.
total The total cost in base units of this trade.
fee The fee paid for this trade.
orderNumber The order number to which this trade is associated.
type Denotes a 'buy' or a 'sell' execution.
category Denotes if this was a standard or margin exchange.

returnOrderTrades

# Note: set the nonce to the current milliseconds. For example: date +%s00000
echo -n "command=returnOrderTrades&orderNumber=96238912841&nonce=154264078495300" | \
openssl sha512 -hmac $API_SECRET

curl -X POST \
     -d "command=returnOrderTrades&orderNumber=9623891284&nonce=154264078495300" \
     -H "Key: 7BCLAZQZ-HKLK9K6U-3MP1RNV9-2LS1L33J" \
     -H "Sign: 2a7849ecf...ae71161c8e9a364e21d9de9" \
     https://poloniex.com/tradingApi

Example output:

[ { globalTradeID: 394127362,
    tradeID: 13536351,
    currencyPair: 'BTC_STR',
    type: 'buy',
    rate: '0.00003432',
    amount: '3696.05342780',
    total: '0.12684855',
    fee: '0.00200000',
    date: '2018-10-16 17:03:43' },
  { globalTradeID: 394127361,
    tradeID: 13536350,
    currencyPair: 'BTC_STR',
    type: 'buy',
    rate: '0.00003432',
    amount: '3600.53748129',
    total: '0.12357044',
    fee: '0.00200000',
    date: '2018-10-16 17:03:43' } ]

Returns all trades involving a given order, specified by the "orderNumber" POST parameter. If no trades for the order have occurred or you specify an order that does not belong to you, you will receive an error. See the documentation here for how to use the information from returnOrderTrades and returnOrderStatus to determine various status information about an order.

Input Fields

Field Description
orderNumber The order number whose trades you wish to query.

Output Fields

Field Description
globalTradeID The globally unique identifier of this trade.
tradeID The identifier of this trade unique only within this trading pair.
currencyPair The major and minor currencies which define this market.
type Denotes a 'buy' or a 'sell' execution.
rate The rate at which this trade executed.
amount The amount transacted in this trade.
total The total cost in base units of this trade.
fee The fee paid for this trade.
date The UTC date at which this trade executed.

returnOrderStatus

# Note: set the nonce to the current milliseconds. For example: date +%s00000
echo -n "command=returnOrderStatus&orderNumber=96238912841&nonce=154264078495300" | \
openssl sha512 -hmac $API_SECRET

curl -X POST \
     -d "command=returnOrderStatus&orderNumber=9623891284&nonce=154264078495300" \
     -H "Key: 7BCLAZQZ-HKLK9K6U-3MP1RNV9-2LS1L33J" \
     -H "Sign: 2a7849ecf...ae71161c8e9a364e21d9de9" \
     https://poloniex.com/tradingApi

Example output:

{ result:
   { '6071071':
      { status: 'Open',
        rate: '0.40000000',
        amount: '1.00000000',
        currencyPair: 'BTC_ETH',
        date: '2018-10-17 17:04:50',
        total: '0.40000000',
        type: 'buy',
        startingAmount: '1.00000' } },
  success: 1 }

Returns the status of a given order, specified by the "orderNumber" POST parameter. If the specified orderNumber is not open, or it is not yours, you will receive an error.

Note that returnOrderStatus, in concert with returnOrderTrades, can be used to determine various status information about an order:

Input Fields

Field Description
orderNumber The identifier of the order to return.

Output Field

Field Description
status Designates this order's fill state.
rate The rate in base units of this order.
amount The amount of tokens remaining unfilled in this order.
currencyPair The market to which this order belongs.
date The UTC date this order was created.
total The total value of this order.
type Designates a buy or a sell order.
startingAmount The original order's amount.

buy

# Note: set the nonce to the current milliseconds. For example: date +%s00000
echo -n "command=buy&currencyPair=BTC_ETH&rate=0.01&amount=1&clientOrderId=12345&nonce=154264078495300" | \
openssl sha512 -hmac $API_SECRET

curl -X POST \
     -d "command=buy&currencyPair=BTC_ETH&rate=0.01&amount=1&clientOrderId=12345&nonce=154264078495300" \
     -H "Key: 7BCLAZQZ-HKLK9K6U-3MP1RNV9-2LS1L33J" \
     -H "Sign: 2a7849ecf...ae71161c8e9a364e21d9de9" \
     https://poloniex.com/tradingApi

Example output:

{ orderNumber: '514845991795',
  resultingTrades:
   [ { amount: '3.0',
       date: '2018-10-25 23:03:21',
       rate: '0.0002',
       total: '0.0006',
       tradeID: '251834',
       type: 'buy' } ],
  fee: '0.01000000',
  clientOrderId: '12345'
  currencyPair: 'BTC_ETH' }

Places a limit buy order in a given market. Required POST parameters are "currencyPair", "rate", and "amount". If successful, the method will return the order number.

You may optionally set "fillOrKill", "immediateOrCancel", "postOnly" to 1. A fill-or-kill order will either fill in its entirety or be completely aborted. An immediate-or-cancel order can be partially or completely filled, but any portion of the order that cannot be filled immediately will be canceled rather than left on the order book. A post-only order will only be placed if no portion of it fills immediately; this guarantees you will never pay the taker fee on any part of the order that fills.

Input Fields

Field Description
currencyPair The major and minor currency defining the market where this buy order should be placed.
rate The rate to purchase one major unit for this trade.
amount The total amount of minor units offered in this buy order.
fillOrKill (optional) Set to "1" if this order should either fill in its entirety or be completely aborted.
immediateOrCancel (optional) Set to "1" if this order can be partially or completely filled, but any portion of the order that cannot be filled immediately will be canceled.
postOnly (optional) Set to "1" if you want this buy order to only be placed if no portion of it fills immediately.
clientOrderId (optional) 64-bit Integer value used for tracking order across http responses and "o", "n" & "t" web socket messages. Must be unique across all open orders for each account.

Output Fields

Field Description
orderNumber The identification number of the newly created order.
resultingTrades An array of the trades that were executed, if any, on order placement.
amount The amount of tokens remaining unfilled in this order.
date The UTC date this order was created.
rate The rate in base units of this order.
total The total value of this order.
tradeID The identifier for this trade.
type Designates a buy or a sell order. (always 'buy' in this case)
fee The fee multiplier for this trade.
currencyPair The market to which this order belongs.
clientOrderId (optional) User specified 64-bit integer identifier.

sell

# Note: set the nonce to the current milliseconds. For example: date +%s00000
echo -n "command=sell&currencyPair=BTC_ETH&rate=10.0&amount=1&clientOrderId=12345&nonce=154264078495300" | \
openssl sha512 -hmac $API_SECRET

curl -X POST \
     -d "command=sell&currencyPair=BTC_ETH&rate=10.0&amount=1&clientOrderId=12345&nonce=154264078495300" \
     -H "Key: 7BCLAZQZ-HKLK9K6U-3MP1RNV9-2LS1L33J" \
     -H "Sign: 2a7849ecf...ae71161c8e9a364e21d9de9" \
     https://poloniex.com/tradingApi

Example output:

{ orderNumber: '514845991926',
  resultingTrades:
   [ { amount: '1.0',
       date: '2018-10-25 23:03:21',
       rate: '10.0',
       total: '10.0',
       tradeID: '251869',
       type: 'sell' } ],
  fee: '0.01000000',
  clientOrderId: '12345',
  currencyPair: 'BTC_ETH' }

Places a sell order in a given market. Required POST parameters are "currencyPair", "rate", and "amount". If successful, the method will return the order number.

You may optionally set "fillOrKill", "immediateOrCancel", "postOnly" to 1. A fill-or-kill order will either fill in its entirety or be completely aborted. An immediate-or-cancel order can be partially or completely filled, but any portion of the order that cannot be filled immediately will be canceled rather than left on the order book. A post-only order will only be placed if no portion of it fills immediately; this guarantees you will never pay the taker fee on any part of the order that fills.

Input Fields

Field Description
currencyPair The major and minor currency defining the market where this sell order should be placed.
rate The rate to purchase one major unit for this trade.
amount The total amount of minor units offered in this sell order.
fillOrKill (optional) Set to "1" if this order should either fill in its entirety or be completely aborted.
immediateOrCancel (optional) Set to "1" if this order can be partially or completely filled, but any portion of the order that cannot be filled immediately will be canceled.
postOnly (optional) Set to "1" if you want this sell order to only be placed if no portion of it fills immediately.
clientOrderId (optional) 64-bit Integer value used for tracking order across "o", "n" & "t" web socket messages. Must be unique across all open orders for each account.

Output Fields

Field Description
orderNumber The identification number of the newly created order.
resultingTrades An array of the trades that were executed, if any, on order placement.
amount The amount of tokens remaining unfilled in this order.
date The UTC date this order was created.
rate The rate in base units of this order.
total The total value of this order.
tradeID The identifier for this trade.
type Designates a buy or a sell order. (always 'sell' in this case)
fee The fee multiplier for this trade.
currencyPair The market to which this order belongs.
clientOrderId (optional) User specified 64-bit integer identifier.

cancelOrder

# Note: set the nonce to the current milliseconds. For example: date +%s00000
echo -n "command=cancelOrder&orderNumber=514845991795&nonce=154264078495300" | \
openssl sha512 -hmac $API_SECRET

curl -X POST \
     -d "command=cancelOrder&orderNumber=514845991795&nonce=154264078495300" \
     -H "Key: 7BCLAZQZ-HKLK9K6U-3MP1RNV9-2LS1L33J" \
     -H "Sign: 2a7849ecf...ae71161c8e9a364e21d9de9" \
     https://poloniex.com/tradingApi

Example output:

{ success: 1,
  amount: '50.00000000',
  clientOrderId: '12345',
  message: 'Order #514845991795 canceled.' }

Cancels an order you have placed in a given market. Required POST parameter are "currencyPair" and "orderNumber". If successful, the method will return a success of 1.

Input Fields

Field Description
orderNumber The identity number of the order to be canceled.

Output Fields

Field Description
success A boolean indication of the success or failure of this operation.
amount The remaning unfilled amount that was canceled in this operation.
message A human readable description of the result of the action.
clientOrderId (optional) If clientOrderId exists on the open order it will be returned in the cancelOrder response.

cancelAllOrders

# Note: set the nonce to the current milliseconds. For example: date +%s00000
echo -n "command=cancelAllOrders&nonce=1559587794133" | \
openssl sha512 -hmac $API_SECRET

curl -X POST \
     -d "command=cancelAllOrders&nonce=1559587794133" \
     -H "Key: 7BCLAZQZ-HKLK9K6U-3MP1RNV9-2LS1L33J" \
     -H "Sign: 2f2caf61...a3bc7818ced466e8f" \
     https://poloniex.com/tradingApi

Example output:

{ "success": 1,
  "message": "Orders canceled",
  "orderNumbers": [
    503749,
    888321,
    7315825,
    7316824 ] }

Cancels all open orders in a given market or, if no market is provided, all open orders in all markets. Optional POST parameter is "currencyPair". If successful, the method will return a success of 1 along with a json array of orderNumbers representing the orders that were canceled. Please note that cancelAllOrders can only be called 1 time per 2 minutes.

Input Fields

Field Description
currencyPair (optional) The base and quote currency that define a market.

Output

Field Description
success A boolean indication of the success or failure of this operation.
message A human readable description of the result of the action.
orderNumbers array of orderNumbers representing the orders that were canceled.

moveOrder

# Note: set the nonce to the current milliseconds. For example: date +%s00000
echo -n "command=moveOrder&orderNumber=514851026755&rate=0.00015&clientOrderId=12345&nonce=154264078495300" | \
openssl sha512 -hmac $API_SECRET

curl -X POST \
     -d "command=moveOrder&orderNumber=514851026755&rate=0.00015&nonce=154264078495300" \
     -H "Key: 7BCLAZQZ-HKLK9K6U-3MP1RNV9-2LS1L33J" \
     -H "Sign: 2a7849ecf...ae71161c8e9a364e21d9de9" \
     https://poloniex.com/tradingApi

Example output:

{ success: 1,
  orderNumber: '514851232549',
  clientOrderId: '12345',
  resultingTrades: { BTC_ETH: [] } }

Cancels an order and places a new one of the same type in a single atomic transaction, meaning either both operations will succeed or both will fail. Required POST parameters are "orderNumber" and "rate"; you may optionally specify "amount" if you wish to change the amount of the new order. "postOnly" or "immediateOrCancel" may be specified for exchange orders, but will have no effect on margin orders.

Input Fields

Field Description
orderNumber The identity number of the order to be canceled.
clientOrderId (optional) User specified 64-bit integer identifier to be associated with the new order being placed. Must be unique across all open orders for each account.

Output Fields

Field Description
success A boolean indication of the success or failure of this operation.
amount The remaning unfilled amount that was canceled in this operation.
message A human readable description of the result of the action.
clientOrderId (optional) User specified 64-bit integer identifier associated with the new order placed.

withdraw

# Note: set the nonce to the current milliseconds. For example: date +%s00000
echo -n "command=withdraw&currency=ETH&amount=2&address=0x84a90e21d9d02e30ddcea56d618aa75ba90331ff&nonce=154264078495300" | \
openssl sha512 -hmac $API_SECRET

curl -X POST \
     -d "command=withdraw&currency=ETH&amount=2&address=0x84a90e21d9d02e30ddcea56d618aa75ba90331ff&nonce=154264078495300" \
     -H "Key: 7BCLAZQZ-HKLK9K6U-3MP1RNV9-2LS1L33J" \
     -H "Sign: 2a7849ecf...ae71161c8e9a364e21d9de9" \
     https://poloniex.com/tradingApi

Example output:

{ response: 'Withdrew 2.0 ETH.' }

Immediately places a withdrawal for a given currency, with no email confirmation. In order to use this method, withdrawal privilege must be enabled for your API key. Required POST parameters are "currency", "amount", and "address".

For withdrawals which support payment IDs, (such as XMR) you may optionally specify "paymentId".

For currencies where there are multiple networks to choose from you need to specify the param: currencyToWithdrawAs. For USDT use currencyToWithdrawAs=USDTTRON or USDTETH. The default for USDT is Omni which is used if currencyToWithdrawAs is not specified.

returnFeeInfo

# Note: set the nonce to the current milliseconds. For example: date +%s00000
echo -n "command=returnFeeInfo&nonce=154264078495300" | \
openssl sha512 -hmac $API_SECRET

curl -X POST \
     -d "command=returnFeeInfo&nonce=154264078495300" \
     -H "Key: 7BCLAZQZ-HKLK9K6U-3MP1RNV9-2LS1L33J" \
     -H "Sign: 2a7849ecf...ae71161c8e9a364e21d9de9" \
     https://poloniex.com/tradingApi

Example output:

{ makerFee: '0.00100000',
  takerFee: '0.00200000',
  thirtyDayVolume: '106.08463302',
  nextTier: 500000 }

If you are enrolled in the maker-taker fee schedule, returns your current trading fees and trailing 30-day volume in BTC. This information is updated once every 24 hours.

Output Fields

Field Description
makerFee The fee you pay when your order executes after having not matched when it was initially placed.
takerFee The fee you pay when your order matches an existing offer.
thirtyDayVolume The total trading volume for your account.
nextTier The volume necessary to reach the next fee tier.

returnAvailableAccountBalances

# Note: set the nonce to the current milliseconds. For example: date +%s00000
echo -n "command=returnAvailableAccountBalances&nonce=154264078495300" | \
openssl sha512 -hmac $API_SECRET

curl -X POST \
     -d "command=returnAvailableAccountBalances&nonce=154264078495300" \
     -H "Key: 7BCLAZQZ-HKLK9K6U-3MP1RNV9-2LS1L33J" \
     -H "Sign: 2a7849ecf...ae71161c8e9a364e21d9de9" \
     https://poloniex.com/tradingApi

Example output:

 { exchange:
   { BTC: '0.10000000',
     EOS: '5.18012931',
     ETC: '3.39980734',
     SC: '120.00000000',
     USDC: '23.79999938',
     ZEC: '0.02380926' },
  margin:
   { BTC: '0.50000000' },
  lending:
   { BTC: '0.14804126',
     ETH: '2.69148073',
     LTC: '1.75862721',
     XMR: '5.25780982' } }

Returns your balances sorted by account. You may optionally specify the "account" POST parameter if you wish to fetch only the balances of one account. Please note that balances in your margin account may not be accessible if you have any open margin positions or orders.

Output Fields

Field Description
exchange The assets available to trade in your exchange account.
margin The assets available to trade in your margin account.
lending The assets available to trade in your lending account.

returnTradableBalances

# Note: set the nonce to the current milliseconds. For example: date +%s00000
echo -n "command=returnTradableBalances&nonce=154264078495300" | \
openssl sha512 -hmac $API_SECRET

curl -X POST \
     -d "command=returnTradableBalances&nonce=154264078495300" \
     -H "Key: 7BCLAZQZ-HKLK9K6U-3MP1RNV9-2LS1L33J" \
     -H "Sign: 2a7849ecf...ae71161c8e9a364e21d9de9" \
     https://poloniex.com/tradingApi

Example output:

{ BTC_BTS: { BTC: '1.25000000', BTS: '81930.25407233' },
  BTC_CLAM: { BTC: '1.25000000', CLAM: '4266.69596390' },
  BTC_DASH: { BTC: '1.25000000', DASH: '51.93926104' },
  BTC_DOGE: { BTC: '1.25000000', DOGE: '2155172.41379310' },
  BTC_LTC: { BTC: '1.25000000', LTC: '154.46087826' },
  BTC_MAID: { BTC: '1.25000000', MAID: '38236.28007965' },
  BTC_STR: { BTC: '1.25000000', STR: '34014.47559076' },
  BTC_XMR: { BTC: '1.25000000', XMR: '76.27023112' },
  BTC_XRP: { BTC: '1.25000000', XRP: '17385.96302541' },
  BTC_ETH: { BTC: '1.25000000', ETH: '39.96803109' },
  BTC_FCT: { BTC: '1.25000000', FCT: '1720.79314097' } }

Returns your current tradable balances for each currency in each market for which margin trading is enabled. Please note that these balances may vary continually with market conditions.

transferBalance

# Note: set the nonce to the current milliseconds. For example: date +%s00000
echo -n "command=transferBalance&currency=BTC&amount=0.5&fromAccount=lending&toAccount=exchange&nonce=154264078495300" | \
openssl sha512 -hmac $API_SECRET

curl -X POST \
     -d "command=transferBalance&currency=BTC&amount=0.5&fromAccount=lending&toAccount=exchange&nonce=154264078495300" \
     -H "Key: 7BCLAZQZ-HKLK9K6U-3MP1RNV9-2LS1L33J" \
     -H "Sign: 2a7849ecf...ae71161c8e9a364e21d9de9" \
     https://poloniex.com/tradingApi

Example output:

{ success: 1,
  message: 'Transferred 0.50000000 BTC from lending to exchange account.' }

Transfers funds from one account to another (e.g. from your exchange account to your margin account). Required POST parameters are "currency", "amount", "fromAccount", and "toAccount".

Input Fields

Field Description
currency The currency to transfer.
amount The amount of assets to transfer in this request.
fromAccount The account from which this value should be moved.
toAccount The account to which this value should be moved.

Output Fields

Field Description
success The success or failure message for this transfer.
message A human readable message summarizing this transfer.

returnMarginAccountSummary

# Note: set the nonce to the current milliseconds. For example: date +%s00000
echo -n "command=returnMarginAccountSummary&nonce=154264078495300" | \
openssl sha512 -hmac $API_SECRET

curl -X POST \
     -d "command=returnMarginAccountSummary&nonce=154264078495300" \
     -H "Key: 7BCLAZQZ-HKLK9K6U-3MP1RNV9-2LS1L33J" \
     -H "Sign: 2a7849ecf...ae71161c8e9a364e21d9de9" \
     https://poloniex.com/tradingApi

Example output:

{ totalValue: '0.09999999',
  pl: '0.00000000',
  lendingFees: '0.00000000',
  netValue: '0.09999999',
  totalBorrowedValue: '0.02534580',
  currentMargin: '3.94542646' }

Returns a summary of your entire margin account. This is the same information you will find in the Margin Account section of the (Margin Trading page)[https://poloniex.com/support/aboutMarginTrading/], under the Markets list.

Output Fields

Field Description
totalValue Total margin value in BTC.
pl Unrealized profit and loss in BTC.
lendingFees Unrealized lending fees in BTC.
netValue Net value in BTC.
totalBorrowedValue Total borrowed value in BTC.
currentMargin The current margin ratio.

marginBuy

# Note: set the nonce to the current milliseconds. For example: date +%s00000
echo -n "command=marginBuy&currencyPair=BTC_ETH&rate=0.0035&amount=20&clientOrderId=12345&nonce=154264078495300" | \
openssl sha512 -hmac $API_SECRET

curl -X POST \
     -d "command=marginBuy&currencyPair=BTC_ETH&rate=0.0035&amount=20&clientOrderId=12345&nonce=154264078495300" \
     -H "Key: 7BCLAZQZ-HKLK9K6U-3MP1RNV9-2LS1L33J" \
     -H "Sign: 2a7849ecf...ae71161c8e9a364e21d9de9" \
     https://poloniex.com/tradingApi

Example output:

{ orderNumber: '515007818806',
  resultingTrades: [],
  message: 'Margin order placed.',
  clientOrderId: '12345' }

Places a margin buy order in a given market. Required POST parameters are "currencyPair", "rate", and "amount". You may optionally specify a maximum lending rate using the "lendingRate" parameter. (the default "lendingRate" value is 0.02 which stands for 2% per day) Note that "rate" * "amount" must be > 0.02 when creating or expanding a market. If successful, the method will return the order number and any trades immediately resulting from your order.

Input Fields

Field Description
currencyPair The base and quote currency that define this market.
rate The number of base currency units to purchase one quote currency unit.
lendingRate The interest rate you are willing to accept per day. (default is 0.02 which stands for 2% per day)
amount The amount of currency to buy in minor currency units.
clientOrderId (optional) 64-bit Integer value used for tracking order across http responses as well as "o", "n" & "t" web socket messages. Must be unique across all open orders for each account.

Output Fields

Field Description
orderNumber The newly created order number.
resultingTrades An array of trades immediately filled by this offer, if any.
message A human-readable message summarizing the activity.
clientOrderId (optional) Client specified 64-bit integer identifier.

marginSell

# Note: set the nonce to the current milliseconds. For example: date +%s00000
echo -n "command=marginSell&currencyPair=BTC_ETH&rate=0.0035&amount=20&clientOrderId=12345&nonce=154264078495300" | \
openssl sha512 -hmac $API_SECRET

curl -X POST \
     -d "command=marginSell&currencyPair=BTC_ETH&rate=0.0035&amount=20&clientOrderId=12345&nonce=154264078495300" \
     -H "Key: 7BCLAZQZ-HKLK9K6U-3MP1RNV9-2LS1L33J" \
     -H "Sign: 2a7849ecf...ae71161c8e9a364e21d9de9" \
     https://poloniex.com/tradingApi

Example output:

{ orderNumber: '515007818812',
  resultingTrades: [],
  message: 'Margin order placed.'
  clientOrderId: '12345' }

Places a margin sell order in a given market. Required POST parameters are "currencyPair", "rate", and "amount". You may optionally specify a maximum lending rate using the "lendingRate" parameter. (the default "lendingRate" value is 0.02 which stands for 2% per day) Note that "rate" * "amount" must be > 0.02 when creating or expanding a market. If successful, the method will return the order number and any trades immediately resulting from your order.

Input Fields

Field Description
currencyPair The base and quote currency that define this market.
rate The number of base currency units to purchase one quote currency unit.
lendingRate The interest rate you are willing to accept per day. (default is 0.02 which stands for 2% per day)
amount The amount of currency to sell in minor currency units.
clientOrderId (optional) 64 bit Integer value used for tracking order across http responses as well as "o", "n" & "t" web socket messages. Must be unique across all open orders for each account.

Output Fields

Field Description
orderNumber The newly created order number.
resultingTrades An array of trades immediately filled by this offer, if any.
message A human-readable message summarizing the activity.
clientOrderId (optional) 64 bit Client specified integer identifier.

getMarginPosition

# Note: set the nonce to the current milliseconds. For example: date +%s00000
echo -n "command=getMarginPosition&currencyPair=BTC_ETH&nonce=154264078495300" | \
openssl sha512 -hmac $API_SECRET

curl -X POST \
     -d "command=getMarginPosition&currencyPair=BTC_ETH&nonce=154264078495300" \
     -H "Key: 7BCLAZQZ-HKLK9K6U-3MP1RNV9-2LS1L33J" \
     -H "Sign: 2a7849ecf...ae71161c8e9a364e21d9de9" \
     https://poloniex.com/tradingApi

Example output:

{ amount: '40.94717831',
  total: '-0.09671314',
  basePrice: '0.00236190',
  liquidationPrice: -1,
  pl: '-0.00058655',
  lendingFees: '-0.00000038',
  type: 'long' }

Returns information about your margin position in a given market, specified by the "currencyPair" POST parameter. You may set "currencyPair" to "all" if you wish to fetch all of your margin positions at once. If you have no margin position in the specified market, "type" will be set to "none". "liquidationPrice" is an estimate, and does not necessarily represent the price at which an actual forced liquidation will occur. If you have no liquidation price, the value will be -1.

Input Fields

Field Description
currencyPair The major and minor currency that define this market.

Output Fields

Field Description
amount The net amount of the market's currency you have bought or sold. If your position is short, this value will be negative.
total The total amount of the currency in your position.
basePrice The approximate price at which you would need to close your position in order to break even.
liquidationPrice The estimated highest bid (if your position is long) or lowest ask (if it is short) at which a forced liquidation will occur.
pl Estimated profit or loss you would incur if your position were closed. Includes lending fees already paid.
lendingFees The estimated value of outstanding fees on currently-open loans.
type Denotes the overall position in this market as either "long" (buy heavy) or "short". (sell heavy)

closeMarginPosition

# Note: set the nonce to the current milliseconds. For example: date +%s00000
echo -n "command=closeMarginPosition&currencyPair=BTC_ETH&nonce=154264078495300" | \
openssl sha512 -hmac $API_SECRET

curl -X POST \
     -d "command=closeMarginPosition&currencyPair=BTC_ETH&nonce=154264078495300" \
     -H "Key: 7BCLAZQZ-HKLK9K6U-3MP1RNV9-2LS1L33J" \
     -H "Sign: 2a7849ecf...ae71161c8e9a364e21d9de9" \
     https://poloniex.com/tradingApi

Example output for a market with an open position:

{ success: 1,
  message: 'Successfully closed margin position.',
  resultingTrades:
   { BTC_XMR:
      [ { amount: '7.09215901',
          date: '2015-05-10 22:38:49',
          rate: '0.00235337',
          total: '0.01669047',
          tradeID: '1213346',
          type: 'sell' },
        { amount: '24.00289920',
          date: '2015-05-10 22:38:49',
          rate: '0.00235321',
          total: '0.05648386',
          tradeID: '1213347',
          type: 'sell' } ] } }

Example output for a market with no open position:

{ success: 1,
  message: 'You do not have an open position in this market.',
  resultingTrades: [] }

Closes your margin position in a given market (specified by the "currencyPair" POST parameter) using a market order. This call will also return success if you do not have an open position in the specified market.

Input Fields

Field Description
currencyPair The major and minor currency that define this market.

Output Fields

Field Description
success Denotes whether a success (1) or a failure (0) of this operation.
message A human-readable message summarizing the activity.
resultingTrades An array of any trades that have executed as a result of closing this position.

createLoanOffer

# Note: set the nonce to the current milliseconds. For example: date +%s00000
echo -n "command=createLoanOffer&currency=BTC&amount=0.1&duration=2&autoRenew=0&lendingRate=0.015&nonce=154264078495300" | \
openssl sha512 -hmac $API_SECRET

curl -X POST \
     -d "command=createLoanOffer&currency=BTC&amount=0.1&duration=2&autoRenew=0&lendingRate=0.015&nonce=154264078495300" \
     -H "Key: 7BCLAZQZ-HKLK9K6U-3MP1RNV9-2LS1L33J" \
     -H "Sign: 2a7849ecf...ae71161c8e9a364e21d9de9" \
     https://poloniex.com/tradingApi

Example output for a market with an open position:

{ success: 1,
  message: 'Loan order placed.',
  orderID: 1002013188 }

Creates a loan offer for a given currency. Required POST parameters are "currency", "amount", "duration", "autoRenew" (0 or 1), and "lendingRate".

Input Fields

Field Description
currency Denotes the currency for this loan offer.
amount The total amount of currency offered.
duration The maximum duration of this loan in days. (from 2 to 60, inclusive)
autoRenew Denotes if this offer should be reinstated with the same settings after having been taken.

Output Fields

Field Description
success Denotes whether a success (1) or a failure (0) of this operation.
message A human-readable message summarizing the activity.
orderID The identification number of the newly created loan offer.

cancelLoanOffer

# Note: set the nonce to the current milliseconds. For example: date +%s00000
echo -n "command=cancelLoanOffer&orderNumber=1002013188&nonce=154264078495300" | \
openssl sha512 -hmac $API_SECRET

curl -X POST \
     -d "command=cancelLoanOffer&orderNumber=1002013188&nonce=154264078495300" \
     -H "Key: 7BCLAZQZ-HKLK9K6U-3MP1RNV9-2LS1L33J" \
     -H "Sign: 2a7849ecf...ae71161c8e9a364e21d9de9" \
     https://poloniex.com/tradingApi

Example output for a market with an open position:

{ success: 1,
  message: 'Loan offer canceled.',
  amount: '0.10000000' }

Cancels a loan offer specified by the "orderNumber" POST parameter.

Input Fields

Field Description
orderNumber The identification number of the offer to be canceled.

Output Fields

Field Description
success Denotes whether a success (1) or a failure (0) of this operation.
message A human-readable message summarizing the activity.
amount The amount of the offer that was canceled.

returnOpenLoanOffers

# Note: set the nonce to the current milliseconds. For example: date +%s00000
echo -n "command=returnOpenLoanOffers&nonce=154264078495300" | \
openssl sha512 -hmac $API_SECRET

curl -X POST \
     -d "command=returnOpenLoanOffers&nonce=154264078495300" \
     -H "Key: 7BCLAZQZ-HKLK9K6U-3MP1RNV9-2LS1L33J" \
     -H "Sign: 2a7849ecf...ae71161c8e9a364e21d9de9" \
     https://poloniex.com/tradingApi

Example output for a market with an open position:

{ BTC:
   [ { id: 1002015083,
       rate: '0.01500000',
       amount: '0.10000000',
       duration: 2,
       autoRenew: 0,
       date: '2018-10-26 20:26:46' } ] }

Returns your open loan offers for each currency.

Output Fields

Field Description
id The identification number of this offer.
rate The rate in percent per day to charge for this loan.
amount The total amount offered for this loan.
duration The maximum number of days offered for this loan.
autoRenew Denotes if this offer will be reinstated with the same settings after having been taken.
date The UTC date at which this loan offer was created.

returnActiveLoans

# Note: set the nonce to the current milliseconds. For example: date +%s00000
echo -n "command=returnActiveLoans&nonce=154264078495300" | \
openssl sha512 -hmac $API_SECRET

curl -X POST \
     -d "command=returnActiveLoans&nonce=154264078495300" \
     -H "Key: 7BCLAZQZ-HKLK9K6U-3MP1RNV9-2LS1L33J" \
     -H "Sign: 2a7849ecf...ae71161c8e9a364e21d9de9" \
     https://poloniex.com/tradingApi

Example output:

{ provided:
   [ { id: 75073,
       currency: 'LTC',
       rate: '0.00020000',
       amount: '0.72234880',
       range: 2,
       autoRenew: 0,
       date: '2018-05-10 23:45:05',
       fees: '0.00006000' },
     { id: 74961,
       currency: 'LTC',
       rate: '0.00002000',
       amount: '4.43860711',
       range: 2,
       autoRenew: 0,
       date: '2018-05-10 23:45:05',
       fees: '0.00006000' } ],
  used:
   [ { id: 75238,
       currency: 'BTC',
       rate: '0.00020000',
       amount: '0.04843834',
       range: 2,
       date: '2018-05-10 23:51:12',
       fees: '-0.00000001' } ] }

Returns your active loans for each currency.

Output Field Description
provided An array of the loans currently provided. (see below for subfield descriptions)
used An array of the loans currently being used. (see below for subfield descriptions)
Subfield Description
id The identifier number of the loan.
currency The currency of the loan.
rate The rate in percentage per day.
amount The size of this loan.
range The duration of the loan in number of days.
autoRenew Specifies if the loan will be automatically renewed on close.
date The UTC date of the start of the loan.
fees The fees paid for this loan so far.

returnLendingHistory

# Note: set the nonce to the current milliseconds. For example: date +%s00000
echo -n "command=returnLendingHistory&start=1483228800&end=1483315200&limit=100&nonce=154264078495300" | \
openssl sha512 -hmac $API_SECRET

curl -X POST \
     -d "command=returnLendingHistory&start=1483228800&end=1483315200&limit=100&nonce=154264078495300" \
     -H "Key: 7BCLAZQZ-HKLK9K6U-3MP1RNV9-2LS1L33J" \
     -H "Sign: 2a7849ecf...ae71161c8e9a364e21d9de9" \
     https://poloniex.com/tradingApi

Example output:

[ { id: 246300115,
    currency: 'BTC',
    rate: '0.00013890',
    amount: '0.33714830',
    duration: '0.00090000',
    interest: '0.00000005',
    fee: '0.00000000',
    earned: '0.00000005',
    open: '2017-01-01 23:41:37',
    close: '2017-01-01 23:42:51' },
  { id: 246294775,
    currency: 'BTC',
    rate: '0.00013890',
    amount: '0.03764586',
    duration: '0.00150000',
    interest: '0.00000001',
    fee: '0.00000000',
    earned: '0.00000001',
    open: '2017-01-01 23:36:32',
    close: '2017-01-01 23:38:45' },
...
  { id: 245670087,
    currency: 'BTC',
    rate: '0.00014000',
    amount: '0.10038365',
    duration: '0.00010000',
    interest: '0.00000001',
    fee: '0.00000000',
    earned: '0.00000001',
    open: '2017-01-01 03:18:25',
    close: '2017-01-01 03:18:32' },
  { id: 245645491,
    currency: 'XMR',
    rate: '0.00002191',
    amount: '0.00006579',
    duration: '0.00560000',
    interest: '0.00000001',
    fee: '0.00000000',
    earned: '0.00000001',
    open: '2017-01-01 02:17:09',
    close: '2017-01-01 02:25:10' } ]

Returns your lending history within a time range specified by the "start" and "end" POST parameters as UNIX timestamps. "limit" may also be specified to limit the number of rows returned.

Input Field Description
start The date in Unix timestamp format of the start of the window.
end The date in Unix timestamp format of the end of the window.
Output Field Description
id The loan identifier number.
currency The currency of the loan.
rate The loan's rate in percentage points per day.
amount The total amount loaned.
duration The duration in days of the loan.
interest The interest earned in the loan's currency.
fee The fee paid in the loan's currency.
earned The earnings in the loan's currency after subtracting the fee.
open The UTC date the loan started. (when the loan offer was taken)
close The UTC date the loan completed. (when the loan was closed)

toggleAutoRenew

# Note: set the nonce to the current milliseconds. For example: date +%s00000
echo -n "command=toggleAutoRenew&orderNumber=1002013188&nonce=154264078495300" | \
openssl sha512 -hmac $API_SECRET

curl -X POST \
     -d "command=toggleAutoRenew&orderNumber=1002013188&nonce=154264078495300" \
     -H "Key: 7BCLAZQZ-HKLK9K6U-3MP1RNV9-2LS1L33J" \
     -H "Sign: 2a7849ecf...ae71161c8e9a364e21d9de9" \
     https://poloniex.com/tradingApi

Example output:

{ success: 1, message: 0 }

Toggles the autoRenew setting on an active loan, specified by the "orderNumber" POST parameter. If successful, "message" will indicate the new autoRenew setting.

Input Field Description
orderNumber The identifier of the order you want to toggle.
Output Field Description
success A "1" indicates a successful toggle.
message On success, the new value of the auto renew flag.

Websocket API

# Install your favorite websocket command line tool.
# Our examples use https://github.com/hashrocket/ws
# which can be installed with this command:

go get -u github.com/hashrocket/ws

Websockets can be read by any standard websocket library. Data is organized into channels to which an API client may subscribe.

Requests and Responses

There are two type of requests supported; subscribe and unsubscribe. The requests are for a specific channel. For non-book requests, the first response is always an acknowledgement of the request. All channel updates are of the following format

[<channel>, <sequence id>, <update data...>]

<sequence id> is a number increasing by one with each update and is unique within its channel. The sequence-id is always null for non-book channels.

Subscribing and Unsubscribing

# Public channels
ws wss://api2.poloniex.com
> {"command": "subscribe", "channel": 1002}

# Private channels
# Note: set the nonce to the current milliseconds. For example: date +%s00000
echo -n "nonce=154264078495300" | openssl sha512 -hmac $API_SECRET
ws wss://api2.poloniex.com
> {"command": "subscribe", "channel": 1000, "sign": "e832d65f...8a522df8", "key": "7BCLAZQZ-HKLK9K6U-3MP1RNV9-2LS1L33J", "payload": "nonce=154264078495300"}

To receive updates from a channel you must subscribe to it. To subscribe to a public channel (all except the account notifications channel), determine its channel ID (provided with the description of each channel, and summarized here), send a JSON message in the following format:

{ "command": "subscribe", "channel": "<channel id>" }

To subscribe to a private channel, the parameters described in the authentication section are required in the subscription message. Just like the trading API, an integer nonce must be chosen that is greater than the previous nonce used; for this purpose the current epoch time in milliseconds is a reasonable choice. As each API key has its own nonce tracking, using a different key for each client process can greatly simplify nonce management. If the chosen nonce is 1234, provide a "payload" parameter consisting of nonce=1234, a "key" parameter with your API key, and a "sign" parameter with the HMAC-SHA512 signature of the payload signed by your secret:

{ "command": "subscribe", "channel": "<channel id>", "key": "<your API key>", "payload": "nonce=<epoch ms>", "sign": "<hmac_sha512(secret).update("nonce=<epoch ms>").hexdigest()>" }

In all cases the first message will be an acknowledgement of the subscription:

[<channel id>, 1]

To unsubscribe, send an unsubscribe message with the channel ID:

{ "command": "unsubscribe", "channel": <channel id> }

Channel Descriptions

The following <channel ids> are supported:

Channel Type Name
1000 Private Account Notifications (Beta)
1002 Public Ticker Data
1003 Public 24 Hour Exchange Volume
1010 Public Heartbeat
<currency pair> Public Price Aggregated Book

Additionally, as described below, each market has its own aggregated book channel.

Account Notifications (Beta)

# Note: set the nonce to the current milliseconds. For example: date +%s00000
echo -n "nonce=154264078495300" | openssl sha512 -hmac $API_SECRET
ws wss://api2.poloniex.com
> {"command": "subscribe", "channel": 1000, "sign": "e832d65f...8a522df8", "key": "7BCLAZQZ-HKLK9K6U-3MP1RNV9-2LS1L33J", "payload": "nonce=154264078495300"}
< [1010]
< [1000,"",[["n",225,807230187,0,"1000.00000000","0.10000000","2018-11-07 16:42:42"],["b",267,"e","-0.10000000"]]]
< [1010]
< [1000,"",[["o",807230187,"0.00000000", "f"],["b",267,"e","0.10000000"]]]

The account notifications channel (id 1000) provides real-time updates of trade and balance changes on your account. You can (and should) use it to track your account's trading activity (instead of relying on repeated calls to the trading API). It is an authenticated websocket endpoint, so subscribing to it requires the parameters discussed in the subscribing section:

{ "command": "subscribe", "channel": "1000", "key": "<your API key>", "payload": "nonce=<epoch ms>", "sign": "<hmac_sha512(secret).update("nonce=<epoch ms>").hexdigest()>" }

The first message is acknowledgement of the subscription.

[1000, 1]

Subsequent messages represent updates to your account. In general, a message consists of a combination of updates of different types. Each update is an array of data, where the first element is a character denoting the type of the update, and subsequent elements are various parameters:

[ 1000, null, [ ["b", DATA_1, DATA_2, DATA_3], ["n", DATA_1, DATA_2, DATA_3, DATA_4, DATA_5, DATA_6] ] ]

A given message may contain multiple updates, multiple types of updates, and multiple updates of the same type. There is no ordering guarantee of update types within a single message. Effectively, each message is a record of all of the changes to your account induced by a single action. There are four types of updates, as described below:

Order type Amount Interpretation
f > 0.00000000 partially filled order
f = 0.00000000 completely filled order
c > 0.00000000 partially cancelled order
c = 0.00000000 completely cancelled order
s > 0.00000000 partially filled self-trade
s = 0.00000000 completely filled self-trade

Thus, an o update representing a partially filled limit order with a new amount of 1.5 and a clientOrderId of 12345 will look like: ["o", 6083059, "1.50000000", "f", "12345"].

As mentioned above, a single logical action may cause a message with multiple updates. For instance, placing a limit order to buy ETH using BTC, which is immediately partially fulfilled, will cause an update with 5 parts: a p message with the newly placed pending order for the BTC_ETH market, a b update with a positive ETH balance (the ETH that was immediately bought), a b update with a negative BTC balance update (the BTC removed from the user's funds to pay for the ETH), a t update representing the trade in which the order was partially fulfilled and then the remaining amount becomes open, and an n update with the new limit order for the rest of the requested ETH.

Note that many actions do not have explicit notification types, but rather are represented by the underlying trade and balance changes:

There are currently no notifications of transfers between wallets initiated via the transfers page or the transferBalance trading API call.

Ticker Data

ws wss://api2.poloniex.com
> {"command": "subscribe", "channel": 1002}
< [1002,1]
< [1002,null,[149,"219.42870877","219.85995997","219.00000016","0.01830508","1617829.38863451","7334.31837942",0,"224.44803729","214.87902002"]]
< [1002,null,[150,"0.00000098","0.00000099","0.00000098","0.01030927","23.24910068","23685243.40788439",0,"0.00000100","0.00000096"]]
< [1002,null,[162,"0.00627869","0.00630521","0.00627608","0.01665689","17.99294312","2849.74975814",0,"0.00640264","0.00615185"]]

Subscribe to ticker updates for all currency pairs.

Subscription example

{ "command": "subscribe", "channel": 1002 }

The first message is acknowledgement of the subscription.

[<id>, 1]

Subsequent messages are ticker updates.

[ <id>, null, [ <currency pair id>, "<last trade price>", "<lowest ask>", "<highest bid>", "<percent change in last 24 hours>", "<base currency volume in last 24 hours>", "<quote currency volume in last 24 hours>", <is frozen>, "<highest trade price in last 24 hours>", "<lowest trade price in last 24 hours>" ], ... ]

For example:

[ 1002, null, [ 149, "382.98901522", "381.99755898", "379.41296309", "-0.04312950", "14969820.94951828", "38859.58435407", 0, "412.25844455", "364.56122072" ] ]

The <currency pair id> is from the currency pair ID list.

24 Hour Exchange Volume

ws wss://api2.poloniex.com
> {"command": "subscribe", "channel": 1003}
< [1003,null,["2018-11-07 16:26",5804,{"BTC":"3418.409","ETH":"2645.921","USDT":"10832502.689","USDC":"1578020.908"}]]

Subscribe to 24 hour exchange volume statistics. Updates are sent every 20 seconds.

Subscription example for exchange volume

{ "command": "subscribe", "channel": 1003 }

The first response is acknowledgement of subscription

[<channel id>, 1]

For example:

[1003, 1]

Subsequent responses are exchange volume update sent every 20 seconds. Base currencies are BTC, ETH, USDT and USDC.

[ <channel id>, null, [ "<time as YYYY-MM-DD HH:SS>", "<number of users online>", { "<base currency>": "<24 hours volume>", ... } ] ]

For example

[ 1003, null, [ "2018-09-30 21:33", 8592, { "BTC": "6482.518", "ETH": "1315.332", "USDT": "42935638.731", "USDC": "76034823.390" } ] ]

Heartbeats

# Heartbeats (1010) will arrive automatically - you can see them simply by connecting
ws wss://api2.poloniex.com
< [1010]
< [1010]
< [1010]

When no messages have been sent out for one second, the server will send a heartbeat message as follows. Absence of heartbeats indicates a protocol or networking issue and the client application is expected to close the socket and try again.

[1010]

Price Aggregated Book

ws wss://api2.poloniex.com
> {"command": "subscribe", "channel": "BTC_ETH"}
< [148,599758718,[["i",{"currencyPair":"BTC_ETH","orderBook":[{"0.03342499":"0.98174196","0.03343000":"45.80780000", ... "0.00000001":"1462262.00000000"}]}]]]
< [148,599758719,[["o",1,"0.03315496","0.00000000"],["o",1,"0.03315498","99.33100000"]]]
< [148,599758720,[["o",0,"0.03383499","0.00000000"]]]
< [148,599758721,[["o",0,"0.03342499","0.24289338"]]]

Example output:

  { currencyPair: 'BTC_ETH',
    orderBook:
     [ { '0.03119500': '8.87619723',
         '0.03120486': '2.15539849',
         '0.03120500': '50.78890000',
...
         '3777.70000000': '0.00100000',
         '4999.00000000': '0.05000000',
         '5000.00000000': '0.20000000' },
       { '0.03118500': '50.78940000',
         '0.03117855': '10.55121501',
         '0.03117841': '6.20027213',
...
         '0.00000003': '20000.00000000',
         '0.00000002': '670207.00000000',
         '0.00000001': '1462262.00000000' } ] } ]

Subscribe to price aggregated depth of book by currency pair. Response includes an initial book snapshot, book modifications, and trades. Book modification updates with 0 quantity should be treated as removal of the price level. Note that the updates are price aggregated and do not contain individual orders.

Subscription example for BTC_BTS pair (id is 14). You can either subscribe using the currency pair ID or name. Currency pair IDs are listed in the currency pair ID list.

{ "command":"subscribe", "channel": 14 }

Or

{ "command": "subscribe", "channel": "BTC_BTS" }

The first response is the initial dump of the book. NOTE: An "i" message can occur after the initial subscription under certain circumstances. When this occurs the client is required to reset the state of the price aggregated book.

[ <channel id>, <sequence number>, [ [ "i", { "currencyPair": "<currency pair name>", "orderBook": [ { "<lowest ask price>": "<lowest ask size>", "<next ask price>": "<next ask size>", ... }, { "<highest bid price>": "<highest bid size>", "<next bid price>": "<next bid size>", ... } ] } ] ] ]

For example:

[ 14, 8767, [ [ "i", { "currencyPair": "BTC_BTS", "orderBook": [ { "0.00001853": "2537.5637", "0.00001854": "1567238.172367" }, { "0.00001841": "3645.3647", "0.00001840": "1637.3647" } ] } ] ] ]

Subsequent responses are updates to the book and trades

[ <channel id>, <sequence number>, [ ["o", <1 for bid 0 for ask>, "<price>", "<size>"], ["o", <1 for bid 0 for ask>, "<price>", "<size>"], ["t", "<trade id>", <1 for buy 0 for sell>, "<price>", "<size>", <timestamp>] ] ... ]

For example

[ 14, 8768, [ ["o", 1, "0.00001823", "5534.6474"], ["o", 0, "0.00001824", "6575.464"], ["t", "42706057", 1, "0.05567134", "0.00181421", 1522877119] ] ]

Reference

Currencies

This is a list of currency IDs. They are used in b messages in the account notifications websockets channel, and can also be retrieved using the returnCurrencies REST call.

ID Currency
1 1CR
2 ABY
3 AC
4 ACH
5 ADN
6 AEON
7 AERO
8 AIR
275 AMP
9 APH
258 ARCH
285 ARDR
313 ATOM
10 AUR
11 AXIS
12 BALLS
13 BANK
302 BAT
14 BBL
15 BBR
16 BCC
292 BCH
308 BCHABC
309 BCHSV
17 BCN
269 BCY
18 BDC
19 BDG
20 BELA
273 BITCNY
21 BITS
272 BITUSD
22 BLK
23 BLOCK
24 BLU
25 BNS
305 BNT
26 BONES
27 BOST
28 BTC
29 BTCD
30 BTCS
31 BTM
32 BTS
33 BURN
34 BURST
35 C2
36 CACH
37 CAI
38 CC
39 CCN
40 CGA
41 CHA
42 CINNI
43 CLAM
44 CNL
45 CNMT
46 CNOTE
47 COMM
48 CON
49 CORG
50 CRYPT
51 CURE
294 CVC
52 CYC
279 DAO
60 DASH
277 DCR
53 DGB
54 DICE
55 DIEM
56 DIME
57 DIS
58 DNS
59 DOGE
61 DRKC
62 DRM
63 DSH
64 DVK
65 EAC
66 EBT
67 ECC
68 EFL
69 EMC2
70 EMO
71 ENC
298 EOS
283 ETC
267 ETH
72 eTOK
73 EXE
270 EXP
74 FAC
75 FCN
271 FCT
76 FIBRE
77 FLAP
78 FLDC
254 FLO
79 FLT
307 FOAM
80 FOX
81 FRAC
82 FRK
83 FRQ
84 FVZ
85 FZ
86 FZN
93 GAME
87 GAP
296 GAS
88 GDN
89 GEMZ
90 GEO
91 GIAR
92 GLB
94 GML
291 GNO
95 GNS
290 GNT
96 GOLD
97 GPC
98 GPUC
261 GRC
99 GRCX
314 GRIN
100 GRS
101 GUE
102 H2O
103 HIRO
104 HOT
105 HUC
260 HUGE
106 HVC
107 HYP
108 HZ
109 IFC
265 INDEX
263 IOC
110 ITC
111 IXC
112 JLH
113 JPC
114 JUG
115 KDC
116 KEY
301 KNC
280 LBC
117 LC
118 LCL
119 LEAF
120 LGC
121 LOL
303 LOOM
122 LOVE
312 LPT
123 LQD
278 LSK
124 LTBC
125 LTC
126 LTCX
127 MAID
306 MANA
128 MAST
129 MAX
130 MCN
131 MEC
132 METH
133 MIL
134 MIN
135 MINT
136 MMC
137 MMNXT
138 MMXIV
139 MNTA
140 MON
141 MRC
142 MRS
144 MTS
145 MUN
146 MYR
147 MZC
148 N5X
149 NAS
150 NAUT
151 NAV
152 NBT
153 NEOS
154 NL
155 NMC
310 NMR
156 NOBL
157 NOTE
158 NOXT
159 NRS
160 NSR
161 NTX
288 NXC
162 NXT
163 NXTI
295 OMG
143 OMNI
164 OPAL
165 PAND
289 PASC
166 PAWN
167 PIGGY
168 PINK
169 PLX
170 PMC
311 POLY
171 POT
172 PPC
173 PRC
174 PRT
175 PTS
176 Q2C
177 QBK
178 QCN
179 QORA
180 QTL
304 QTUM
274 RADS
181 RBY
182 RDD
284 REP
183 RIC
184 RZR
282 SBD
268 SC
185 SDC
186 SHIBE
187 SHOPX
188 SILK
189 SJCX
190 SLR
191 SMC
300 SNT
192 SOC
193 SPA
194 SQL
195 SRCC
196 SRG
197 SSD
281 STEEM
297 STORJ
198 STR
287 STRAT
199 SUM
200 SUN
201 SWARM
202 SXC
203 SYNC
204 SYS
205 TAC
206 TOR
207 TRUST
208 TWE
209 UIS
210 ULTC
211 UNITY
212 URO
299 USDC
213 USDE
214 USDT
215 UTC
216 UTIL
217 UVC
218 VIA
219 VOOT
276 VOX
220 VRC
221 VTC
222 WC
223 WDC
224 WIKI
225 WOLF
226 X13
227 XAI
228 XAP
229 XBC
230 XC
231 XCH
232 XCN
233 XCP
234 XCR
235 XDN
236 XDP
256 XEM
237 XHC
238 XLB
239 XMG
240 XMR
241 XPB
242 XPM
243 XRP
244 XSI
245 XST
246 XSV
247 XUSD
253 XVC
248 XXC
249 YACC
250 YANG
251 YC
252 YIN
286 ZEC
293 ZRX

Currency Pair IDs

This is a list of IDs for currency pairs. They serve as the channel IDs for price aggregated books, and are used in returned data from a few other websocket channels as well.

Id Currency Pair
177 BTC_ARDR
253 BTC_ATOM
210 BTC_BAT
189 BTC_BCH
236 BTC_BCHABC
238 BTC_BCHSV
7 BTC_BCN
232 BTC_BNT
14 BTC_BTS
15 BTC_BURST
194 BTC_CVC
24 BTC_DASH
162 BTC_DCR
25 BTC_DGB
27 BTC_DOGE
201 BTC_EOS
171 BTC_ETC
148 BTC_ETH
155 BTC_FCT
246 BTC_FOAM
198 BTC_GAS
185 BTC_GNT
251 BTC_GRIN
43 BTC_HUC
207 BTC_KNC
213 BTC_LOOM
250 BTC_LPT
163 BTC_LSK
50 BTC_LTC
51 BTC_MAID
229 BTC_MANA
64 BTC_NMC
248 BTC_NMR
69 BTC_NXT
196 BTC_OMG
58 BTC_OMNI
249 BTC_POLY
75 BTC_PPC
221 BTC_QTUM
174 BTC_REP
170 BTC_SBD
150 BTC_SC
204 BTC_SNT
200 BTC_STORJ
89 BTC_STR
182 BTC_STRAT
92 BTC_SYS
97 BTC_VIA
100 BTC_VTC
108 BTC_XCP
112 BTC_XEM
114 BTC_XMR
116 BTC_XPM
117 BTC_XRP
178 BTC_ZEC
192 BTC_ZRX
211 ETH_BAT
190 ETH_BCH
202 ETH_EOS
172 ETH_ETC
176 ETH_REP
179 ETH_ZEC
193 ETH_ZRX
254 USDC_ATOM
235 USDC_BCH
237 USDC_BCHABC
239 USDC_BCHSV
224 USDC_BTC
243 USDC_DOGE
225 USDC_ETH
252 USDC_GRIN
244 USDC_LTC
242 USDC_STR
226 USDC_USDT
241 USDC_XMR
240 USDC_XRP
245 USDC_ZEC
256 USDC_DASH
257 USDC_EOS
258 USDC_ETC
255 USDT_ATOM
212 USDT_BAT
191 USDT_BCH
121 USDT_BTC
122 USDT_DASH
216 USDT_DOGE
203 USDT_EOS
173 USDT_ETC
149 USDT_ETH
217 USDT_GNT
218 USDT_LSK
123 USDT_LTC
231 USDT_MANA
124 USDT_NXT
223 USDT_QTUM
175 USDT_REP
219 USDT_SC
125 USDT_STR
126 USDT_XMR
127 USDT_XRP
180 USDT_ZEC
220 USDT_ZRX
259 USDT_BCHSV
260 USDT_BCHABC
261 USDT_GRIN
262 USDT_DGB

Changelog

Recent changes and additions to the Poloniex API.

2019-10-15 Currency delistings

Delisting Pascal (PASC), Steem (STEEM), Navcoin (NAV), GameCredits (GAME), LBRY Credits (LBC), and Clams (CLAM).

2019-08-20 Updates to clientOrderId documentation

Fixed newly introduced grammar issues for clientOrderID docs

2019-08-16 XMR base delisting

XMR as a base was delisted, along with other pairs. See tweet for details - https://twitter.com/Poloniex/status/1162061407858417664

2019-08-06 "k" and "p" account notifications

Introducing "k" (killed) and "p" (pending order) channel 1000 websocket account notifications

2019-07-29 Updates to clientOrderId documentation

State clientOrderId is 64 bit integer, and when live, must be unique per account

2019-07-24 Add clientOrderId to private http methods and websocket messages

Some endpoints now support using a client specified integer identifier which will be returned in http responses and "o", "t", "n" websocket messages.

2019-07-12 Newly listed USDC/T market IDs

Add recently listed market IDs to currency pair IDs list

2019-06-26 Add currencyToWithdrawAs to withdraw

Include the currencyToWithdrawAs parameter to the withdrawal API call (used to withdraw USDTTRON).

2019-06-13 Add adjustments to returnDepositWithdrawals

Include special adjustments (e.g. Stellar inflation credits) as part of the returnDepositWithdrawals response.

2019-06-12 Update returnTradeHistory response to reflect new max

The max number of trades that can be fetched in a single call has been reduced to 1,000.

2019-06-12 Additional fields to channel 1000 o message

Channel 1000 o message has been appended to include the orderType field at the end of the response.

2019-06-04 cancelAllOrders trading method added

This new API method allows users to cancel all open orders or all open orders by currencyPair.

2019-05-09 Additional fields to channel 1000 t message

Channel 1000 t message has been appended to include the total fee and date at the end of the response respectively.

2019-05-08 Additional fields to buy and sell response

The buy and sell response will now include currencyPair and fee multiplier.

2019-04-04 Additional fields to returnDepositsWithdrawals response.

Document inclusion of new depositNumber field for deposits and paymentID field for withdrawals in returnDepositsWithdrawals response.

2019-03-29 TLS 1.2 or greater required.

As of April 15, 2019, TLS version 1.2 or greater is required.

2019-03-28 Add minimize latency instructions.

Instructions on how to minimize latency have been added to the Getting Started section.

2019-03-22 Margin parameters clarified.

In both "marginBuy" and "marginSell", the "rate" parameter definition has been fixed. Additionally, the optional "lendingRate" parameter has been defined and a note was added about the default value and minimum setting.

2018-12-27 API documentation overhaul

Refreshed look & feel and adds example code via the shell.

2018-09-25 Order status trading method added

Returns the status of a given order.

2018-09-16 Account notification channel added

The account notifications channel provides real-time updates of trade and balance changes on your account.