NAV
API Documentation
python javascript csharp
English 中文

概览

Welcome to the FTX US API documentation. We offer complete REST, Websocket, and FIX APIs to suit your algorithmic trading needs.

REST API

基于 HTTP 的 API,具有完整的交易和资产管理功能,包括公共委托簿和交易数据以及私人账户数据和下单管理。

REST 端点网址:https://ftx.us/api

使用 JSON 发起请求和回复。

身份验证

import time
import hmac
from requests import Request

ts = int(time.time() * 1000)
request = Request('GET', '<api_endpoint>')
prepared = request.prepare()
signature_payload = f'{ts}{prepared.method}{prepared.path_url}'.encode()
signature = hmac.new('YOUR_API_SECRET'.encode(), signature_payload, 'sha256').hexdigest()

request.headers[f'FTXUS-KEY'] = 'YOUR_API_KEY'
request.headers[f'FTXUS-SIGN'] = signature
request.headers[f'FTXUS-TS'] = str(ts)

# Only include line if you want to access a subaccount. Remember to URI-encode the subaccount name if it contains special characters!
# request.headers[f'FTXUS-SUBACCOUNT'] = 'my_subaccount_nickname'
var method = HttpMethod.Get
var endpoint = $"/api/account";
var request = new HttpRequestMessage(method, endpoint);
var _nonce = (DateTime.UtcNow - start).TotalMilliseconds;

var hashMaker = new HMACSHA256(Encoding.UTF8.GetBytes(""YOUR_API_SECRET""));
var signaturePayload = $"{_nonce}{method.ToString().ToUpper()}{endpoint}";
var hash = hashMaker.ComputeHash(Encoding.UTF8.GetBytes(signaturePayload));
var hashString = BitConverter.ToString(hash).Replace("-", string.Empty);
var signature = hashString.ToLower();

request.Headers.Add("FTXUS-KEY", "YOUR_API_KEY");
request.Headers.Add("FTXUS-SIGN", signature);
request.Headers.Add("FTXUS-TS", _nonce.ToString());

For authenticated requests, the following headers should be sent with the request:

费率限制

Hitting our rate limits will result in HTTP 429 errors. Non-order placement requests do not count towards rate limits. Rate limits are tiered by account trading volumes. For details, please see this post here. Note that limits in the linked post are at the account level

Pagination

Generalized Request

GET {endpoint}?start_time=1559881511&end_time=1559881711

FTX supports pagination on most REST API endpoints. Pagination allows you to specify the time range of data to be returned, which also enables you to retrieve more results than are returned by default. You can find sample Python code which demonstrates pagination using the start_time and end_time parameters here

姓名 类型 价值 描述
start_time number 1559881511 optional; filter starting time in seconds
end_time number 1559881711 optional; filter ending time in seconds

子账户

To specify a subaccount, include its URI-encoded nickname in the header FTXUS-SUBACCOUNT with the request.

获取所有子帐户

请求

GET /subaccounts

回复

{
  "success": true,
  "result": [
    {
      "nickname": "sub1",
      "deletable": true,
      "editable": true,
    }
  ]
}

需要验证身份。

回复格式

姓名 类型 价值 描述
nickname string sub1 subaccount name
deletable boolean true 子帐户是否可以删除
editable boolean true 子帐户的昵称是否可以更改

创建子帐户

请求

POST /subaccounts
{
  "nickname": "sub2",
}

回复

{
  "success": true,
  "result": {
    "nickname": "sub2",
    "deletable": true,
    "editable": true,
  }
}

需要验证身份。

净荷格式

姓名 类型 价值 描述
nickname string sub2

回复格式

姓名 类型 价值 描述
nickname string sub2 subaccount name
deletable boolean true 子帐户是否可以删除
editable boolean true 子帐户的昵称是否可以更改

更改子帐户名称

请求

POST /subaccounts/update_name
{
  "nickname": "sub2",
  "newNickname": "newSub2"
}

回复

{
  "success": true,
  "result": null
}

需要验证身份。

净荷格式

姓名 类型 价值 描述
nickname string sub2 子帐户的当前昵称
newNickname string newSub2 子帐户的新昵称

删除子帐户

请求

DELETE /subaccounts
{
  "nickname": "sub2",
}

回复

{
  "success": true,
  "result": null
}

需要验证身份。

净荷格式

姓名 类型 价值 描述
nickname string sub2

获取子帐户余额

请求

GET /subaccounts/{nickname}/balances

回复


{
  "success": true,
  "result": [
    {
      "coin": "USDT",
      "free": 4321.2,
      "total": 4340.2
    }
  ]
}

需要验证身份。

回复格式

姓名 类型 价值 描述
coin string USDT coin id
free number 4321.2 free amount
total number 4340.2 total amount

在子帐户之间相互转账

请求

POST /subaccounts/transfer
{
  "coin": "XRP",
  "size": 10000,
  "source": null,
  "destination": "sub1",
}

回复

{
  "success": true,
  "result": {
    "id": 316450,
    "coin": "XRP",
    "size": 10000,
    "time": "2019-03-05T09:56:55.728933+00:00",
    "notes": "",
    "status": "complete",
  }
}

需要验证身份。

净荷格式

姓名 类型 价值 描述
coin string XRP
size number 31431.0
source string main %{account}子帐户的名称。主帐户使用null'main'
destination string sub1 %{account}子帐户的名称。主帐户使用null'main'

回复格式

姓名 类型 价值 描述
id number 316450
coin string XRP
size number 10000
time string 2019-03-05T09:56:55.728933+00:00
notes string
status string complete always 'complete'

市场

获取市场

请求

GET /markets

回复


{
  "success": true,
  "result": [
    {
      "name": "BTC/USD",
      "baseCurrency": "BTC",
      "quoteCurrency": "USD",
      "type": "spot",
      "enabled": true,
      "ask": 3949.25,
      "bid": 3949,
      "last": 10579.52,
      "priceIncrement": 0.25,
      "sizeIncrement": 0.001
    }
  ]
}

回复格式

姓名 类型 价值 描述
type string spot
name string BTC/USD
baseCurrency string BTC
quoteCurrency string USD
enabled boolean true
ask number 3949.25 最佳报价
bid number 3949.00 最佳报价
last number 3949.00 最近成交价
priceIncrement number 0.25
sizeIncrement number 0.001

获取单个市场

请求

GET /markets/{market_name}

回复

See /markets

获取委托簿

请求

GET /markets/{market_name}/orderbook?depth={depth}

回复

{
  "success": true,
  "result": {
    "asks": [
      [
        4114.25,
        6.263
      ]
    ],
    "bids": [
      [
        4112.25,
        49.29
      ]
    ]
  }
}

参数

姓名 类型 价值 描述
market_name string BTC/USD Required. Name of the market.
depth number 35 max 100, default 20

回复格式

姓名 类型 价值 描述
asks array [4114.25, 6.263] Array with price and size
bids array [4112, 49.29] Array with price and size

获取交易

Supports pagination

请求

GET /markets/{market_name}/trades?start_time={start_time}&end_time={end_time}

回复

{
  "success": true,
  "result": [
    {
      "id": 3855995,
      "price": 3857.75,
      "side": "buy",
      "size": 0.111,
      "time": "2019-03-20T18:16:23.397991+00:00"
    }
  ]
}

参数

姓名 类型 价值 描述
market_name string BTC/USD name of the market
start_time number 1559881511 optional
end_time number 1559881711 optional

回复格式

姓名 类型 价值 描述
id number 3855995 trade id
price number 3857.75
side string buy
size number 0.111
time string 2019-03-20T18:16:23.397991+00:00

获取历史价格

请求

GET /markets/{market_name}/candles?resolution={resolution}&start_time={start_time}&end_time={end_time}

回复

{
  "success": true,
  "result": [
    {
      "close":11055.25,
      "high":11089.0,
      "low":11043.5,
      "open":11059.25,
      "startTime":"2019-06-24T17:15:00+00:00",
      "volume":464193.95725
    }
  ]
}

参数

姓名 类型 价值 描述
market_name string BTC/USD name of the market
resolution number 300 窗口时长(秒为)。 选项:15, 60, 300, 900, 3600, 14400, 86400, or any multiple of 86400 up to 30*86400
start_time number 1559881511 optional
end_time number 1559881711 optional

回复格式

姓名 类型 价值 描述
startTime string 2019-06-24T17:15:00+00:00 窗口开始时间
open number 11059.25 开始时间的标记价格
close number 11055.25 窗口结束时的标记价格:startTime(开始时间)+ 时间单位
high number 11089.0 窗口最高标记价格
low number 11059.25 窗口最低标记价格
volume number 464193.95725 窗口内交易量

钱包

获取币

请求

GET /wallet/coins

回复


{
  "success": true,
  "result": [
    {
      "bep2Asset": null,
      "canConvert": true,
      "canDeposit": true,
      "canWithdraw": true,
      "collateral": true,
      "collateralWeight": 0.975,
      "creditTo": null,
      "erc20Contract": "0xdAC17F958D2ee523a2206206994597C13D831ec7",
      "fiat": false,
      "hasTag": false,
      "id": "USDT",
      "isToken": false,
      "methods": ["omni", "erc20", "trx"],
      "spotMargin": false,
      "name": "USD Tether",
      "trc20Contract": "TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t",
      "usdFungible": false
    }
  ]
}

回复格式

姓名 类型 价值 描述
canDeposit boolean true
canWithdraw boolean true
hasTag boolean false true if addresses for this coin have a tag
id string USDT
name string USD Tether
bep2Asset string null
canConvert boolean true
collateral boolean true
collateralWeight number 0.975
creditTo string null
erc20Contract string 0xdAC17F958D2ee523a2206206994597C13D831ec7
fiat boolean false
isToken boolean false
methods array ["omni", "erc20", "trx"]
spotMargin boolean false
trc20Contract string TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t
usdFungible boolean false

获取余额

请求

GET /wallet/balances

回复


{
  "success": true,
  "result": [
    {
      "coin": "USDT",
      "free": 2320.2,
      "spotBorrow": 0,
      "total": 2340.2,
      "usdValue": 2340.2,
      "availableWithoutBorrow": 2320.2
    }
  ]
}

需要验证身份。

回复格式

姓名 类型 价值 描述
coin string USDT coin id
free number 2320.2 free amount
spotBorrow number 0 amount borrowed using spot margin
total number 2340.2 total amount
usdValue number 2340.2 approximate total amount in USD
availableWithoutBorrow number 2320.2 amount available without borrowing

获取所有帐户的余额

请求

GET /wallet/all_balances

回复


{
  "success": true,
  "result": {
    "main": [
      {
        "coin": "USDT",
        "free": 2320.2,
        "spotBorrow": 0.0,
        "total": 2340.2,
        "usdValue": 2340.2,
        "availableWithoutBorrow": 2320.2
      },
      {
        "coin": "BTC",
        "free": 2.0,
        "spotBorrow": 0.0,
        "total": 3.2,
        "usdValue": 23456.7,
        "availableWithoutBorrow": 2.0
      }
    ],
    "Battle Royale": [
      {
        "coin": "USD",
        "free": 2000.0,
        "spotBorrow": 0.0,
        "total": 2200.0,
        "usdValue": 2200.0,
        "availableWithoutBorrow": 2000.0
      }
    ]
  }
}

需要验证身份。

响应将包含一个对象,其私钥是子帐户名称。主帐户将显示在私钥“主”下。

回复格式

姓名 类型 价值 描述
coin string USDT coin id
free number 2320.2 free amount
spotBorrow number 0 amount borrowed using spot margin
total number 2340.2 total amount
usdValue number 2340.2 approximate total amount in USD
availableWithoutBorrow number 2320.2 amount available without borrowing

获取存款地址

请求

GET /wallet/deposit_address/{coin}?method={method}

回复

{
  "success": true,
  "result": {
    "address": "0x83a127952d266A6eA306c40Ac62A4a70668FE3BE",
    "tag": "null"
  }
}

需要验证身份。

请求参数

姓名 类型 价值 描述
coin string USDT
method string erc20 optional; for coins available on different blockchains (e.g USDT)

回复格式

姓名 类型 价值 描述
address string 0x83a127952d266A6eA306c40Ac62A4a70668FE3BE
tag string null optional

Get deposit address list

请求

POST /wallet/deposit_address/list
[
    {
        "coin": "USDT",
        "method": "erc20"
    },
    {
        "coin": "ETH",
    }
]

回复

{
  "success": true,
  "result": [{
    "coin": "USDT"
    "address": "0x83a127952d266A6eA306c40Ac62A4a70668FE3BE",
    "tag": "null"
  }]
}

需要验证身份。

请求参数

姓名 类型 价值 描述
coin string USDT
method string erc20 optional; for coins available on different blockchains (e.g USDT)

回复格式

姓名 类型 价值 描述
coin string USDT
address string 0x83a127952d266A6eA306c40Ac62A4a70668FE3BE
tag string null optional

获取存入记录

请求

GET /wallet/deposits

回复

{
  "success": true,
  "result": {
    "coin": "TUSD",
    "confirmations": 64,
    "confirmedTime": "2019-03-05T09:56:55.728933+00:00",
    "fee": 0,
    "id": 1,
    "sentTime": "2019-03-05T09:56:55.735929+00:00",
    "size": "99.0",
    "status": "confirmed",
    "time": "2019-03-05T09:56:55.728933+00:00",
    "txid": "0x8078356ae4b06a036d64747546c274af19581f1c78c510b60505798a7ffcaf1"
  }
}

需要验证身份。

请求参数

姓名 类型 价值 描述
start_time number 1564146934 optional; minimum time of items to return, in Unix time (seconds since 1970-01-01)
end_time number 1564233334 optional; maximum time of items to return, in Unix time (seconds since 1970-01-01)

回复格式

姓名 类型 价值 描述
coin string TUSD coin id
confirmations number 64 number of blockchain confirmations
confirmedTime string 2019-03-05T09:56:55.728933+00:00
fee number 0.0 fee, not included in size
id number 1 deposit id
sentTime string 2019-03-05T09:56:55.735929+00:00
size string 99.0
status string confirmed one of "confirmed", "unconfirmed", or "cancelled"
time string 2019-03-05T09:56:55.728933+00:00
txid string 0x8078356ae4b06a036d64747546c274af19581f1c78c510b60505798a7ffcaf1 optional
notes string Transfer from main account to my_subaccount optional

获取提现历史记录

请求

GET /wallet/withdrawals

回复

{
  "success": true,
  "result": {
    "coin": "TUSD",
    "address": "0x83a127952d266A6eA306c40Ac62A4a70668FE3BE",
    "tag": "null",
    "fee": 0,
    "id": 1,
    "size": "99.0",
    "status": "complete",
    "time": "2019-03-05T09:56:55.728933+00:00",
    "txid": "0x8078356ae4b06a036d64747546c274af19581f1c78c510b60505798a7ffcaf1"
  }
}

需要验证身份。

请求参数

姓名 类型 价值 描述
start_time number 1564146934 optional; minimum time of items to return, in Unix time (seconds since 1970-01-01)
end_time number 1564233334 optional; maximum time of items to return, in Unix time (seconds since 1970-01-01)

回复格式

姓名 类型 价值 描述
coin string TUSD coin id
address string 0x83a127952d266A6eA306c40Ac62A4a70668FE3BE deposit address the withdrawal was sent to
tag string null
fee number 0.0 fee, not included in size
id number 1 withdrawal id
size string 99.0
status string complete one of "requested", "processing", "complete", or "cancelled"
time string 2019-03-05T09:56:55.728933+00:00
txid string 0x8078356ae4b06a036d64747546c274af19581f1c78c510b60505798a7ffcaf1 optional
notes string Transfer from main account to my_subaccount optional

请求提现

请求

POST /wallet/withdrawals
{
  "coin": "USDT",
  "size": 20.2,
  "address": "0x83a127952d266A6eA306c40Ac62A4a70668FE3BE",
  "tag": null,
  "password": "my_withdrawal_password",
  "code": 152823
}

回复

{
  "success": true,
  "result": {
    "coin": "USDT",
    "address": "0x83a127952d266A6eA306c40Ac62A4a70668FE3BE",
    "tag": "null",
    "fee": 0,
    "id": 1,
    "size": "20.2",
    "status": "requested",
    "time": "2019-03-05T09:56:55.728933+00:00",
    "txid": "null"
  }
}

需要验证身份。

净荷格式

姓名 类型 价值 描述
coin string USDT coin to withdraw
size number 20.2 amount to withdraw
address string 0x83a127952d266A6eA306c40Ac62A4a70668FE3BE address to send to
tag string null optional
password string null optional; withdrawal password if it is required for your account
code string null optiona; 2fa code if it is required for your account

回复格式

姓名 类型 价值 描述
coin string USDT coin id
address string 0x83a127952d266A6eA306c40Ac62A4a70668FE3BE deposit address the withdrawal was sent to
tag string null
fee number 0.0 fee, not included in size
id number 1 withdrawal id
size string 20.2
status string requested one of "requested", "processing", "complete", or "cancelled"
time string 2019-03-05T09:56:55.728933+00:00
txid string null

Get withdrawal fees

请求

GET /wallet/withdrawal_fee
{
  "coin": "USDC",
  "size": 20.2,
  "address": "0x83a127952d266A6eA306c40Ac62A4a70668FE3BE",
  "tag": null
}

回复

{
  "success": true,
  "result": {
    "method": "erc20",
    "address": "0x83a127952d266A6eA306c40Ac62A4a70668FE3BE",
    "fee": 0,
    "congested": false
  }
}

需要验证身份。

净荷格式

姓名 类型 价值 描述
coin string COIN coin to withdraw
size number 20.2 amount to withdraw
address string 0x83a127952d266A6eA306c40Ac62A4a70668FE3BE address to send to
tag string null optional

回复格式

姓名 类型 价值 描述
method string blockchain protocol that will be used
fee number 0 fee that will be charged on the withdrawal (size - fee will be sent to the destination)
congested boolean false if this blockchain is currently congested

Get saved addresses

This endpoint provides you with your saved addresses

请求

GET /wallet/saved_addresses

回复

{
  "success": true,
  "result": [
    {
      "address": "0xb2EA1CC386A260c9Ae3ebda2cb7AEd212b034Ab4",
      "coin": "ETH",
      "fiat": false,
      "id": 31189,
      "isPrimetrust": false,
      "lastUsedAt": "2020-09-21T15:38:11.795763+00:00",
      "name": "MetaMask 1",
      "tag": null,
      "whitelisted": true,
      "whitelistedAfter": "2020-08-26T09:41:53.959256+00:00"
    },
    {
      "address": "0xE4Ba8791E0fdbdc50024898A384FecFD90e69553",
      "coin": "ETH",
      "fiat": false,
      "id": 46725,
      "isPrimetrust": false,
      "lastUsedAt": "2020-09-21T09:16:46.918175+00:00",
      "name": "Ledger Nano S",
      "tag": null,
      "whitelisted": true,
      "whitelistedAfter": "2020-09-21T09:16:16.829467+00:00"
    }
  ]
}

需要验证身份。

请求参数

姓名 类型 价值 描述
coin string ETH optional, filters saved addresses by coin;

回复格式

姓名 类型 价值 描述
address string "0xb2EA1CC386A260c9Ae3ebda2cb7AEd212b034Ab4"
coin string ETH coin id
fiat boolean false
id int 31189
isPrimetrust boolean false
lastUsedAt string "2020-09-21T15:38:11.795763+00:00"
tag string null
whitelisted boolean true true if the address is whitelisted, null if the address has never been whitelisted or has been unwhitelisted
whitelistedAfter string "2020-09-21T09:16:16.829467+00:00" Date after which the address has been whitelisted, null if the address has never been whitelisted or has been unwhitelisted

Create saved addresses

请求

POST /wallet/saved_addresses

回复

{
  "success": true,
  "result": {
    "address": "0xb2EA1CC386A260c9Ae3ebda2cb7AEd212b034Ab4",
    "coin": "ETH",
    "fiat": false,
    "id": 52382,
    "isPrimetrust": false,
    "lastUsedAt": "2020-10-08T06:11:03.072427+00:00",
    "name": "MetaMask",
    "tag": null,
    "whitelisted": null,
    "whitelistedAfter": null
  }
}

需要验证身份。

请求参数

姓名 类型 价值 描述
coin string ETH coin id
address string "0xb2EA1CC386A260c9Ae3ebda2cb7AEd212b034Ab4"
addressName string MetaMask
isPrimetrust boolean false
tag string null optional, tag of the address;
whitelist boolean false Pass true if the user has whitelisting enabled and would like this new address to be whitelisted

回复格式

姓名 类型 价值 描述
address string "0xb2EA1CC386A260c9Ae3ebda2cb7AEd212b034Ab4"
coin string ETH coin id
fiat boolean false
id int 52382
isPrimetrust boolean false
lastUsedAt string "2020-10-08T06:11:03.072427+00:00"
name string "MetaMask"
tag string null
whitelisted boolean null true if the address is whitelisted, null if the address has never been whitelisted or has been unwhitelisted
whitelistedAfter boolean null Date after which the address has been whitelisted, null if the address has never been whitelisted or has been unwhitelisted

Delete saved addresses

请求

DELETE /wallet/saved_addresses/{saved_address_id}

回复

{
  "success": true,
  "result": "Address deleted"
}

需要验证身份。

请求参数

姓名 类型 价值 描述
saved_address_id int 52382

Register a SEN deposit

请求

POST /sen/deposits/{sen_link_id}
{
  "size": 175.0
}

回复

"Success"

需要验证身份。

Register a SEN deposit within our system. In order to be auto-credited, you must register the deposit with us beforehand.

姓名 类型 价值 描述
sen_link_id int 142 Unique ID of the SEN link
size number 175.0 Amount of the deposit

买卖盘

获取未执行的挂单

请求

GET /orders?market={market}

回复

{
  "success": true,
  "result": [
    {
      "createdAt": "2019-03-05T09:56:55.728933+00:00",
      "filledSize": 10,
      "id": 9596912,
      "market": "BTC/USD",
      "price": 0.306525,
      "avgFillPrice": 0.306526,
      "remainingSize": 31421,
      "side": "sell",
      "size": 31431,
      "status": "open",
      "type": "limit",
      "reduceOnly": false,
      "ioc": false,
      "postOnly": false,
      "clientId": null
    }
  ]
}

需要验证身份。

请求参数

姓名 类型 价值 描述
market string BTC/USD optional; market to limit orders

回复格式

姓名 类型 价值 描述
id number 9596912
market string BTC/USD
type string limit
side string sell
price number 0.306525
size number 31431.0
filledSize number 10.0
remainingSize number 31421.0
avgFillPrice number 0.306526
status string new (accepted but not processed yet), open, or closed (filled or cancelled)
createdAt string 2019-03-05T09:56:55.728933+00:00
reduceOnly boolean false
ioc boolean false
postOnly boolean false
clientId string optional; client order id

获取订单历史记录

请求

GET /orders/history?market={market}

回复

{
  "success": true,
  "result": [
    {
      "avgFillPrice": 10135.25,
      "clientId": null,
      "createdAt": "2019-06-27T15:24:03.101197+00:00",
      "filledSize": 0.001,
      "id": 257132591,
      "ioc": false,
      "market": "BTC/USD",
      "postOnly": false,
      "price": 10135.25,
      "reduceOnly": false,
      "remainingSize": 0.0,
      "side": "buy",
      "size": 0.001,
      "status": "closed",
      "type": "limit"
    },
  ],
  "hasMoreData": false,
}

需要验证身份。

请求参数

姓名 类型 价值 描述
market string BTC/USD optional; market to limit orders
side string buy optional; buy or sell side
orderType string limit optional; filter by market or limit orders
start_time number 1559881511 optional; only fetch orders created after this time
end_time number 1559901511 optional; only fetch orders created before this time

回复格式

姓名 类型 价值 描述
id number 257132591
market string BTC/USD
type string limit
side string buy
price number 10135.25
size number 0.001
filledSize number 0.001
remainingSize number 0.0
avgFillPrice number 10135.25
status string new (accepted but not processed yet), open, or closed (filled or cancelled)
createdAt string 2019-06-27T15:24:03.101197+00:00
reduceOnly boolean false
ioc boolean false
postOnly boolean false
clientId string optional; client order id

获取未完成触发挂单

请求

GET /conditional_orders?market={market}

回复

{
  "success": true,
  "result": [
    {
      "createdAt": "2019-03-05T09:56:55.728933+00:00",
      "id": 50001,
      "market": "BTC/USD",
      "orderPrice": null,
      "reduceOnly": false,
      "side": "buy",
      "size": 0.003,
      "status": "open",
      "trailStart": null,
      "trailValue": null,
      "triggerPrice": 0.49,
      "triggeredAt": null,
      "type": "stop"
      "orderType": "market",
      "filledSize": 0,
      "avgFillPrice": null,
      "retryUntilFilled": false
  ]
}

需要验证身份。

请求参数

姓名 类型 价值 描述
market string BTC/USD optional; market to limit orders
type string stop optional; type of trigger order (stop, trailing_stop, or take_profit)

回复格式

姓名 类型 价值 描述
createdAt string 2019-03-05T09:56:55.728933+00:00
id number 50001
market string BTC/USD
orderPrice number 0.50 Limit price for stop limit and take profit limit orders; otherwise null
reduceOnly boolean false
side string buy
size number 31431.0
status string open Always open for this endpoint
trailStart number null trigger price - trail value; only for trailing stop orders
trailValue number null only for trailing stop orders
triggerPrice number 0.49 market price at which this order will trigger
triggeredAt string null time of first trigger. null if never triggered
type string stop Values are stop, trailing_stop, and take_profit
orderType string market Values are market, limit
filledSize number 0
avgFillPrice number null
retryUntilFilled boolean false Whether or not to keep re-triggering until filled

获取计划委托的触发价格/条件

请求

GET /conditional_orders/<conditional_order_id>/triggers

回复

{
  "success": true,
  "result": [
    {
      "error": null,
      "filledSize": 4.0,
      "orderSize": 10.0,
      "orderId": 38066650,
      "time": "2020-01-19T09:23:36.570904+00:00"
    }
  ]
}

需要验证身份。

回复格式

姓名 类型 价值 描述
time string 2019-03-05T09:56:55.728933+00:00
orderSize number 31431.0 null if order failed to place
filledSize number 0 null if order failed to place
orderId number null if order failed to place
error string null reason for order failing to be placed, null if successful

获取触发挂单历史记录

请求

GET /conditional_orders/history?market={market}

回复

{
  "success": true,
  "result": [
    {
      "createdAt": "2019-03-05T09:56:55.728933+00:00",
      "id": 50000,
      "market": "BTC/USD",
      "orderPrice": null,
      "reduceOnly": false,
      "side": "buy",
      "size": 31431,
      "status": "triggered",
      "trailStart": null,
      "trailValue": null,
      "triggerPrice": 0.37,
      "triggeredAt": 2019-03-06T03:26:53.268723+00:00,
      "type": "stop",
      "orderType": "market",
      "filledSize": 31431,
      "avgFillPrice": 0.3701,
      "orderType": "market",
      "filledSize": 0,
      "avgFillPrice": null,
      "retryUntilFilled": false,
    },
  ],
  "hasMoreData": false,
}

需要验证身份。

请求参数

姓名 类型 价值 描述
market string BTC/USD optional; market to limit orders
start_time number 1559881511 optional; only fetch orders created after this time
end_time number 1559881511 optional; only fetch orders created before this time
side string buy optional; valid values are buy and sell.
type string trailing_stop optional; valid values are stop, trailing_stop, and take_profit.
orderType string limit optional; valid values are market and limit.

回复格式

姓名 类型 价值 描述
createdAt string 2019-03-05T09:56:55.728933+00:00
id number 50001
market string BTC/USD
orderPrice number 0.50 Limit price for stop limit and take profit limit orders; otherwise null
reduceOnly boolean false
side string buy
size number 31431.0
status string open Values are open, cancelled, and triggered
trailStart number null trigger price - trail value; only for trailing stop orders
trailValue number null only for trailing stop orders
triggerPrice number 0.49 market price at which this order will trigger
triggeredAt string null time of first trigger. null if never triggered
type string stop Values are stop, trailing_stop, and take_profit
orderType string market Values are market and limit
filledSize number 31431
avgFillPrice number 0.3701
orderType string market Values are market, limit
filledSize number 0
avgFillPrice number null
retryUntilFilled boolean false Whether or not to keep re-triggering until filled

下单

请求

POST /orders
{
  "market": "BTC/USD",
  "side": "sell",
  "price": 0.306525,
  "type": "limit",
  "size": 31431.0,
  "reduceOnly": false,
  "ioc": false,
  "postOnly": false,
  "clientId": null,
}

回复

{
  "success": true,
  "result": {
    "createdAt": "2019-03-05T09:56:55.728933+00:00",
    "filledSize": 0,
    "id": 9596912,
    "market": "BTC/USD",
    "price": 0.306525,
    "remainingSize": 31431,
    "side": "sell",
    "size": 31431,
    "status": "open",
    "type": "limit",
    "reduceOnly": false,
    "ioc": false,
    "postOnly": false,
    "clientId": null,
  }
}

需要验证身份。

净荷格式

姓名 类型 价值 描述
market string BTC/USD
side string sell "buy" or "sell"
price number 0.306525 Send null for market orders.
type string limit "limit" or "market"
size number 31431.0
reduceOnly boolean false optional; default is false
ioc boolean false optional; default is false
postOnly boolean false optional; default is false
clientId string null optional; client order id

回复格式

姓名 类型 价值 描述
createdAt string 2019-03-05T09:56:55.728933+00:00
filledSize number 0.0
id number 9596912
market string BTC/USD
price number 0.306525
remainingSize number 31431.0
side string sell
size number 31431.0
status string new (accepted but not processed yet), open, or closed (filled or cancelled)
type string limit
reduceOnly boolean false
ioc boolean false
postOnly boolean false
clientId string optional; client order id, if supplied

设置计划委托

计划委托包括了止损,移动止损以及止盈等委托。

请求

POST /conditional_orders
  • 止损
{
  "market": "BTC/USD",
  "side": "sell",
  "triggerPrice": 0.306525,
  "size": 31431.0,
  "type": "stop",
  "reduceOnly": false,
}
  • 移动止损
{
  "market": "BTC/USD",
  "side": "sell",
  "trailValue": -0.05,
  "size": 31431.0,
  "type": "trailingStop",
  "reduceOnly": false,
}
  • 止盈
{
  "market": "BTC/USD",
  "side": "buy",
  "triggerPrice": 0.367895,
  "size": 31431.0,
  "type": "takeProfit",
  "reduceOnly": false,
}

回复

{
  "success": true,
  "result": {
    "createdAt": "2019-03-05T09:56:55.728933+00:00",
    "id": 9596912,
    "market": "BTC/USD",
    "triggerPrice": 0.306525,
    "side": "sell",
    "size": 31431,
    "status": "open",
    "type": "stop",
    "orderPrice": null,
    "triggeredAt": null,
    "reduceOnly": false,
    "orderType": "market",
    "retryUntilFilled": false,
  }
}

需要验证身份。

净荷格式

姓名 类型 价值 描述
market string BTC/USD
side string sell "buy" or "sell"
size number 31431.0
type string stop "stop", "trailingStop", "takeProfit"; default is stop
reduceOnly boolean false optional; default is false
retryUntilFilled boolean false Whether or not to keep re-triggering until filled. optional, default true for market orders

为止损委托增加的参数

姓名 类型 价值 描述
triggerPrice number 0.306525
orderPrice number 0.3063 optional; order type is limit if this is specified; otherwise market

为移动止损委托增加的参数

姓名 类型 价值 描述
trailValue number -0.05 negative for "sell"; positive for "buy"

为止盈委托增加的参数

姓名 类型 价值 描述
triggerPrice number 0.306525
orderPrice number 0.3067 optional; order type is limit if this is specified; otherwise market

回复格式

姓名 类型 价值 描述
createdAt string 2019-03-05T09:56:55.728933+00:00
id number 9596912
market string BTC/USD
triggerPrice number 0.306525
side string sell
size number 31431.0
status string Values are open, cancelled, and triggered
type string stop
orderPrice number null price of the order sent when this stop loss triggered
triggeredAt string null time at which this stop loss order triggered
reduceOnly boolean false
orderType string market Values are market, limit
retryUntilFilled boolean false Whether or not to keep re-triggering until filled

修改订单

请求

POST /orders/{order_id}/modify
{
  "size": 31431,
  "price": 0.326525,
}

回复

{
  "success": true,
  "result": {
    "createdAt": "2019-03-05T11:56:55.728933+00:00",
    "filledSize": 0,
    "id": 9596932,
    "market": "BTC/USD",
    "price": 0.326525,
    "remainingSize": 31431,
    "side": "sell",
    "size": 31431,
    "status": "open",
    "type": "limit",
    "reduceOnly": false,
    "ioc": false,
    "postOnly": false,
    "clientId": null,
  }
}

Please note that the order's queue priority will be reset, and the order ID of the modified order will be different from that of the original order. Also note: this is implemented as cancelling and replacing your order. There's a chance that the order meant to be cancelled gets filled and its replacement still gets placed.

需要验证身份。

净荷格式

姓名 类型 价值 描述
price number 0.306525 optional; either price or size must be specified
size number 31431.0 optional; either price or size must be specified
clientId string order1 optional; client ID for the modified order

回复格式

姓名 类型 价值 描述
createdAt string 2019-03-05T11:56:55.728933+00:00
filledSize number 0.0
id number 9596932
market string BTC/USD
price number 0.326525
remainingSize number 31431.0
side string sell
size number 31431.0
status string new (accepted but not processed yet), open, or closed (filled or cancelled)
type string limit
reduceOnly boolean false
ioc boolean false
postOnly boolean false
clientId string optional; client order id, if supplied

根据Client ID修改订单

请求

POST /orders/by_client_id/{client_order_id}/modify
{
  "size": 31431,
  "price": 0.326525,
}

回复

{
  "success": true,
  "result": {
    "createdAt": "2019-03-05T11:56:55.728933+00:00",
    "filledSize": 0,
    "id": 9596932,
    "market": "BTC/USD",
    "price": 0.326525,
    "remainingSize": 31431,
    "side": "sell",
    "size": 31431,
    "status": "open",
    "type": "limit",
    "reduceOnly": false,
    "ioc": false,
    "postOnly": false,
    "clientId": null,
  }
}

Please note that the order's queue priority will be reset, and the order ID of the modified order will be different from that of the original order. Also note: this is implemented as cancelling and replacing your order. There's a chance that the order meant to be cancelled gets filled and its replacement still gets placed.

需要验证身份。

净荷格式

姓名 类型 价值 描述
price number 0.306525 optional; either price or size must be specified
size number 31431.0 optional; either price or size must be specified
clientId string order1 optional; client ID for the modified order

回复格式

姓名 类型 价值 描述
createdAt string 2019-03-05T11:56:55.728933+00:00
filledSize number 0.0
id number 9596932
market string BTC/USD
price number 0.326525
remainingSize number 31431.0
side string sell
size number 31431.0
status string new (accepted but not processed yet), open, or closed (filled or cancelled)
type string limit
reduceOnly boolean false
ioc boolean false
postOnly boolean false
clientId string optional; client order id, if supplied

修改触发订单

计划委托包括了止损,移动止损以及止盈等委托。

请求

POST /conditional_orders/{order_id}/modify
  • 止损
{
  "triggerPrice": 0.306225,
  "size": 31431.0,
}
  • 移动止损
{
  "trailValue": -0.06,
  "size": 31432.0,
}
  • 止盈
{
  "triggerPrice": 0.367885,
  "size": 31433.0,

}

回复

{
  "success": true,
  "result": {
    "createdAt": "2019-03-05T09:56:55.728933+00:00",
    "id": 9596912,
    "market": "BTC/USD",
    "triggerPrice": 0.306225,
    "side": "sell",
    "size": 31431,
    "status": "open",
    "type": "stop",
    "orderPrice": null,
    "triggeredAt": null,
    "reduceOnly": false,
    "orderType": "market",
    "filledSize": 0,
    "avgFillPrice": null,
    "retryUntilFilled": false
  }
}

需要验证身份。

净荷格式

请注意,修改后的订单的订单ID将与原始订单的ID不同。

止损订单参数

姓名 类型 价值 描述
size number 31431.0
triggerPrice number 0.306525
orderPrice number 0.3063 only for stop limit orders

追踪止损单参数

姓名 类型 价值 描述
size number 31431.0
trailValue number -0.05 negative for sell orders; positive for buy orders

止盈订单参数

姓名 类型 价值 描述
size number 31431.0
triggerPrice number 0.306525
orderPrice number 0.3067 only for take profit limit orders

回复格式

姓名 类型 价值 描述
createdAt string 2019-03-05T12:56:55.728933+00:00
id number 9596912
market string BTC/USD
triggerPrice number 0.306525
side string sell
size number 31431.0
status string Values are open, cancelled, and triggered
type string stop
orderPrice number null price of the order sent when this stop loss triggered
triggeredAt string null time at which this stop loss first triggered
reduceOnly boolean false
orderType string market Values are market, limit
retryUntilFilled boolean false Whether or not to keep re-triggering until filled

获取订单状态

请求

GET /orders/{order_id}

回复

{
  "success": true,
  "result": {
    "createdAt": "2019-03-05T09:56:55.728933+00:00",
    "filledSize": 10,
    "id": 9596912,
    "market": "BTC/USD",
    "price": 0.306525,
    "avgFillPrice": 0.306526,
    "remainingSize": 31421,
    "side": "sell",
    "size": 31431,
    "status": "open",
    "type": "limit",
    "reduceOnly": false,
    "ioc": false,
    "postOnly": false,
    "clientId": null
  }
}

通过客户编号获取订单状态

请求

GET /orders/by_client_id/{client_order_id}

回复

{
  "success": true,
  "result": {
    "createdAt": "2019-03-05T09:56:55.728933+00:00",
    "filledSize": 10,
    "id": 9596912,
    "market": "BTC/USD",
    "price": 0.306525,
    "avgFillPrice": 0.306526,
    "remainingSize": 31421,
    "side": "sell",
    "size": 31431,
    "status": "open",
    "type": "limit",
    "reduceOnly": false,
    "ioc": false,
    "postOnly": false,
    "clientId": "your_client_order_id"
  }
}

需要验证身份。

回复格式

姓名 类型 价值 描述
id number 9596912
market string BTC/USD
type string limit
side string sell
price number 0.306525
size number 31431.0
filledSize number 10.0
remainingSize number 31421.0
avgFillPrice number 0.306526
status string new (accepted but not processed yet), open, or closed (filled or cancelled)
createdAt string 2019-03-05T09:56:55.728933+00:00
reduceOnly boolean false
ioc boolean false
postOnly boolean false
clientId string client order id

撤单

请求

DELETE /orders/{order_id}

回复

{
  "success": true,
  "result": "Order queued for cancelation"
}

需要验证身份。

通过客户编号取消订单

请求

DELETE /orders/by_client_id/{client_order_id}

回复

{
  "success": true,
  "result": "Order queued for cancellation"
}

需要验证身份。

取消未完成触发挂单

请求

DELETE /conditional_orders/{id}

回复

{
  "success": true,
  "result": "Order cancelled"
}

需要验证身份。

取消所有挂单

此操作会取消您设置的条件委托(止损委托和跟踪止损委托)。

请求

DELETE /orders
{
  "market": "BTC/USD",
}

回复

{
  "success": true,
  "result": "Orders queued for cancelation"
}

需要验证身份。

净荷格式

姓名 类型 价值 描述
market string BTC/USD optional; restrict to cancelling orders only on this market
side string buy optional; restrict to cancelling orders only on this side
conditionalOrdersOnly boolean false optional; restrict to cancelling conditional orders only
limitOrdersOnly boolean false optional; restrict to cancelling existing limit orders (non-conditional orders) only

执行

请求

GET /fills?market={market}

回复

{
  "success": true,
  "result": [
    {
      "fee": 20.1374935,
      "feeCurrency": "BTC",
      "feeRate": 0.0005,
      "id": 11215,
      "liquidity": "taker",
      "market": "BTC/USD",
      "baseCurrency": null,
      "quoteCurrency": null,
      "orderId": 8436981,
      "tradeId": 1013912,
      "price": 4.201,
      "side": "buy",
      "size": 9587,
      "time": "2019-03-27T19:15:10.204619+00:00",
      "type": "order"
    }
  ]
}

需要验证身份。

Supports pagination

Please note that fills generated by Converts will show up as 'type': 'otc'

请求参数

姓名 类型 价值 描述
market string BTC/USD optional; market to limit fills
start_time number 1564146934 optional; minimum time of fills to return, in Unix time (seconds since 1970-01-01)
end_time number 1564233334 optional; maximum time of fills to return, in Unix time (seconds since 1970-01-01)
order string null optional; default is descending, supply 'asc' to receive fills in ascending order of time
orderId number null

回复格式

姓名 类型 价值 描述
fee number 20.1374935
feeCurrency string BTC
feeRate number 0.0005
id number 11215 fill id
liquidity string taker "taker" or "maker"
market string BTC/USD
baseCurrency string BTC
quoteCurrency string USD
orderId number 8436981
tradeId number 1013912 null for trades before 2019-02-19 10:00:00
price number 4.201
side string buy
size number 9587.0
time string 2019-03-27T19:15:10.204619+00:00
type string order
姓名 类型 价值 描述
id number 5
size number 1.0
price number 3.0
option option object; see List Quote Requests section
time string "2020-01-08T02:59:57.270744+00:00"
liquidity string taker "taker" or "maker"
fee number 1.782852614186007
feeRate number 0.0001729
side string buy

Convert

请求报价

请求

POST /otc/quotes
{
  "fromCoin": "BTC",
  "toCoin": "USD",
  "size": 0.05
}

回复

{
  "success": true,
  "result": {
    "quoteId": 1031
  }
}

需要验证身份。

净荷格式

姓名 类型 价值 描述
fromCoin string BTC
toCoin string USD
size number 0.05 denominated in units of fromCoin

回复格式

姓名 类型 价值 描述
quoteId number 1031

Get quote status

请求

GET /otc/quotes/{quoteId}

回复

{
  "success": true,
  "result": [
    {
      "baseCoin": "BTC",
      "cost": 0.05,
      "expired": false,
      "expiry": 1630355607.399486,
      "filled": false,
      "fromCoin": "BTC",
      "id": 1031,
      "price": 7695.4,
      "proceeds": 384.77,
      "quoteCoin": "USD",
      "side": "sell",
      "toCoin": "USD"
    }
  ]
}

需要验证身份。

请求参数

姓名 类型 价值 描述
market string BTC/USD optional; market to limit orders

回复格式

姓名 类型 价值 描述
baseCoin string BTC
cost number 0.05 cost of accepting the quote in units of fromCoin
expired bool false if the quote is expired (if so, cannot accep tit)
filled bool false if the quote is already accepted
id number 1031
price number 7695.4 price in units of quoteCoin
proceeds number 384.77 proceeds of accepting the quote in units of toCoin
quoteCoin string USD
side string "sell" "sell" if fromCoin is baseCoin, otherwise "buy"
toCoin string USD

Accept quote

请求

POST /otc/quotes/{quote_id}/accept

回复

{
  "success": true,
  "result": null
}

需要验证身份。

净荷格式

姓名 类型 价值 描述
quoteId number 1031

Spot Margin

Get lending history

请求

GET /spot_margin/history

Supports pagination

请求参数

姓名 类型 价值 描述
start_time number 1559881511 optional; only fetch history after this time
end_time number 1559901511 optional; only fetch history before this time

回复

{
  "success": true,
  "result": [
    {
      "coin": "BTC",
      "time": "2021-04-06T20:00:00+00:00",
      "rate": 0.00002283,
      "size": 615974048.2224404
    }
  ]
}

回复格式

姓名 类型 价值 描述
coin string USD
time string 2021-04-06T20:00:00+00:00
rate number 0.00002283 hourly lending rate for this cycle
size number 615974048.2224404 total size matched between borrowers and lenders

Get borrow rates

请求

GET /spot_margin/borrow_rates

回复

{
  "success": true,
  "result": [
    {
      "coin": "BTC",
      "estimate": 1.45e-06,
      "previous": 1.44e-06
    }
  ]
}

需要验证身份。

回复格式

姓名 类型 价值 描述
coin string BTC
estimate number 1.45e-06 estimated hourly borrow rate for the next spot margin cycle
previous number 1.44e-06 hourly borrow rate in the previous spot margin cycle

Get lending rates

请求

GET /spot_margin/lending_rates

回复

{
  "success": true,
  "result": [
    {
      "coin": "BTC",
      "estimate": 1.45e-06,
      "previous": 1.44e-06
    }
  ]
}

需要验证身份。

回复格式

姓名 类型 价值 描述
coin string BTC
estimate number 1.45e-06 estimated hourly lending rate for the next spot margin cycle
previous number 1.44e-06 hourly lending rate in the previous spot margin cycle

Get daily borrowed amounts

请求

GET /spot_margin/borrow_summary

回复

{
  "success": true,
  "result": [
    {
      "coin": "BTC",
      "size": 120.1,
    }
  ]
}

回复格式

姓名 类型 价值 描述
coin string BTC
size number 120.1 average matched borrowed and lent amount over the last 24h

Get market info

请求

GET /spot_margin/market_info?market={market}

回复

{
  "success": true,
  "result": [
    {
      "coin": "BTC",
      "borrowed": 0.0,
      "free": 3.87278021,
      "estimatedRate": 1e-06,
      "previousRate": 1e-06
    },
    {
      "coin": "USD",
      "borrowed": 0.0,
      "free": 69966.22310497,
      "estimatedRate": 1.027e-05,
      "previousRate": 1.027e-05
    }
  ]
}

需要验证身份。

Will return None if spot margin is not enabled in account settings.

回复格式

姓名 类型 价值 描述
coin string BTC
borrowed number 0.0 amount of coin currently borrowed
free number 3.87278021 amount of coin that can be spent buying the other coin in the supplied market, including what's borrowable with margin
estimatedRate number 1.45e-06 estimated hourly borrow rate for the next spot margin cycle
previousRate number 1.44e-06 hourly borrow rate in the previous spot margin cycle

Get my borrow history

请求

Supports pagination

GET /spot_margin/borrow_history

回复

{
  "success": true,
  "result": [
    {
      "coin": "BTC",
      "cost": 0.00047864470072,
      "rate": 1.961096e-05,
      "size": 24.407,
      "time": "2020-11-30T12:00:00+00:00"
    }
  ]
}

需要验证身份。

Supports pagination

请求参数

姓名 类型 价值 描述
start_time number 1559881511 optional; only fetch history after this time
end_time number 1559901511 optional; only fetch history before this time

回复格式

姓名 类型 价值 描述
coin string BTC
cost number 0.00047864470072 amount of coin you paid as interest on the borrow
rate number 1.961096e-05 borrow rate
size number 24.407 amount borrowed
time string 2020-11-30T12:00:00+00:00 time of interest payment

Get my lending history

请求

Supports pagination

GET /spot_margin/lending_history

回复

{
  "success": true,
  "result": [
    {
      "coin": "BTC",
      "proceeds": 0.00047864470072,
      "rate": 1.961096e-05,
      "size": 24.407,
      "time": "2020-11-30T12:00:00+00:00"
    }
  ]
}

需要验证身份。

Supports pagination

请求参数

姓名 类型 价值 描述
start_time number 1559881511 optional; only fetch history after this time
end_time number 1559901511 optional; only fetch history before this time

回复格式

姓名 类型 价值 描述
coin string BTC
proceeds number 0.00047864470072 amount of coin you were paid as interest on the loan
rate number 1.961096e-05 lending rate
size number 24.407 amount lent
time string 2020-11-30T12:00:00+00:00 time of interest payment

Get lending offers

请求

GET /spot_margin/offers

回复

{
  "success": true,
  "result": [
    {
      "coin": "BTC",
      "rate": 1e-06,
      "size": 1.0
    }
  ]
}

需要验证身份。

回复格式

姓名 类型 价值 描述
coin string BTC
rate number 1e-06 hourly rate at which you will lend, if matched
size number 1.9 amount you will lend, if matched

Get lending info

请求

GET /spot_margin/lending_info

回复

{
  "success": true,
  "result": [
    {
      "coin": 'USD',
      "lendable": 10026.5,
      "locked": 100.0,
      "minRate": 1e-06,
      "offered": 100.0
    }
  ]
}

需要验证身份。

回复格式

姓名 类型 价值 描述
coin string USD
lendable number 10026.5 additional size you can lend
locked number 100.0 size either in lending offers or not yet unlocked from lending offers
minRate number 1e-6 minimum rate at which your offers will lend
offered number 100.0 size in your lending offers

Submit lending offer

请求

POST /spot_margin/offers
{
  "coin": "USD",
  "size": 10.0,
  "rate": 1e-6
}

回复

{
  "success": true,
  "result": null,
}

需要验证身份。

净荷格式

姓名 类型 价值 描述
coin string USD
size number 10.0
rate number 1e-6

NFTs

Rest API for NFTs on FTX.

NFT endpoints base URL: https://ftx.com/api/nft

List NFTs

请求

GET /nfts

回复

  {
    "success": true,
    "result": [
      {
        "id": 123456,
        "name": "Rare NFT",
        "description": "Rare art",
        "issuer": "FTX",
        "collection": "FTX rare art",
        "series": "Art for charity",
        "solMintAddress": "8Jntdo3RMxQyGvuRkRjFA3aJ",
        "ethContractAddress": "0x014Dc156cA770baC5475186834ecd2f624C990K",
        "imageUrl": "https://www.static.ftx.com/art.jpg",
        "videoUrl": "https://www.static.ftx.com/art.mp4",
        "attributes": null,
        "redeemable": true,
        "redeemed": false,
        "offerPrice": 1000.00,
        "auction": {
          "bestBid": 120.00,
          "minNextBid": 125.00,
          "endTime": "2021-06-11T07:23:24.106062+00:00",
          "bids": 10
        }
      }
    ]
  }

回复格式

姓名 类型 价值 描述
id number 123456 unique ID of NFT
name string Rare NFT name of NFT
description string Rare art description of NFT
issuer string FTX entity issuing NFT
collection string FTX rare art NFT collection name
series string Art for charity NFT series
solMintAddress string 8Jntdo3RMxQyGvuRkRjFA3aJ
ethContractAddress string 0x014Dc156cA770baC5475186834ecd2f624C990K
imageUrl string https://www.static.ftx.com/art.jpg
videoUrl string https://www.static.ftx.com/art.mp4
attributes string null
redeemable boolean true true if NFT is redeemable for goods
redeemed boolean false true if NFT is redeemable and has been redeemed
offerPrice number 1000.00
auction array

Get NFT info

请求

GET /nft/{nft_id}

回复

  {
    "success": true,
    "result": {
        "id": 123456,
        "name": "Rare NFT",
        "description": "Rare art",
        "issuer": "FTX",
        "collection": "FTX rare art",
        "series": "Art for charity",
        "solMintAddress": "8Jntdo3RMxQyGvuRkRjFA3aJ",
        "ethContractAddress": "0x014Dc156cA770baC5475186834ecd2f624C990K",
        "imageUrl": "https://www.static.ftx.com/art.jpg",
        "videoUrl": "https://www.static.ftx.com/art.mp4",
        "attributes": null,
        "redeemable": true,
        "redeemed": false,
        "offerPrice": 1000.00,
        "auction": {
          "bestBid": 120.00,
          "minNextBid": 125.00,
          "endTime": "2021-06-11T07:23:24.106062+00:00",
          "bids": 10
        }
      }
  }

回复格式

姓名 类型 价值 描述
id number 123456 unique ID of NFT
name string Rare NFT name of NFT
description string Rare art description of NFT
issuer string FTX entity issuing NFT
collection string FTX rare art NFT collection name
series string Art for charity NFT series
solMintAddress string 8Jntdo3RMxQyGvuRkRjFA3aJ
ethContractAddress string 0x014Dc156cA770baC5475186834ecd2f624C990K
imageUrl string https://www.static.ftx.com/art.jpg
videoUrl string https://www.static.ftx.com/art.mp4
attributes string null
redeemable boolean true true if NFT is redeemable for goods
redeemed boolean false true if NFT is redeemable and has been redeemed
offerPrice number 1000.00
auction array

Get NFT trades

Supports pagination

请求

GET /nft/{nft_id}/trades

请求参数

姓名 类型 价值 描述
start_time number 1559881511 optional
end_time number 1559881711 optional

回复

  {
    "success": true,
    "result": [
      {
        "id": 490,
        "price": 333.0,
        "time": "2021-06-10T19:48:34.313252+00:00"
      }, {
        "id": 47,
        "price": 350.0,
        "time": "2021-06-03T14:18:40.496298+00:00"
      }, {
        "id": 42,
        "price": 139.0,
        "time": "2021-06-03T13:57:00.467274+00:00"
      }
    ]
  }

回复格式

姓名 类型 价值 描述
id number 42
price number 333.0
time string 2021-06-03T13:57:00.467274+00:00

Get all NFT trades

Supports pagination

请求

GET /all_trades

请求参数

姓名 类型 价值 描述
start_time number 1559881511 optional
end_time number 1559881711 optional

回复

  {
    "success":true,
    "result": [
      {
        "id":123,
        "nft": {
          "id": 123456,
          "name": "Rare NFT",
          "description": "Rare art",
          "issuer": "FTX",
          "collection": "FTX rare art",
          "series": "Art for charity",
          "solMintAddress": "8Jntdo3RMxQyGvuRkRjFA3aJ",
          "ethContractAddress": "0x014Dc156cA770baC5475186834ecd2f624C990K",
          "imageUrl": "https://www.static.ftx.com/art.jpg",
          "videoUrl": "https://www.static.ftx.com/art.mp4",
          "attributes": null,
          "redeemable": true,
          "redeemed": false,
          "offerPrice": 1000.00,
          "auction": {
            "bestBid": 120.00,
            "minNextBid": 125.00,
            "endTime": "2021-06-11T07:23:24.106062+00:00",
            "bids": 10
          }
        },
          "price": 1450.0,
          "time": "2021-06-09T15:39:15.364317+00:00"
      }, {
          "id": 124,
          ......
      }
    ]
  }

回复格式

姓名 类型 价值 描述
id number Rare NFT NFT trade id
nft array See List NFTs for details
price number 1450.0 trade price of NFT
time string 2021-06-09T15:39:15.364317+00:00

Get NFT account info

请求

GET /nft/{nft_id}/account_info

回复

  {
    "success": true,
    "result": {
      "bid": 120.00,
      "buyFee": 6.00,
      "isBestBid": False,
      "owned": False
    }
  }

回复格式

姓名 类型 价值 描述
bid number 120.00
buyFee number 6.00
isBestBid boolean False
owned boolean False

Get all NFT collections

请求

GET /collections

回复

  {
    "success": true,
    "result": [
      {
        "issuer": "FTX",
        "collection":"FTX Special"
      }, {
        "issuer": "FTX",
        "collection": "FTX Swag"
      }, .....
    ]
  }

回复格式

姓名 类型 价值 描述
issuer string FTX issuer of NFT collection
collection string FTX NFT collection name

Get NFT balances

需要验证身份。

请求

GET /balances

回复

  {
    "success": true,
    "result": [
      {
        "id": 123456,
        "name": "Rare NFT",
        "description": "Rare art",
        "issuer": "FTX",
        "collection": "FTX rare art",
        "series": "Art for charity",
        "solMintAddress": "8Jntdo3RMxQyGvuRkRjFA3aJ",
        "ethContractAddress": "0x014Dc156cA770baC5475186834ecd2f624C990K",
        "imageUrl": "https://www.static.ftx.com/art.jpg",
        "videoUrl": "https://www.static.ftx.com/art.mp4",
        "attributes": null,
        "redeemable": true,
        "redeemed": false,
        "offerPrice": 1000.00,
        "auction": {
          "bestBid": 120.00,
          "minNextBid": 125.00,
          "endTime": "2021-06-11T07:23:24.106062+00:00",
          "bids": 10
        }
      }
    ]
  }

回复格式

姓名 类型 价值 描述
id number 123456 unique ID of NFT
name string Rare NFT name of NFT
description string Rare art description of NFT
issuer string FTX entity issuing NFT
collection string FTX rare art NFT collection name
series string Art for charity NFT series
solMintAddress string 8Jntdo3RMxQyGvuRkRjFA3aJ
ethContractAddress string 0x014Dc156cA770baC5475186834ecd2f624C990K
imageUrl string https://www.static.ftx.com/art.jpg
videoUrl string https://www.static.ftx.com/art.mp4
attributes string null
redeemable boolean true true if NFT is redeemable for goods
redeemed boolean false true if NFT is redeemable and has been redeemed
offerPrice number 1000.00
auction array

Make NFT offer

需要验证身份。

请求

POST /offer

请求参数

姓名 类型 价值 描述
nftId int 12345
price number 500.0

回复

See /nft/{nftId}

Buy NFT

需要验证身份。

请求

POST /buy

请求参数

姓名 类型 价值 描述
nftId int 12345
price number 500.0

回复

See /nft/{nftId}

Create Auction

需要验证身份。

请求

POST /auction

请求参数

姓名 类型 价值 描述
initialPrice number 120.0
reservationPrice number 500.0
duration int 3600 duration in seconds

回复

See /nft/{nftId}

Edit Auction

需要验证身份。

请求

POST /edit_auction

请求参数

姓名 类型 价值 描述
reservationPrice number 600.0

回复

See /nft/{nftId}

Cancel Auction

需要验证身份。

请求

POST /cancel_auction

请求参数

姓名 类型 价值 描述
nftId number 12345
reservationPrice number 500.0

回复

See /nft/{nftId}

Get bids

需要验证身份。

请求

GET /bids

回复

See /nfts

Place bid

需要验证身份。

请求

POST /bids

请求参数

姓名 类型 价值 描述
nftId number 12345
price number 500.0

回复

See /nft/{nftId}

Get NFT deposits

需要验证身份。

Supports pagination

请求

GET /deposits

请求参数

姓名 类型 价值 描述
start_time number 1559881511 optional
end_time number 1559881711 optional

回复

  {
    "success": true,
    "result": [
      {
        "id": 999899,
        "nft": {
          See /nfts,
        },
        "status": "confirmed",
        "time": "2021-06-10T09:15:43.136561+00:00",
        "sentTime": "2021-06-11T07:23:24.106062+00:00",
        "confirmedTime": "2021-06-11T07:27:40.237006+00:00",
        "confirmations": 8,

      }, {
        "id": 777877,
        .....
      },
    ]
  }

回复格式

姓名 类型 价值 描述
id int 999899
nft array See List NFTs for details
status string confirmed one of: unconfirmed, confirmed, cancelled
time string 2021-06-10T09:15:43.136561+00:00 NFT created at
sentTime string 2021-06-11T07:23:24.106062+00:00
confirmedTime string 2021-06-11T07:27:40.237006+00:00
confirmations int 8

Get NFT withdrawals

需要验证身份。

Supports pagination

请求

GET /withdrawals

请求参数

姓名 类型 价值 描述
start_time number 1559881511 optional
end_time number 1559881711 optional

回复

  {
    "success": true,
    "result": [
      {
        "id": 12345,
        "nft": {
          See /nfts,
        },
        "address": "0x014Dc156cA770baC5475186834ecd2f624C990K",
        "method": "erc20",
        "txid": "0x8078356ae4b06a036d64747546c274af19581f1c78c510b60505798a7ffcaf1",
        "fee": "20.0",
        "status": "sent",
        "time": "2021-06-11T07:23:24.106062+00:00",
        "notes": null
      }, {
        "id": 45678,
        .....
      },
    ]
  }

回复格式

姓名 类型 价值 描述
id number 12345
nft array See List NFTs for details
address string 0x014Dc156cA770baC5475186834ecd2f624C990K
method string erc20 erc20 or sol
txid string 0x8078356ae4b06a036d64747546c274af19581f1c78c510b60505798a7ffcaf1
fee number 20.0
status string confirmed one of: requested, processing, sent, completed, cancelled
time string 2021-06-11T07:23:24.106062+00:00
notes string null

Get NFT fills

需要验证身份。

Supports pagination

请求

GET /fills

请求参数

姓名 类型 价值 描述
start_time number 1559881511 optional
end_time number 1559881711 optional

回复

  {
    "success": true,
    "result": [
      {
        "id": 12345,
        "nft": {
          See /nfts,
        },
        "side": "buy",
        "price": 150.0,
        "fee": 7.5,
        "time": "2021-06-11T07:23:24.106062+00:00"
      }, {
        "id": 45678,
        .....
      },
    ]
  }

回复格式

姓名 类型 价值 描述
id number 12345
nft array See List NFTs for details
side string buy trade price of NFT
price number 150.0
fee number 7.5
time string 2021-06-09T15:39:15.364317+00:00

Redeem NFT

需要验证身份。

请求

POST /redeem

请求参数

姓名 类型 价值 描述
nftId number 12345
address string
notes string

回复

 {
    "success": true,
    "result": {
        "id": 12345,
        "nft": {
          See /nfts,
        },
        "time": "2021-06-11T07:23:24.106062+00:00",
        "notes": null
        "address": "0x014Dc156cA770baC5475186834ecd2f624C990K",
        "status": "redeemed",
        "supportTicketId": 1014
      }
  }

回复格式

姓名 类型 价值 描述
id number 12345
nft array See List NFTs for details
time string 2021-06-09T15:39:15.364317+00:00
notes string null
address string 0x014Dc156cA770baC5475186834ecd2f624C990K
status string confirmed one of: requested, pending_review, processing, sent, complete, cancelled, failed
supportTicketId int 1014 id of associated support ticket

需要验证身份。

请求

GET /gallery/{gallery_id}

请求参数

姓名 类型 价值 描述
gallery_id number 12345 NFT gallery id

回复

  {
    "success": true
    "result": {
      "name": "My-Awesome-NFTs",
      "nfts": [
        See /nfts
      ]
    }
  }

回复格式

姓名 类型 价值 描述
name string My-Awesome-NFTs name of NFT gallery
nfts array See List NFTs

需要验证身份。

请求

GET /gallery_settings

回复

  {
    "success": true
    "result": {
      "id": 888789,
      "public": true
    }
  }

回复格式

姓名 类型 价值 描述
id number 888789 NFT gallery id
public boolean true true if NFT gallery is public

需要验证身份。

请求

POST /gallery_settings

请求参数

姓名 类型 价值 描述
public boolean true set NFT gallery public or private

FTX Pay

Get app details and payments

请求

GET /ftxpay/apps/<int:user_specific_id>/details

Get the details of an FTXPay app, along with a list of payments to that app.

Note that user_specific_id is the id of this app specific to your account as a merchant.

It is the ID you see in your URL when you visit an FTXPay app-related pages; e.g. if you look at your app by visiting ftx.com/pay/apps/2, you would supply 2 as the user_specific_id to fetch its details via API.

The below parameters are optional, and are used for filtering

姓名 类型 价值 描述
start_time number 1559881511 optional; only fetch payments created after this time
end_time number 1559901511 optional; only fetch payments created before this time
limit number 100 optional; default 200, maximum 500

Supports pagination

回复

{
  "success": true,
  "result": [
    {
        "id": 1031,
        "name": "Hot dog stand",
        "email": "[email protected]",
        "userSpecificId": 2,
        "acceptedCoin": "ETH",
        "withdrawalAddress": "0x8bb861C4650a0D9fDc83a6792CE3F882F5B8e56e",
        "withdrawalWallet": "erc20",
        "withdrawalPeriod": 24,
        "disabled": false,
        "deleted": false,
        "createdAt": "2021-04-19T22:52:33.919391+00:00",
        "totalValue": 384.94232204,
        "numPayments": 2,
        "payments": [
         {
            "id": 6124443,
            "feeSize": 0.0002,
            "netSize": 0.0198,
            "tipSize": 0,
            "coin": "ETH",
            "createdAt": "2021-04-23T08:42:14.933361+00:00",
            "memo": "153126",
            "notes": "Payment for delicious hot dogs"
            "senderEmail": "[email protected]"
        },
        {
            "id": 6239120,
            "feeSize": 0.0017,
            "netSize": 0.1485,
            "tipSize": 0.0223,
            "coin": "ETH",
            "createdAt": "2021-04-24T10:33:14.034661+00:00",
            "memo": "934110",
            "notes": "Catering",
            "senderEmail": "[email protected]"
        },
      ]
    }
  ]
}

Response format for app

姓名 类型 价值 描述
id number 1031 internal ID, unique across users
name number Hot dog stand
email string [email protected] optional; email to receive confirmations
userSpecificId number 2 user-specific ID, unique for a single user
acceptedCoin string ETH optional; coin that all payments must be in
withdrawalAddress string 0x8bb861C4650a0D9fD... optional; address to auto-withdraw funds to
withdrawalWallet string erc20 optional; wallet type for auto-withdrawal
withdrawalPeriod number 24 optional; auto-withdrawal period (in hours)
disabled boolean false
deleted boolean false
createdAt string 2021-04-19T22:52:33.919391+00:00 time the app was created
totalValue number 384.94232204 total value of all fetched payments
numPayments number 2 quantity of fetched payments

Response format for payment

姓名 类型 价值 描述
id number 6239120 unique ID of payment
feeSize number 0.0017 amount of the fee
netSize number 0.1485 amount received
tipSize number 0.0223 amount tipped (in addition to netSize)
coin string ETH
createdAt string 2021-04-24T10:33:14.034661+00:00 time of the payment
memo string 934110 optional; payer-provided info for payment identification
notes string Catering optional; payer-provided notes
senderEmail string [email protected] email of the sender

Create order

You can pre-register an order, specifying its size and currency, and track its status. When you supply an ID identifying the order to an FTX Pay popup, completion of the payment will also update the status of the order.

To supply an ID, the link you should send payers to (or spawn in a popup for them) is: https://ftx.us/pay/request?id=APP_ID&orderId=ORDER_ID or https://ftx.us/pay/request?id=APP_ID&clientOrderId=CLIENT_ORDER_ID

The below endpoint describes how to register an order, and the following one describes how to track your orders.

请求

POST /ftxpay/apps/<int:user_specific_id>/orders_by_usid
POST /ftxpay/apps/<int:app_id>/orders
{
  "coin": "USD",
  "notes": "Order for hot dog #11",
  "size": 12.0,
  "allowTip": true,
  "clientId": "my-client-id-12345"
}

回复

{
  "success": true,
  "result": {
    "id": 5,
    "coin": "USD",
    "notes": "Order for hot dog #11",
    "size": 12.0,
    "allowTip": true,
    "clientId": "my-client-id-12345"
    "status": "incomplete"
  }
}

需要验证身份。

净荷格式

姓名 类型 价值 描述
coin string USD the currency of the payment
notes string Order for hot dog #11 optional; notes about this order that are private to the merchant
size number 12.0 size of the desired payment
allowTip boolean true whether or not tips are allowed for the payment
clientId string my-client-id-12345 optional; ID for you to track the order with (must be unique to your FTX Pay pap)

回复格式

姓名 类型 价值 描述
id number 5 canonical ID of the order
coin string USD the currency of the payment
notes string Order for hot dog #11 optional; notes about this order that are private to the merchant
size number 12.0 size of the desired payment
allowTip boolean true whether or not tips are allowed for the payment
clientId string my-client-id-12345 optional; ID for you to track the order with (must be unique to your FTX Pay pap)
status string incomplete "incomplete" or "complete"

Get orders

Supports pagination

请求

GET /ftxpay/apps/<int:user_specific_id>/orders_by_usid
GET /ftxpay/apps/<int:app_id>/orders

回复

{
  "success": true,
  "result": [
    {
      "id": 5,
      "clientOrderId": "my-client-id-12345",
      "coin": "USD",
      "size": 12.0,
      "allowTip": true,
      "status": "complete",
      "notes": "Order for hot dog #11",
      "payment": {
        "id": 3,
        "feeSize": 0.14,
        "netSize": 11.88,
        "tipSize": 1.78,
        "coin": "USD",
        "createdAt": "2021-07-14T22:27:11.041873+00:00",
        "memo": "",
        "notes": ""
      }
    }
  ]
}

需要验证身份。

回复格式

姓名 类型 价值 描述
id number 5 canonical ID of the order
coin string USD the currency of the payment
notes string Order for hot dog #11 optional; notes about this order that are private to the merchant
size number 12.0 size of the desired payment
allowTip boolean true whether or not tips are allowed for the payment
clientId string my-client-id-12345 optional; ID for you to track the order with (must be unique to your FTX Pay pap)
status string complete "incomplete" or "complete"
payment dict payment object; null if a payment is incomplete

Get single client order

请求

GET /ftxpay/apps/<int:user_specific_id>/<int:order_id>/single_order_by_usid
GET /ftxpay/apps/<int:app_id>/<int:order_id>/single_order

回复

{
  "success": true,
  "result":
    {
      "id": 5,
      "clientOrderId": "my-client-id-12345",
      "coin": "USD",
      "size": 12.0,
      "allowTip": true,
      "status": "complete",
      "notes": "Order for hot dog #11",
      "payment": {
        "id": 3,
        "feeSize": 0.14,
        "netSize": 11.88,
        "tipSize": 1.78,
        "coin": "USD",
        "createdAt": "2021-07-14T22:27:11.041873+00:00",
        "memo": "",
        "notes": ""
      }
    }
}

需要验证身份。

回复格式

姓名 类型 价值 描述
id number 5 canonical ID of the order
coin string USD the currency of the payment
notes string Order for hot dog #11 optional; notes about this order that are private to the merchant
size number 12.0 size of the desired payment
allowTip boolean true whether or not tips are allowed for the payment
clientId string my-client-id-12345 optional; ID for you to track the order with (must be unique to your FTX Pay pap)
status string complete "incomplete" or "complete"
payment dict payment object; null if a payment is incomplete

Cancel order

Cancels an order, preventing it from being filled by a future FTX Pay payment. Can only be used on orders that have not already been filled or cancelled.

请求

DELETE /ftxpay/apps/<int:user_specific_id>/<int:order_id>/orders_by_usid
DELETE /ftxpay/apps/<int:app_id>/<int:order_id>/orders

回复

{
  "success": true,
}

Return payment

You can return a payment by specifying your app ID and the payment ID. The amount paid to you (including the tip, but without the fee that was already applied) will be returned to the payer. You may optionally specify an amount between 0 and the full amount of the payment less the fee to be returned instead.

请求

POST /ftxpay/<int:app_id>/<int:payment_id>/return
{
  "size": "9.9"
}

回复

{
  "success": true,
  "result": null
}

需要验证身份。

净荷格式

姓名 类型 价值 描述
size number 9.9 optional; amount of the payment to return (if left unspecified, defaults to the full amount)

Reserve address

By specifying an order and associated app, you may request that a wallet address be reserved for the purpose of completing an FTX Pay payment by sending cryptocurrency from an external wallet. The wallet address will be reserved for 6 hours. If the currency associated with the order is different from the coin specified in the request, we will additionally return a quote, which will be automatically accepted upon receipt of the payment (and used to convert to the currency requested by the merchant).

请求

POST /ftxpay/apps/<int:app_id>/<int:order_id>/orders/reserve_address
{
  "reservedAddressWallet": "erc20",
  "coin": "ETH",
  "email": "[email protected]",
}

回复

{
  "quote": {
    "id": 61334404,
    "baseCoin": "ETH",
    "quoteCoin": "USD",
    "side": "sell",
    "fromCoin": "ETH",
    "toCoin": "USD",
    "cost": 0.0035,
    "proceeds": 10.0,
    "price": 2857.14285714,
    "filled": "false",
    "expired": "false",
    "expiry": 1632995813,
  }
  "address": "0x8bb861C4650a0D9fDc83a6792CE3F882F5B8e56e"
}

需要验证身份。

净荷格式

姓名 类型 价值 描述
reservedAddressWallet string erc20 The wallet used by the cryptocurrency payment (erc20, btc, sol, doge, ltc, or bch)
coin string ETH The coin sent in the cryptocurrency payment
email string [email protected] optional; the email address of the payer, used for recovery of unused funds

回复格式

姓名 类型 价值 描述
id number 61334404 canonical ID of the quote
baseCoin string ETH the primary currency of the quote
quoteCoin string USD the secondary currency of the quote
side string sell "buy" if the quote is to buy the primary currency, otherwise "sell"
fromCoin string ETH the currency the payer is paying
toCoin string USD the currency the merchant is receiving
cost number 0.0035 the amount of the fromCoin paid by the payer
proceeds number 10.0 the amount of the toCoin received by the merchant (before fees)
price number 2857.14285714 the price of the primary currency in terms of the secondary currency
filled boolean false whether or not the quote has been used
expired boolean false whether or not the quote has expired
expiry integer 1632995813 the UNIX timestamp of the quote's expiry
address string 0x8bb861C4650a0D9fDc83a6792CE3F882F5B8e56e the address to which the payer must send the currency

Websocket updates

If you want to be informed about payments to your FTX Pay apps as soon as they happen, subscribe to the FTX Pay websocket channel.

Latency statistics

See latency statistics for a period of time and for one or all subaccounts.

days specifies the time period, from days days ago up to now - defaults to 1.

You can specify a subaccount by passing its nickname to subaccount_nickname, or specify the main account by using subaccount_nickname='_main'. Leaving this field blank will return results aggregated across all subaccounts.

请求

GET /stats/latency_stats?days={days}&subaccount_nickname={subaccount_nickname}

参数

姓名 类型 价值 描述
days int 5 Optional. Number of days in the past to check.
subaccount_nickname str '_main' Optional. Subaccount name to get stats for specific subaccount (or main).

回复格式

回复

{
  "success": true,
  "result": [
    {
      "bursty": true,
      "p50": 0.059,
      "requestCount": 43,
    },
    {
      "bursty": false,
      "p50": 0.047,
      "requestCount": 27
    },
  ]
}
姓名 类型 价值 描述
bursty boolean true Whether the orders are "bursty" (two or more orders sent from the same account simultaneously)
p50 number 0.059 50th-percentile latency experienced by your account in the last 24 hours
requestCount number 43 Number of orders placed by your account in the last 24 hours

Support tickets

Get all support tickets

Get all your support tickets (limit 100).

需要验证身份。

请求

GET /support/tickets

回复

{
  "success": true,
  "result": [
    {
      "id": 42,
      "title": "Support ticket for your GBP deposit",
      "time": "2021-07-14T22:27:11.041873+00:00",
      "category": "fiat deposit",
      "status": "open",
      "error": None,
      "fiatDeposit": {
        "id": 37,
        "coin": "GBP",
        "size": 12.34,
        "status": "complete",
        "time": "2021-07-13T22:27:11.041873+00:00",
        "confirmedTime": "2021-07-13T22:27:12.041873+00:00",
        "uploadedFile": None,
        "uploadedFileName": None,
        "cancelReason": None,
        "fiat": True,
        "ach": False,
        "type": "bank"
      },
      "depositHelpRequest": None,
      "autoExpireAt": None
    },
    {
      "id": 43,
      "title": "BUSD not arriving.",
      "time": "2021-07-15T22:27:11.041873+00:00",
      "category": "crypto deposit",
      "status": "open",
      "error": None,
      "fiatDeposit": None,
      "depositHelpRequest": {
        "id": 73,
        "coin": "BUSD",
        "wallet": "bsc",
        "txid": "0xd232f8a398c8ed84a4344ab0076a0af0735a30fab7698541bee96230274de13e",
        "size": None,
        "transactionTime": "2021-07-14T21:27:11.041873+00:00",
        "creditedSize": None
      },
      "autoExpireAt": None
    },
    {
      "id": 44,
      "title": "Help",
      "time": "2021-07-16T22:27:11.041873+00:00",
      "category": "other",
      "status": "closed",
      "error": None,
      "fiatDeposit": None,
      "depositHelpRequest": None,
      "autoExpireAt": None
    }
  ]
}

回复格式

姓名 类型 价值 描述
id number 42 Support ticket ID
title string "Support ticket for your GBP deposit" Support ticket title
time string "2021-07-14T22:27:11.041873+00:00" Support ticket creation time
category string "fiat deposit" Support ticket category
status string "open" Support ticket status
error string None Support ticket error; null if no error
fiatDeposit dict None Fiat deposit this support ticket relates to; null if not a fiat deposit ticket
depositHelpRequest dict None Deposit help request this support ticket relates to; null if not a crypto deposit ticket
autoExpireAt strong None Time at which the ticket expires; null by default

Get support ticket messages

View all messages for one support ticket. You can only view messages for support tickets for your account.

需要验证身份。

请求

GET /support/tickets/<int:ticket_id>/messages

回复

{
  "ticket": {
    "id": 44,
    "title": "Help",
    "time": "2021-07-16T22:27:11.041873+00:00",
    "category": "other",
    "status": "closed",
    "error": None,
    "fiatDeposit": None,
    "depositHelpRequest": None,
    "autoExpireAt": None
  },
  "messages": [
    {
      "id": 164,
      "message": "I need help.",
      "uploadedFileName": None,
      "authorIsCustomer": True,
      "time": "2021-07-16T22:27:11.041873+00:00"
    },
    {
      "id": 173,
      "message": "Can you elaborate?",
      "uploadedFileName": None,
      "authorIsCustomer": False,
      "time": "2021-07-16T22:47:11.041873+00:00"
    },
    {
      "id": 189,
      "message": "I don't know where to find the FTX API documentation.",
      "authorIsCustomer": True,
      "time": "2021-07-16T23:27:11.041873+00:00"
    },
    {
      "id": 191,
      "message": "You can find it at https://docs.ftx.com/.",
      "authorIsCustomer": False,
      "time": "2021-07-16T23:29:11.041873+00:00"
    },
    {
      "id": 201,
      "message": "Great, thank you!",
      "authorIsCustomer": True,
      "time": "2021-07-16T23:30:11.041873+00:00"
    }
  ]
}

参数

姓名 类型 价值 描述
ticket_id int 42 ID of the support ticket you want to view

回复格式

姓名 类型 价值 描述
ticket dict Ticket object (see above)
messages list List of message objects (see below)

Message object format

姓名 类型 价值 描述
id number 164 Message ID
message string "I need help." Content of the message
uploadedFileName string None File attached to the message; null if no such file
authorIsCustomer bool True True if the author of the message is the customer, false if the author is one of our support team members
time string "2021-07-16T23:30:11.041873+00:00" The time at which the message was sent

Send a support message

Send a new message to one of your support tickets. Note that there is a limit of 100 messages per ticket.

需要验证身份。

请求

POST /support/tickets
{
  "title": "Help",
  "category": "other",
  "message": "I need help."
}

回复

{
  "success": true,
  "result": null
}

净荷格式

姓名 类型 价值 描述
title string "Help" Title of your new support ticket.
category string "other" Category for your new support ticket.
message string "I need help." Initial message for your new support ticket.
fiatDepositId int None Optional. ID of the fiat deposit relating to your new support ticket.

Send a support message

Send a new message to one of your support tickets. Note that there is a limit of 100 messages per ticket.

需要验证身份。

请求

POST /support/tickets/<int:ticket_id>/messages
{
  "message": "Thank you."
}

回复

{
  "success": true,
  "result": null
}

净荷格式

姓名 类型 价值 描述
ticket_id int 44 The ID of the ticket you want to send to.
message string "Thank you." The message you want to send.

Update the status of your support ticket

需要验证身份。

请求

POST /support/tickets/<int:ticket_id>/status
{
  "status": "closed"
}

回复

{
  "success": true,
  "result": null
}

净荷格式

姓名 类型 价值 描述
ticket_id int 44 The ID of the ticket you want to update.
status string "closed" "closed" to close an open support ticket and "open" to reopen a closed one.

Count total number of unread support messages

Returns the total number of unread messages across all your support tickets.

需要验证身份。

请求

GET /support/tickets/count_unread

回复

{
  "success": true,
  "result": 42
}

Mark support messages read

Marks all support messages for the given ticket as read.

需要验证身份。

请求

GET /support/tickets/<int:ticket_id>/mark_as_read

回复

{
  "success": true,
  "result": null
}

Websocket API

Streaming API,包含最新的市场和账户挂单数据。 使用此 API,您可以将消息发送到服务器并收到以事件为基础的回复,无需轮询服务器获得回复。

Websocket 端点网址:wss://ftx.us/ws/

使用 JSON 发起请求和回复。

您可以在此找到示例代码:https://github.com/ftexchange/ftx

请求流程

Websocket connections go through the following lifecycle:

请求格式

Messages sent to the server should contain the following dictionary items:

回复格式

-“频道” -“市场” -“类型”:消息的类型 -“错误”:发生错误时显示。 当“类型”为“错误”时,还会有“代码”和“消息”字段。 “代码”采用标准 HTTP 错误代码值。 -“已订阅”:表示成功订阅了频道和市场。 -“已取消订阅”:表示成功取消频道和市场订阅。 -“信息”:用于向用户传达信息。 附带“代码”和“消息”字段。 - 服务器重新启动时,您可能会看到一条代码为“20001”的“信息”消息。 如果您看到此消息,请重新连接。 -“部分”:包含当前市场数据的快照。 数据快照可以在随附的“数据”字段中找到。 -“更新”:包含有关当前市场数据的更新。 更新可在随附的“数据”字段中找到。 -“代码”(可选) -“消息”(可选) -“数据”(可选)

公有市场行情接口

代号

The ticker channel provides the latest best bid and offer market data. All messages are updates (update), and the data field contains: - bid: Best bid price if a bid exists, else null - ask: Best ask price if an ask exists, else null - last: Last trade price if it exists, else null - time: Timestamp

市场

The markets channel provides information on the full set of tradable markets and their specifications. After subscription and once per minute, you will receive a partial message with information on all markets. If there are updates to markets (listings, delistings, or changes to specs), you will be notified through update messages. The data field both types of messages will contain a list of market information dictionaries, each of which contains:

交易

The trades channel provides data on all trades in the market. All messages are updates of new trades (update) and the data field contains: - price: Price of the trade - size: Size of the trade - side: Side of the taker in the trade - liquidation: true if the trade involved a liquidation order, else false - time: Timestamp

委托簿

“盘口”查询提供盘口双边最优的100报价的数据。

初始快照

订阅后,您将收到委托簿(“部分”)的快照,其中包含“数据”字段,其中包含:

-“操作”:“部分“ -“买入” -“卖出” -“校验和”:见下方 -“时间”:时间戳

“买入”和“卖出”的格式如下:“[[最佳价格,该价格数额大小],[下一个最佳价格,该价格数额大小],...]”

更新

收到您的快照后,将会向您流式传输更新(消息“类型”为“更新”),“数据”字段带有:

-“操作”:“更新” -“买入” -“卖出” -“校验和”:见下方 -“时间”:时间戳

“买入”和“卖出”字段包含对委托簿的更新。

校验和

每条消息都包含来自委托簿的已签名 32 位整数校验和。 您可以在客户端上得到相同的校验和

私有接口

身份验证

您可以通过发送类似 %{code} 的消息登录

{
  "args": {
    "key": "<api_key>",
    "sign": "<signature>",
    "time": "<ts>"
  },
  "op": "login"
}

As an example, if:

sign would be d10b5a67a1a941ae9463a60b285ae845cdeac1b11edc7da9977bef0228b96de9

一个 websocket 连接最多可登录一名用户。 如果连接已通过身份验证,再次尝试登录会导致 400 错误。

执行

您很快将收到消息:

{
  "channel": "fills",
  "data": {
    "fee": 78.05799225,
    "feeRate": 0.0014,
    "id": 7828307,
    "liquidity": "taker",
    "market": "BTC/USD",
    "orderId": 38065410,
    "tradeId": 19129310,
    "price": 3723.75,
    "side": "buy",
    "size": 14.973,
    "time": "2019-05-07T16:40:58.358438+00:00",
    "type": "order"
  },
  "type": "update"
}

该频道将向所有市场流式传输您的执行价 您可以在经过身份验证的连接上发送 {'op': 'subscribe', 'channel': 'fills'} 进行订阅。

买卖盘

您很快将收到消息:

{
  "channel": "orders",
  "data": {
    "id": 24852229,
    "clientId": null,
    "market": "BTC/USD",
    "type": "limit",
    "side": "buy",
    "size": 42353.0,
    "price": 0.2977,
    "reduceOnly": false,
    "ioc": false,
    "postOnly": false,
    "status": "closed",
    "filledSize": 0.0,
    "remainingSize": 0.0,
    "avgFillPrice": 0.2978
  },
  "type": "update"
}

此频道可为您在所有市场中的挂单流式传输更新。 您可以在经过身份验证的连接上发送 {'op': 'subscribe', 'channel': 'orders'} 进行订阅。

FTX Pay

You will receive messages like so:

{
  "channel": "ftxpay",
  "data": {
    "app": app object,
    "payment": payment object,
    "status": "paid"
  },
  "type": "update"
}

This channel streams updates for each completed payment and each returned payment. You can subscribe to it on an authenticated connection by sending {'op': 'subscribe', 'channel': 'ftxpay'}.

The app and payment object formats can be seen here.

FIX API

FIX (Financial Information eXchange) is a standard electronic messaging protocol which can be used to place orders, receive order updates and executions, and cancel orders. Our FIX api is based on the FIX 4.2 specification and modeled after FIX implementations of other popular cryptocurrency exchanges.

You can find sample client code here: https://github.com/ftexchange/ftx

FIX endpoint URL: tcp+ssl://fix.ftx.us:4363

Clients should connect to the endpoint using SSL.

Sequence numbers are reset for each connection. Resend request and sequence reset messages are not supported.

消息

8=FIX.4.2|9=162|35=A|49=zyfvB4QPg0A3kkVgqUE9V1fOA-Y6jhdG3seqIIZx|56=FTXUS

所有信息都应该包含以下header: 这个文档使用“|”表示FIX的修改字段分隔符(byte 0x01)。真实的信息中,它可以被 0x01替换。

标签 姓名 示例 描述
8 BeginString FIX.4.2 Must be set to "FIX.4.2"
9 BodyLength 162 Length of the message body in bytes
35 MsgType 8 Message type
49 SenderCompID zyfvB4QPg0A3kkVgqUE9V1fOA-Y6jhdG3seqIIZx Client API key (for messages from the client)
56 TargetCompID FTXUS Must be set to "FTXUS" (for messages from the client)
34=1|52=20190525-07:17:48

消息还应包括序列号 MsgSeqNum (34) 和时间戳 SendingTime (52)。 序列号从 1 开始,必须随每条消息递增。 序列号重复或 不正确的邮件将被拒收。 序列号会在新连接重置。

Logon (A)

由客户端发送用于发起 FIX 会话。 必须在连接 建立后首先发送该消息。 每个连接只能建立一个会话;其他登录消息会 被拒收。

请求

8=FIX.4.2|9=162|35=A|49=zyfvB4QPg0A3kkVgqUE9V1fOA-Y6jhdG3seqIIZx|56=FTXUS|34=1|52=20190525-07:51:51|98=0|108=30|96=8f7e7d37f8033ad249c1833687c230b6f4663f0dd72752899776bab9aa064783|10=237|
标签 姓名 示例 描述
35 MsgType A
98 EncryptMethod 0 Must be set to "0" (None)
108 HeartBInt 30 Must be set to "30"
96 RawData 8f7e...4783 Signature (see below)
8013 CancelOrdersOnDisconnect Y "Y": all account orders will be cancelled at the end of the session. "S": all orders placed during the session will be cancelled at the end of the session. Default: no orders will be cancelled.
1 Account "my_subaccount" Optional subaccount name; can be omitted if authenticating for main account

签名

from datetime import datetime
import hmac

api_key = 'YOUR_API_KEY'
api_secret = 'YOUR_API_SECRET'

sending_time = datetime.now().strftime('%Y%m%d-%H:%M:%S')

sign_target = '\x01'.join([
    sending_time,  # SendingTime
    'A',  # MsgType
    '1',  # MsgSeqNum
    api_key,  # SenderCompID
    'FTXUS',  # TargetCompID
])

signature = hmac.new(api_secret.encode(), sign_target.encode(), 'sha256').hexdigest()

let crypto = require('crypto');

let apiKey = 'YOUR_API_KEY';
let apiSecret = 'YOUR_API_SECRET';

let sendingTime = '20190525-07:51:51';

let signTarget = [
    sendingTime,  // SendingTime
    'A',  // MsgType
    '1',  // MsgSeqNum
    apiKey,  // SenderCompID
    'FTXUS',  // TargetCompID
].join('\x01');

let hmac = crypto.createHmac('sha256', apiSecret);
let signature = hmac.update(signTarget).digest('hex');

为了安全起见,登录消息必须由客户端签名。 要计算签名,请连接 以下字段,由 FIX 字段分隔符(字节 0x01)连接,并计算 SHA256 HMAC 使用 API 密钥:

生成的哈希应该为十六进制编码。








回复

8=FIX.4.2|9=98|35=A|49=FTXUS|56=zyfvB4QPg0A3kkVgqUE9V1fOA-Y6jhdG3seqIIZx|34=1|98=0|108=30|52=20190525-07:51:51.838|10=099
Tag Name Value
35 MsgType A
98 EncryptMethod 0
108 HeartBInt 30

Heartbeat (0)

如果过去 30 秒内未收到消息,则由任一方发送。 也应发送 用于回复 TestRequest (1)(测试请求)。

8=FIX.4.2|9=86|35=1|49=zyfvB4QPg0A3kkVgqUE9V1fOA-Y6jhdG3seqIIZx|56=FTXUS|34=2|52=20190525-07:52:24.029|10=049|
Tag Name Value Description
35 MsgType 0
112 TestReqID 123 If this heartbeat is in response to a TestRequest, copied from the TestRequest.

测试请求 (1)

可由任何一方随时发送。

8=FIX.4.2|9=112|35=1|49=zyfvB4QPg0A3kkVgqUE9V1fOA-Y6jhdG3seqIIZx|56=FTXUS|34=3|112=20190525-08:26:38.989|52=20190525-08:26:38.989|10=140|
Tag Name Value Description
35 MsgType 1
112 TestReqID 123 Arbitrary string, to be echoed back by a Heartbeat.

Logout (5)

由任何一方发送用于终止会话。 另一方应再发送一条“退出” 消息以确认会话终止。 连接将随后关闭。

Tag Name Value
35 MsgType 5

New Order Single (D)

客户发送以提交新订单。 FIX API当前仅支持限价单。

Tag Name Value Description
35 MsgType D
21 HandlInst 1 Must be set to "1" (AutomatedExecutionNoIntervention)
11 ClOrdID order123 Arbituary client-selected string to identify the order; must be unique
55 Symbol BTC/USD Symbol name
40 OrdType 2 Must be set to "2" (Limit)
38 OrderQty 1.1 Order size in base units
44 Price 8000 Limit price
54 Side 1 "1": buy; "2": sell
59 TimeInForce 1 Must be set to "1" (Good Till Cancel) or "3" (Immediate or Cancel)
18 ExecInst E This paramter is optional. "E": reduce only, "6": post only, not supplied: standard

If the order is accepted, an ExecutionReport (8) with ExecType=A (Pending New) will be returned. Otherwise, an ExecutionReport with ExecType=8 (Rejected) will be returned.

Order Cancel Request (F)

由客户发送用于请求撤单。

Tag Name Value Description
35 MsgType F
37 OrderID 123456 System-assigned order ID of the order
41 OrigClOrdID order123 Client-assigned order ID of the order

Only one of OrderID (37) and OrigClOrdID (41) should be provided.

If the order is successfully cancelled, an ExecutionReport (8) with ExecType=6 (Pending Cancel) will be returned. Otherwise, an OrderCancelReject (9) will be returned.

Order Cancel Reject (9)

服务器向客户端通知 OrderCancelRequest (F),即撤单请求失败。

Tag Name Value Description
35 MsgType 9
11 ClOrdID cancel123 Copied from OrderCancelRequest
37 OrderID 123456 Copied from OrderCancelRequest
41 OrigClOrdID order123 Copied from OrderCancelRequest
39 OrdStatus 4 "4" (Canceled) if the order was already cancelled
102 CxlRejReason 1 "0": order already cancelled, "1": unknown order
434 CxlRejResponseTo 1 Always set to "1"

Mass Order Cancel Request (q)

Sent by the server in response to a Mass Order Cancel Request (q)

Tag Name Value Description
35 MsgType q
530 MassCancelRequestType 7 7 for cancelling all orders on all markets, 1 for cancelling all orders on a specific market
11 ClOrdID order123 optional; client-assigned ID for mass order cancellation request
55 Symbol BTC/USD optional; symbol name. This field is is required if MassCancelRequestType is set to 1, and ignored otherwise

A Mass Order Cancel Report (r) will be returned to the client.

Mass Order Cancel Report (r)

Sent by the server in response to a Mass Order Cancel Request (q)

Tag Name Value Description
35 MsgType r
530 MassCancelRequestType 7 the MassCancelRequestType of the corresponding Mass Order Cancel Request
11 ClOrdID order123 optional; the ClOrdID of the corresponding Mass Order Cancel Request. Omitted if no ClOrdID was supplied.
531 MassCancelResponse 0 if the request was rejected, otherwise set to the MassCancelRequestType of the corresponding Mass Order Cancel Request
532 MssCancelRejectReason optional; 0 if the market specified in the Mass Order Cancel Request was unknown

Order Status Request (H)

由客户发送用于请求挂单状态。

Tag Name Value Description
35 MsgType H
37 OrderID 123456 OrderID of the order to request, or "*" to request all pending orders
41 OrigClOrdID order123 Client-assigned order ID of the order
20000 IncludeFillInfo N If Y, server will include fill info

The server will respond with an ExecutionReport (8) with ExecType=I (OrderStatus) with the requested order or orders. Only one of OrderID (37) and OrigClOrdID (41) should be provided. When there are no open orders, the server will include Text (58) of "No open orders".

IncludeFillInfo包含的其他字段(20000 = Y):

Tag Name Value Description
1362 NoFills 1 Number of fills for this order

以下字段包含零次或多次,每次填充一次:

Tag Name Value Description
1363 FillExecID 23436 Fill ID
1364 FillPx 10.1 Fill price
1365 FillQty 6.32 Fill quantity
1366 FillTradeID 101293 Fill trade ID. This will be shared by the fill corresponding to the other side of the trade.
1367 FillTime 20200219-08:33:26.513 Fill time
1443 FillLiquidityInd 2 1 for maker, 2 for taker
20100 FeeRate 0.0007 Fees paid on the fill, in percent
20101 Fee 0.0446824 Fees paid on the fill, in USD

Execution Report (8)

由服务器在下列情况发送:挂单已执行、挂单变更或 回复来自客户端的 NewOrderSingle (D)(新下单)、OrderCancelRequest (F)(撤单请求)、或 OrderStatusRequest (H)(挂单状态请求) 消息。

Tag Name Value Description
35 MsgType 8
11 ClOrdID order123 Client-selected order ID.
37 OrderID 123456 Server-assigned order ID
17 ExecID d840c87b-ad98-47b1-95d3-4d41950fa776 unique execution ID. Equal to Fill ID if this message was the result of a fill
55 Symbol BTC/SD Symbol name
54 Side 1 "1": buy; "2": sell
38 OrderQty 1.2 Original order quantity
44 Price 8000 Original order price
150 ExecType 1 Reason for this message (see below)
39 OrdStatus 0 Order status (see below)
14 CumQty 0.4 Quantity of order that has already been filled
151 LeavesQty 0.8 Quantity of order that is still open
84 CxlQty 0.0 Quantity cancelled by self-trade prevention. Only present if the cancelled quantity is greater than zero
60 TransactTime 20190525-08:26:38.989 Time of the order update. Only present on order updates
31 LastPx 7999.25 Fill price. Only present if this message was the result of a fill
32 LastQty 0.4 Fill quantity. Only present if this message was the result of a fill
1057 AggressorIndicator Y "Y": taker fill; "N": maker fill. Only present if this message was the result of a fill
1366 FillTradeID 101293 Fill trade ID. Only present if this message was the result of a fill
6 AvgPx 7999.25 Average fill price for all fills in order. Only present if this message was the result of a fill
12 Commission 0.0067307233000000 Fee for trade in USD for Futures, quote currency for Spot. Only present if this message was the result of a fill
13 CommType 3 Always 3 (absolute)
103 OrdRejReason 3 Reason the order was rejected (see below). Only present on rejected NewOrderSingle (D) requests
58 Text 58 Description of the reason the order was rejected (e.g., Too many requests). Only present on rejected NewOrderSingle (D) requests

ExecType values

ExecType (150)(执行类型)字段表明发送此 ExecutionReport(执行报告)的原因。

ExecType Description
0 New order
1 New fill for order
3 Order done (fully filled)
4 Order cancelled
5 Order resized (possible for reduce-only orders)
A Response to a successful NewOrderSingle (D) request
8 Response to a rejected NewOrderSingle (D) request
6 Response to a successful OrderCancelRequest (F) request
I Response to a OrderStatusRequest (H) request

Note that every fill will generate a new ExecType=1 message. If a fill causes an order to be fully filled, both a ExecType=1 message and a ExecType=3 message will be generated. Similarly, a newly placed order that is immediately matched against an opposing order will generate both a ExecType=0 message and a ExecType=1 message.

OrdStatus values

OrdStatus Description
A Pending order
0 New order
1 Partially filled order
3 Fully filled order
4 Cancelled order
5 Resized order
6 Pending cancel

OrdRejReason values

OrdRejReason Description
3 Risk limits exceeded
99 Too many requests
0 Other errors

Reject (3)

由服务器发送用于回复无效消息。

Tag Name Value Description
35 MsgType 3
45 RefSeqNum 2 Sequence number of the rejected message
371 RefTagID 38 Tag number of the rejected field
372 RefMsgType D Message type of the rejected message
58 Text Missing quantity Human-readable description of the reason for the rejection
373 SessionRejectReason 1 Code to identify the rejection reason (see below)

Rejection reason codes

SessionRejectReason Description
1 Required tag missing
5 Value incorrect for this tag
6 Incorrect data format for value
11 Invalid MsgType