Welcome to GateMT API. The APIv4 interface provides spot trading, including public interfaces to query market information, as well as private interfaces that require authentication to enable automated trading based on the API.
Scroll down for code samples, example requests and responses. Select a language for code samples from the tabs above or the mobile navigation menu.
REST API BaseURL:
https://api.gatemt.com/api/v4
Available SDK:
Besides API examples, some SDK provides an additional demo application. The demo application is a relatively complete example demonstrating how to use the SDK. It can be built and run separately. Refer to corresponding repository for details.
Previously(before April 2020) futures APIv4 key are separated from spot one, but this is no longer the case anymore. You can create multiple keys with each key having multiple permissions now. e.g. you can create one key with spot read/write and futures read/write permission which can be used in both spot and futures trading.
History API keys will not be affected by this improvement. Previous spot key and futures key are now one key with only spot permissions enabled, another only futures permission enabled. You can reconfigure their permissions after migration.
APIv4 is a standalone brand-new HTTP REST API, currently used in parallel with APIv2. APIv4 provides complete trading operations, with more highly secured authentication method. What's more, APIv4 specification is written following OpenAPI Specification (opens new window). SDKs and documents are all generated from the same spec, which ensures consistency between documents and implementation.
The ways APIv4 and APIv2 differ are:
Which one to choose:
In order to further improve the platform's opening depth and trading liquidity, we will recruit institutional market makers in an open and transparent way, and provide a professional market maker's service rate scheme for professional institutional market makers according to their contribution to the platform's liquidity.
Provide the above content and submit to mm@gate.io , we will accept within 3 working days.
TIP
Vip11 and above need to open GT deduction in the personal center to enjoy the professional market rate.
If you have any questions or suggestions during the use, you can contact us in any of the following ways:
If you encounter API errors, it is recommended that you sort out the following content, so that we can quickly analyze the problem for you:
DANGER
Even if you submit a problem, you should not submit the API key information to customer service or others, otherwise there will be serious asset risk. If it has been accidentally leaked, please delete the existing API and rebuild it.
Gate.io Order matching follows Price Priority > Time priority principle.
Suppose that the order book is as follows:
Order | Order time | Ask/Selling price |
---|---|---|
A | 10:00 | 100 |
B | 10:00 | 102 |
C | 10:01 | 100 |
If the current price of 10:02 pays 102, the final transaction order is: A, C, B
A valid order sent to the matching engine is immediately confirmed and executed with existing orders, with the executing result sent back to the client.
If an order is fully executed, then it is closed. If any part of the order is not executed
immediately, orders with TimeInForce set to IOC
will be cancelled, while others will be appended
to the price list, waiting for subsequent filling or being cancelled.
Gate.io data center is located in AWS Japan's ap-northeast-1 region.
API Classification | Category Links | Overview |
---|---|---|
host + /api/v4/spot/* | Spot Trading | Including currency status, market information, order, transaction records and other functions |
GET
method. They accept only request parameters. No request body will be
read.DELETE
methods remove resources(like orders), but not all removing operation using DELETE
,
as DELETE
s don't read request body either. For complex removing operations, POST
method is
used with parameters filled in request body.POST
, PUT
or PATCH
method. Their parameters are either in body or
request parameters for different endpoints. Refer to endpoint detail for how to send the request.2xx
on success. 401
is returned on authentication
failure. Other 4xx
codes mean the request is malformed. 5xx
means the server encounter some
critical error on processing the request. Commit issues if 5xx
is met.All time related fields are unix timestamp in seconds if no extra note, but they may differ in formats(int64, number or string). Possible values like the following may be returned:
The best way to handle time fields is parsing them as a number with decimal places. If higher precision is not needed, you can safely cast them to integer(or long). Our SDKs listed above has already taken proper deserialization to handle them
Pagination is achieved using one of the following method
page-limit
limit-offset
In both method, limit
limits the maximum number of records returned in one request. If no
additional explanation, it defaults to 100
if not provided and its maximum value is limited
to 1000
.
page
starts from 1
, mimicking common paging used in web pages. To iterate the whole list, use
the same limit
and increment page
by 1
until the records' length is shorter than the
limit
offset
starts from 0
, behaving like common DB search. To iterate the whole list, increment
offset
by limit
until the records' length is shorter than the limit
.
For example, if the total number of orders is 201. Using page-limit method, send request parameters like the following:
page=1&limit=100
page=2&limit=100
page=3&limit=100
Using limit-offset method, send request parameters like:
limit=100&offset=0
limit=100&offset=100
limit=100&offset=200
Some endpoints may return additional pagination metadata. If present, they are sent back through the
response header. Take GET /spot/orders
as an example, following headers will be
returned
X-Pagination-Limit
: request limitX-Pagination-Offset
: request offsetX-Pagination-Total
: total record number satisfying the requestMarkets | Endpoints | Limits | Based On | Include |
---|---|---|---|---|
Spot | Public endpoints | 900r/s | IP | Order book, Candlesticks, trading pairs, etc. |
Private endpoints | 900r/s | API Key | Trading history, fee rate, etc. | |
Place orders | 10r/s | User ID and trading pair | Placing(bulk) orders, margin trade,etc. | |
Cancel orders | 5000r/s | User ID | Canceling(all) orders, etc. | |
Wallet | All endpoints | 200r/s | API Key | Deposit and withdrawal history, transfer etc. |
Withdrawal | Withdraw | 1r/3s | User ID | Withdraw |
The rate limit is counted against each sub-account or main account.
WebSocket:
NOTICE:
When repeatedly violating rate limits, it depends on
All API responses are in JSON format, and users need to transform and extract data by themselves.
The HTTP status code 2XX will be returned when all operations are successful. 401 indicates that there is a problem with the certification. Other 4xx status codes indicate that the request is invalid. If it is a 5xx error, the server has encountered an unknown serious error when processing the request. Please give feedback as soon as possible。
Return Status
Status Code | Description |
---|---|
200/201 | Request succeeded |
202 | Request accepted by the server, but processing is not done yet |
204 | Request succeeded, but the server doesn't return body |
400 | Invalid request |
401 | Authentication failed |
404 | Not Found |
5xx | Server Error |
Type | Description |
---|---|
string | String type, in double quotation marks. Price and amount are also formatted in string format |
integer | 32-bit integer,Mainly related to status codes, size, times, etc. |
integer(int64) | 64-bit integer,Mainly involves ID and higher precision timestamp |
float | Floating point number. Some time and stat fields use float. |
object | Object,Contains a child object{} |
array | List,Includes multiple groups of content |
boolean | true is true,false is false |
The spot trading of the portfolio margin account is almost the same as the classic account, except
that cross_margin
must be specified in the account
parameter when placing orders. For example,
if you want to place a buy order for the BTC_USDT
currency pair, the order request will be similar
to
POST /spot/orders
{
"currency_pair": "BTC_USDT",
"account": "cross_margin",
"side": "buy",
...
}
For other related restrictions, please refer to the document of the API endpoint directly.
TIP
It should be noted that the portfolio margin account is upgraded from the classic account's cross-margin account. The API Key of the classic account originally supports the operation of the cross-margin account. In order not to affect the existing operations of the classic account, we still retain this function of the classic account. So whether it is the API Key of the classic account or the portfolio margin account.
It is allowed to set an X-Client-Request-Id header in the request, and the API will also carry this header in the response. You can use this field to locate the corresponding request that the API responds to, which is convenient for users to set the request id for tracking.
Self-Trade Prevention: STP will prevent any user's orders from being matched with each other.
CN: Cancel new, Cancel new orders and keep old ones.
CO: Cancel old, Cancel old orders and keep new ones.
CB: Cancel both, Both old and new orders will be cancelled.
We support three STP strategies, which are CN
, CO
and CB
.
STP is achieved by adding users to one STP trading group.
When a user in a STP group place orders, and trading could happen with existing orders of users in the same group, orders will be cancelled.
The prevention strategy depends on the stp_act
parameter specified when placing the order as taker.
If not specified, the CN
strategy will be used by default.
A user has to be added to a STP trading group before using STP.
When a user does not belong to any STP trading group, and place orders with the stp_act
parameter, the orders will be rejected.
Take placing spot order as an example:
POST /spot/{settle}/orders
New request body parameter:
Name | Position | Type | Required | Description |
---|---|---|---|---|
stp_act | body | string | No | STP Strategies, including: - cn - co - cb |
New response fields:
Name | Type | Required | Restriction | Description |
---|---|---|---|---|
stp_act | string | No | none | STP Strategies, including: - cn - co - cb |
stp_id | integer(int64) | No | readonly | The ID of the STP trading group to which user belongs. |
finish_as | string | No | readonly | order finish type: - stp: The order has been canceled due to the STP |
There are multiple accounts under Organization A
, and the IDs of several accounts are 101
, 102
, and 103
In order to prevent self-trading of orders placed by internal accounts of the organization, the administrator created a STP trading group with group ID 100
,
and added accounts 101
and 102
to the STP trading group.
In this case, the members in the group are [101,102]
.
T1: The STP
strategy version released.
T2: After the organization A
account 101
places a short order, there is no matching order in the market order book to match the transaction.
At this time, the role of the order is maker
, and the order status is open
.
The key response fields returned are:
{
"status":"open",
"stp_act":"cn",
"stp_id":100
}
T3: Organization A
account 101
/102
places a long order, and it can reach a trade with account 101’s short order.
The match engine finds both two orders' stp_id are 100, so it applies the STP strategy of the taker order, which defaults to cn
, and cancels the long order.
Order's finish_as
will be set to stp
.
The key response fields returned are:
{
"status":"finished",
"stp_act":"cn",
"stp_id":100,
"finish_as":"stp"
}
If stp_act
is co
, the order placed by taker
will be retained, the order status will be open
,
and the system will cancel the order of maker
.
If stp_act
is cb
, both the long and short orders will be cancelled. Orders' finish_as
will be set to stp
.
The key response fields returned are:
{
"status":"finished",
"stp_act":"cb",
"stp_id":100,
"finish_as":"stp"
}
T3': If account 103 places a long order, and it can reach a trade with account 101’s short order, the transaction will be made since account 103 has not been added to account 101’s STP group. The key response fields returned are:
{
"status":"finished",
"stp_id":0,
"finish_as":"filled"
}
For all abnormal requests, APIv4 will return non-2xx status code, with a response body in JSON format to explain the error.
The error response body follows a format like:
{
"label": "INVALID_PARAM_VALUE",
"message": "Invalid parameter `text` with value: abc"
}
label
: denotes error type in string
format. Its value are chosen from a certain list(see
below).
Programs can use label
to identify and catch a specific error.message
(or detail
): detailed error message. A longer explanation showing why the error is
generated
or how to avoid it. Its purpose is helping to better understand the API. Error handling
mechanism with this field is highly NOT recommended.Take Python requests (opens new window) for example, error handling can be written like:
Following examples only deal with business-related errors. Network timeout or other common errors need to be handled separately:
import requests
r = requests.get("https://api.gatemt.com/api/v4/futures/btc/contracts/BTC_USD")
try:
r.raise_for_status()
except requests.HTTPError:
# catch 2xx errors, parse error message in body, and do something based on `label`
if r.json()['label'] == 'xxx':
print(r.json())
or with Python SDK (opens new window):
import json
from gate_api import FuturesApi
from gate_api.rest import ApiException
api = FuturesApi()
try:
api.get_futures_contract(settle='btc', contract="BTC_USD")
except ApiException as e: # ApiException wraps whole error information, see implementation for details
detail = json.loads(e.value.body)
if detail['label'] == 'xxx':
print(detail)
label
listlabel | Meaning |
---|---|
INVALID_PARAM_VALUE | Invalid parameter value |
INVALID_PROTOCOL | Invalid parameter value |
INVALID_ARGUMENT | Invalid argument |
INVALID_REQUEST_BODY | Invalid request body |
MISSING_REQUIRED_PARAM | Missing required parameter |
BAD_REQUEST | Invalid request |
INVALID_CONTENT_TYPE | Invalid Content-Type header |
NOT_ACCEPTABLE | Invalid Accept- Header |
METHOD_NOT_ALLOWED | Request method is not allowed |
NOT_FOUND | Request URL not exists |
label | Meaning |
---|---|
INVALID_CREDENTIALS | Invalid credentials provided |
INVALID_KEY | Invalid API Key |
IP_FORBIDDEN | Request IP not in whitelist |
READ_ONLY | API key is read-only |
INVALID_SIGNATURE | Invalid signature |
MISSING_REQUIRED_HEADER | Missing required authentication header |
REQUEST_EXPIRED | Request Timestamp is far from the server time |
ACCOUNT_LOCKED | Account is locked |
FORBIDDEN | Account has no permission to request operation |
label | Meaning |
---|---|
SUB_ACCOUNT_NOT_FOUND | Sub account not found |
SUB_ACCOUNT_LOCKED | Sub account is locked |
MARGIN_BALANCE_EXCEPTION | Abnormal margin account |
MARGIN_TRANSFER_FAILED | Failed to transfer with margin account |
TOO_MUCH_FUTURES_AVAILABLE | Futures balance exceeds max allowed |
FUTURES_BALANCE_NOT_ENOUGH | Futures balance not enough |
ACCOUNT_EXCEPTION | Abnormal account |
SUB_ACCOUNT_TRANSFER_FAILED | Failed to transfer with sub account |
ADDRESS_NOT_USED | Address never being used in web console |
TOO_FAST | Withdrawing request exceeds frequency limit |
WITHDRAWAL_OVER_LIMIT | Withdrawal limit exceeded |
API_WITHDRAW_DISABLED | API withdrawal operation is disabled temporarily |
INVALID_WITHDRAW_ID | Invalid withdraw ID |
INVALID_WITHDRAW_CANCEL_STATUS | Cancelling withdrawal not allowed with current status |
label | Meaning |
---|---|
INVALID_PRECISION | Invalid precision |
INVALID_CURRENCY | Invalid currency |
INVALID_CURRENCY_PAIR | Invalid currency pair |
POC_FILL_IMMEDIATELY | Order would match and take immediately so it's cancelled |
ORDER_NOT_FOUND | Order not found |
ORDER_CLOSED | Order already closed |
ORDER_CANCELLED | Order already cancelled |
QUANTITY_NOT_ENOUGH | Amount is not enough |
BALANCE_NOT_ENOUGH | Balance is not enough |
MARGIN_NOT_SUPPORTED | Request currency pair doesn't provide margin trading |
MARGIN_BALANCE_NOT_ENOUGH | Margin balance is not enough |
AMOUNT_TOO_LITTLE | Amount does not reach minimum required |
AMOUNT_TOO_MUCH | Amount exceeds maximum allowed |
REPEATED_CREATION | Repeated creation |
LOAN_NOT_FOUND | Margin loan is not found |
LOAN_RECORD_NOT_FOUND | Margin loan record is not found |
NO_MATCHED_LOAN | No loan can match request borrow requirement |
NOT_MERGEABLE | Request loans cannot be merged |
NO_CHANGE | No change is made |
REPAY_TOO_MUCH | Repay more than required |
TOO_MANY_CURRENCY_PAIRS | Too many currency pairs in batch orders creation |
TOO_MANY_ORDERS | Too many orders in one currency pair in batch orders creation |
MIXED_ACCOUNT_TYPE | More than one account type is used in batch orders creation |
AUTO_BORROW_TOO_MUCH | Auto borrow exceeds maximum allowed |
TRADE_RESTRICTED | Trading is restricted due to high debt ratio |
FOK_NOT_FILL | FOK order cannot be filled completely |
INITIAL_MARGIN_TOO_LOW | User's total initial margin rate is too low |
NO_MERGEABLE_ORDERS | Orders can be merged not found |
ORDER_BOOK_NOT_FOUND | Insufficient liquidity |
FAILED_RETRIEVE_ASSETS | Failed to retrieve account assets |
label | Meaning |
---|---|
INTERNAL | Internal server error |
SERVER_ERROR | Internal server error |
TOO_BUSY | Server is too busy at the moment |
Before calling the private API interface, the API key of the account needs to be generated to verify the identity. You can log in on the website and generate it in [account management] - > [APIv4 keys], or click here to generate API keys.
Each account can create 20 API keys, and the permission configuration of each key is independent of each other. It is recommended to set a note name for each key to indicate its purpose.
Key
Access Key
Secret Key
The key used for signature authentication encryption
Besides, you can attach an IP whitelist, which requires the server only accept requests from specified IPs. Each key can have at most 20 IPs formatted in IPv4(not supporting IP range though). If IP whitelist is not set, the server will skip client IP validation.
Each user can create at most 5 keys with separate permissions. It is recommended to set a name for key denoting how the key will be used.
TIP
Note: If the key is named with spot
, then it could be the default name after
APIv4 migration. For details refer to About APIv4 key improvement section
Created key can also be updated or deleted, but any modification(s) can take up to 5 minutes to take effect.
When creating a Key, you can configure whether to enable spot, margin, contract, wallet, or withdrawal permissions for the Key, and whether to enable read-write or read-only permissions.
Products | Permissions |
---|---|
spot/margin | Read-only query orders Read-write query orders & place orders |
wallet | Read-only Query for withdrawal transfer records Read-write Query for account records & fund transfers |
withdrawal | Read-only Query cash withdrawal records Read-write Query cash withdrawal records & withdrawals |
All GET
operations are read requests, while others are write requests. Each permission group can
be set to disabled, read-only or read-write.
Please note that even though withdrawal API has only one operation(i.e.
POST /withdrawals
), for general concern, it is still separated from wallet API into a standalone
permission group, while withdrawal history retrieving API stays inside wallet operations(
i.e., GET /wallet/withdrawals
).
KEY
to the key.Timestamp
to current time formatted in Unix time in seconds. Pay
attention that the gap between its value and current time cannot exceed 60 seconds.SIGN
to encrypted request signature. Refer to next section for how signature
string is generated. Signature generation method is
HexEncode(HMAC_SHA512(secret, signature_string))
, i.e., the hexadecimal digest output of
HMAC-SHA512 with APIv4 secret as secret and signature string as message,In APIv4, signature string is concatenated as the following way:
Request Method + "\n" + Request URL + "\n" + Query String + "\n" + HexEncode(SHA512(Request Payload)) + "\n" + Timestamp
Request method in UPPERCASE, e.g. POST
, GET
Request url. Protocol, host and port are not included, e.g. /api/v4/spot/orders
Request query string without URL encode. query parameters order should be the
same as how they are concatenated in the request URL, e.g. status=finished&limit=50
. Use empty string("") if no query parameters.
Hash the request body with SHA512 and output its Hex encoded form. If no request body, use empty string's hashed result, i.e.
cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e
Timestamp
request header value.
Examples
Note: all example signature string are broken into multiple lines for displaying purpose only.
Only the \n
character in signature string is reserved in reality.
Suppose the key we used is key
, while the secret is secret
.
GET /api/v4/spot/orders?contract=BTC_USD&status=finished&limit=50 HTTP/1.1
Signature string:
GET\n
/api/v4/spot/orders\n
contract=BTC_USD&status=finished&limit=50\n
cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e\n
1541993715
Explanation:
/api/v4/futures/orders
: request urlcontract=BTC_USD&status=finished&limit=50
: keep the query string as it is in the request url1541993715
: Unix timestamp in secondsSignature generated
55f84ea195d6fe57ce62464daaa7c3c02fa9d1dde954e4c898289c9a2407a3d6fb3faf24deff16790d726b66ac9f74526668b13bd01029199cc4fcc522418b8a
POST /api/v4/futures/orders HTTP/1.1
{"contract":"BTC_USD","type":"limit","size":100,"price":6800,"time_in_force":"gtc"}
Signature string:
POST\n
/api/v4/futures/orders\n
\n
ad3c169203dc3026558f01b4df307641fa1fa361f086b2306658886d5708767b1854797c68d9e62fef2f991645aa82673622ebf417e091d0bd22bafe5d956cca\n
1541993715
Explanation:
Signature generated
eae42da914a590ddf727473aff25fc87d50b64783941061f47a3fdb92742541fc4c2c14017581b4199a1418d54471c269c03a38d788d802e2c306c37636389f0
# example authentication implementation in Python
"""
Python SDK is recommended as it has already implemented the authentication process for every API:
"""
import time
import hashlib
import hmac
import requests
import json
def gen_sign(method, url, query_string=None, payload_string=None):
key = '' # api_key
secret = '' # api_secret
t = time.time()
m = hashlib.sha512()
m.update((payload_string or "").encode('utf-8'))
hashed_payload = m.hexdigest()
s = '%s\n%s\n%s\n%s\n%s' % (method, url, query_string or "", hashed_payload, t)
sign = hmac.new(secret.encode('utf-8'), s.encode('utf-8'), hashlib.sha512).hexdigest()
return {'KEY': key, 'Timestamp': str(t), 'SIGN': sign}
if __name__ == "__main__":
host = "https://api.gatemt.com"
prefix = "/api/v4"
common_headers = {'Accept': 'application/json', 'Content-Type': 'application/json'}
url = '/futures/orders'
body = {"contract": "BTC_USD", "size": 100, "price": "30", "tif": "gtc"}
request_content = json.dumps(body)
sign_headers = gen_sign('POST', prefix + url, "", request_content)
sign_headers.update(common_headers)
print('signature headers: %s' % sign_headers)
res = requests.post(host + prefix + url, headers=sign_headers, data=request_content)
print(res.status_code)
print(res.content)
How to retrieve POST /wallet/transfers
history?
Records of transfers generated through POST /wallet/transfers
has multiple methods to be
retrieved based on account, including:
GET /margin/account_book
to retrieve transferals from or to margin account.GET /futures/{settle}/account_book?type=dnw
to retrieve perpetual contract account historyGET /delivery/{settle}/account_book?type=dnw
to retrieve delivery contract account historyHow to create margin orders?
Margin order creation has been merged into spot order APIs. In POST /spot/orders
or
POST /spot/batch_orders
, set account
to margin
to create margin orders.
Difference between sub account and main account
POST /wallet/sub_account_transfers
POST /withdrawals
I have other question(s) not covered above
Contact support for the issue. If the problem is related to one of the SDKs, you can also open an issue in the corresponding GitHub repository.
When submitting an issue, please include the following information to help identify the problem:
Spot trading
Code samples
# coding: utf-8
import requests
host = "https://api.gatemt.com"
prefix = "/api/v4"
headers = {'Accept': 'application/json', 'Content-Type': 'application/json'}
url = '/spot/currencies'
query_param = ''
r = requests.request('GET', host + prefix + url, headers=headers)
print(r.json())
curl -X GET https://api.gatemt.com/api/v4/spot/currencies \
-H 'Accept: application/json'
GET /spot/currencies
List all currencies' details
Currency has two forms:
<currency>_<chain>
, e.g., HT_ETH
The latter one occurs when one currency has multiple chains. Currency detail contains a chain
field whatever the form is. To retrieve all chains of one currency, you can use use all the details which has the name of the currency or name starting with <currency>_
.
Example responses
200 Response
[
{
"currency": "GT",
"delisted": false,
"withdraw_disabled": false,
"withdraw_delayed": false,
"deposit_disabled": false,
"trade_disabled": false,
"chain": "GT"
}
]
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK (opens new window) | List retrieved | [Inline] |
Status Code 200
Name | Type | Description |
---|---|---|
None | array | none |
» currency | string | Currency name |
» delisted | boolean | Whether currency is de-listed |
» withdraw_disabled | boolean | Whether currency's withdrawal is disabled |
» withdraw_delayed | boolean | Whether currency's withdrawal is delayed |
» deposit_disabled | boolean | Whether currency's deposit is disabled |
» trade_disabled | boolean | Whether currency's trading is disabled |
» fixed_rate | string | Fixed fee rate. Only for fixed rate currencies, not valid for normal currencies |
» chain | string | Chain of currency |
Code samples
# coding: utf-8
import requests
host = "https://api.gatemt.com"
prefix = "/api/v4"
headers = {'Accept': 'application/json', 'Content-Type': 'application/json'}
url = '/spot/currencies/GT'
query_param = ''
r = requests.request('GET', host + prefix + url, headers=headers)
print(r.json())
curl -X GET https://api.gatemt.com/api/v4/spot/currencies/GT \
-H 'Accept: application/json'
GET /spot/currencies/{currency}
Get details of a specific currency
Name | In | Type | Required | Description |
---|---|---|---|---|
currency | path | string | true | Currency name |
Example responses
200 Response
{
"currency": "GT",
"delisted": false,
"withdraw_disabled": false,
"withdraw_delayed": false,
"deposit_disabled": false,
"trade_disabled": false,
"chain": "GT"
}
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK (opens new window) | Successfully retrieved | Inline |
Status Code 200
Name | Type | Description |
---|---|---|
» currency | string | Currency name |
» delisted | boolean | Whether currency is de-listed |
» withdraw_disabled | boolean | Whether currency's withdrawal is disabled |
» withdraw_delayed | boolean | Whether currency's withdrawal is delayed |
» deposit_disabled | boolean | Whether currency's deposit is disabled |
» trade_disabled | boolean | Whether currency's trading is disabled |
» fixed_rate | string | Fixed fee rate. Only for fixed rate currencies, not valid for normal currencies |
» chain | string | Chain of currency |
Code samples
# coding: utf-8
import requests
host = "https://api.gatemt.com"
prefix = "/api/v4"
headers = {'Accept': 'application/json', 'Content-Type': 'application/json'}
url = '/spot/currency_pairs'
query_param = ''
r = requests.request('GET', host + prefix + url, headers=headers)
print(r.json())
curl -X GET https://api.gatemt.com/api/v4/spot/currency_pairs \
-H 'Accept: application/json'
GET /spot/currency_pairs
List all currency pairs supported
Example responses
200 Response
[
{
"id": "ETH_USDT",
"base": "ETH",
"quote": "USDT",
"fee": "0.2",
"min_base_amount": "0.001",
"min_quote_amount": "1.0",
"amount_precision": 3,
"precision": 6,
"trade_status": "tradable",
"sell_start": 1516378650,
"buy_start": 1516378650
}
]
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK (opens new window) | All currency pairs retrieved | [CurrencyPair] |
Code samples
# coding: utf-8
import requests
host = "https://api.gatemt.com"
prefix = "/api/v4"
headers = {'Accept': 'application/json', 'Content-Type': 'application/json'}
url = '/spot/currency_pairs/ETH_BTC'
query_param = ''
r = requests.request('GET', host + prefix + url, headers=headers)
print(r.json())
curl -X GET https://api.gatemt.com/api/v4/spot/currency_pairs/ETH_BTC \
-H 'Accept: application/json'
GET /spot/currency_pairs/{currency_pair}
Get details of a specifc currency pair
Name | In | Type | Required | Description |
---|---|---|---|---|
currency_pair | path | string | true | Currency pair |
Example responses
200 Response
{
"id": "ETH_USDT",
"base": "ETH",
"quote": "USDT",
"fee": "0.2",
"min_base_amount": "0.001",
"min_quote_amount": "1.0",
"amount_precision": 3,
"precision": 6,
"trade_status": "tradable",
"sell_start": 1516378650,
"buy_start": 1516378650
}
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK (opens new window) | Successfully retrieved | CurrencyPair |
Code samples
# coding: utf-8
import requests
host = "https://api.gatemt.com"
prefix = "/api/v4"
headers = {'Accept': 'application/json', 'Content-Type': 'application/json'}
url = '/spot/tickers'
query_param = ''
r = requests.request('GET', host + prefix + url, headers=headers)
print(r.json())
curl -X GET https://api.gatemt.com/api/v4/spot/tickers \
-H 'Accept: application/json'
GET /spot/tickers
Retrieve ticker information
Return only related data if currency_pair
is specified; otherwise return all of them
Name | In | Type | Required | Description |
---|---|---|---|---|
currency_pair | query | string | false | Currency pair |
timezone | query | string | false | Timezone |
Parameter | Value |
---|---|
timezone | utc0 |
timezone | utc8 |
timezone | all |
Example responses
200 Response
[
{
"currency_pair": "BTC3L_USDT",
"last": "2.46140352",
"lowest_ask": "2.477",
"highest_bid": "2.4606821",
"change_percentage": "-8.91",
"change_utc0": "-8.91",
"change_utc8": "-8.91",
"base_volume": "656614.0845820589",
"quote_volume": "1602221.66468375534639404191",
"high_24h": "2.7431",
"low_24h": "1.9863",
"etf_net_value": "2.46316141",
"etf_pre_net_value": "2.43201848",
"etf_pre_timestamp": 1611244800,
"etf_leverage": "2.2803019447281203"
}
]
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK (opens new window) | Successfully retrieved | [Inline] |
Status Code 200
Name | Type | Description |
---|---|---|
» currency_pair | string | Currency pair |
» last | string | Last trading price |
» lowest_ask | string | Recent lowest ask |
» highest_bid | string | Recent highest bid |
» change_percentage | string | Change percentage in the last 24h |
» change_utc0 | string | utc0 timezone, the percentage change in the last 24 hours |
» change_utc8 | string | utc8 timezone, the percentage change in the last 24 hours |
» base_volume | string | Base currency trade volume in the last 24h |
» quote_volume | string | Quote currency trade volume in the last 24h |
» high_24h | string | Highest price in 24h |
» low_24h | string | Lowest price in 24h |
» etf_net_value | string | ETF net value |
» etf_pre_net_value | string|null | ETF previous net value at re-balancing time |
» etf_pre_timestamp | integer(int64)|null | ETF previous re-balancing time |
» etf_leverage | string|null | ETF current leverage |
Code samples
# coding: utf-8
import requests
host = "https://api.gatemt.com"
prefix = "/api/v4"
headers = {'Accept': 'application/json', 'Content-Type': 'application/json'}
url = '/spot/order_book'
query_param = 'currency_pair=BTC_USDT'
r = requests.request('GET', host + prefix + url + "?" + query_param, headers=headers)
print(r.json())
curl -X GET https://api.gatemt.com/api/v4/spot/order_book?currency_pair=BTC_USDT \
-H 'Accept: application/json'
GET /spot/order_book
Retrieve order book
Order book will be sorted by price from high to low on bids; low to high on asks
Name | In | Type | Required | Description |
---|---|---|---|---|
currency_pair | query | string | true | Currency pair |
interval | query | string | false | Order depth. 0 means no aggregation is applied. default to 0 |
limit | query | integer | false | Maximum number of order depth data in asks or bids |
with_id | query | boolean | false | Return order book ID |
Example responses
200 Response
{
"id": 123456,
"current": 1623898993123,
"update": 1623898993121,
"asks": [
[
"1.52",
"1.151"
],
[
"1.53",
"1.218"
]
],
"bids": [
[
"1.17",
"201.863"
],
[
"1.16",
"725.464"
]
]
}
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK (opens new window) | Successfully retrieved | Inline |
Status Code 200
Name | Type | Description |
---|---|---|
» id | integer(int64) | Order book ID, which is updated whenever the order book is changed. Valid only when with_id is set to true |
» current | integer(int64) | The timestamp of the response data being generated (in milliseconds) |
» update | integer(int64) | The timestamp of when the orderbook last changed (in milliseconds) |
» asks | array | Asks order depth |
»» None | array | price and amount |
» bids | array | Bids order depth |
»» None | array | price and amount |
Code samples
# coding: utf-8
import requests
host = "https://api.gatemt.com"
prefix = "/api/v4"
headers = {'Accept': 'application/json', 'Content-Type': 'application/json'}
url = '/spot/trades'
query_param = 'currency_pair=BTC_USDT'
r = requests.request('GET', host + prefix + url + "?" + query_param, headers=headers)
print(r.json())
curl -X GET https://api.gatemt.com/api/v4/spot/trades?currency_pair=BTC_USDT \
-H 'Accept: application/json'
GET /spot/trades
Retrieve market trades
You can use from
and to
to query by time range, or use last_id
by scrolling page. The default behavior is by time range.
Scrolling query using last_id
is not recommended any more. If last_id
is specified, time range query parameters will be ignored.
Name | In | Type | Required | Description |
---|---|---|---|---|
currency_pair | query | string | true | Currency pair |
limit | query | integer(int32) | false | Maximum number of records to be returned in a single list. Default: 100, Minimum: 1, Maximum: 1000 |
last_id | query | string | false | Specify list staring point using the id of last record in previous list-query results |
reverse | query | boolean | false | Whether the id of records to be retrieved should be less than the last_id specified. Default to false. |
from | query | integer(int64) | false | Start timestamp of the query |
to | query | integer(int64) | false | Time range ending, default to current time |
page | query | integer | false | Page number |
reverse: Whether the id of records to be retrieved should be less than the last_id specified. Default to false.
When last_id
is specified. Set reverse
to true
to trace back trading history; false
to retrieve latest tradings.
No effect if last_id
is not specified.
Example responses
200 Response
[
{
"id": "1232893232",
"create_time": "1548000000",
"create_time_ms": "1548000000123.456",
"order_id": "4128442423",
"side": "buy",
"role": "maker",
"amount": "0.15",
"price": "0.03",
"fee": "0.0005",
"fee_currency": "ETH",
"point_fee": "0",
"gt_fee": "0"
}
]
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK (opens new window) | List retrieved | [Inline] |
Status Code 200
Name | Type | Description |
---|---|---|
None | array | none |
» id | string | Trade ID |
» create_time | string | Trading time |
» create_time_ms | string | Trading time, with millisecond precision |
» currency_pair | string | Currency pair |
» side | string | Order side |
» role | string | Trade role. No value in public endpoints |
» amount | string | Trade amount |
» price | string | Order price |
» order_id | string | Related order ID. No value in public endpoints |
» fee | string | Fee deducted. No value in public endpoints |
» fee_currency | string | Fee currency unit. No value in public endpoints |
» point_fee | string | Points used to deduct fee. No value in public endpoints |
» gt_fee | string | GT used to deduct fee. No value in public endpoints |
» amend_text | string | The custom data that the user remarked when amending the order |
Property | Value |
---|---|
side | buy |
side | sell |
role | taker |
role | maker |
Code samples
# coding: utf-8
import requests
host = "https://api.gatemt.com"
prefix = "/api/v4"
headers = {'Accept': 'application/json', 'Content-Type': 'application/json'}
url = '/spot/candlesticks'
query_param = 'currency_pair=BTC_USDT'
r = requests.request('GET', host + prefix + url + "?" + query_param, headers=headers)
print(r.json())
curl -X GET https://api.gatemt.com/api/v4/spot/candlesticks?currency_pair=BTC_USDT \
-H 'Accept: application/json'
GET /spot/candlesticks
Market candlesticks
Maximum of 1000 points can be returned in a query. Be sure not to exceed the limit when specifying from, to and interval
Name | In | Type | Required | Description |
---|---|---|---|---|
currency_pair | query | string | true | Currency pair |
limit | query | integer | false | Maximum recent data points to return. limit is conflicted with from and to . If either from or to is specified, request will be rejected. |
from | query | integer(int64) | false | Start time of candlesticks, formatted in Unix timestamp in seconds. |
to | query | integer(int64) | false | End time of candlesticks, formatted in Unix timestamp in seconds. Default to current time |
interval | query | string | false | Interval time between data points. Note that 30d means 1 natual month, not 30 days |
from: Start time of candlesticks, formatted in Unix timestamp in seconds.
Default toto - 100 * interval
if not specified
Parameter | Value |
---|---|
interval | 10s |
interval | 1m |
interval | 5m |
interval | 15m |
interval | 30m |
interval | 1h |
interval | 4h |
interval | 8h |
interval | 1d |
interval | 7d |
interval | 30d |
Example responses
200 Response
[
[
"1539852480",
"971519.677",
"0.0021724",
"0.0021922",
"0.0021724",
"0.0021737"
]
]
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK (opens new window) | Successfully retrieved | [[string]] |
Status Code 200
Name | Type | Description |
---|---|---|
» None | array | Candlestick data point detail. The array elements represent the following items respectively: - Unix timestamp in seconds - Quote currency trading volume - Close price - Highest price - Lowest price - Open price - Base currency trading amount |
Code samples
# coding: utf-8
import requests
import time
import hashlib
import hmac
host = "https://api.gatemt.com"
prefix = "/api/v4"
headers = {'Accept': 'application/json', 'Content-Type': 'application/json'}
url = '/spot/fee'
query_param = ''
# for `gen_sign` implementation, refer to section `Authentication` above
sign_headers = gen_sign('GET', prefix + url, query_param)
headers.update(sign_headers)
r = requests.request('GET', host + prefix + url, headers=headers)
print(r.json())
key="YOUR_API_KEY"
secret="YOUR_API_SECRET"
host="https://api.gatemt.com"
prefix="/api/v4"
method="GET"
url="/spot/fee"
query_param=""
body_param=''
timestamp=$(date +%s)
body_hash=$(printf "$body_param" | openssl sha512 | awk '{print $NF}')
sign_string="$method\n$prefix$url\n$query_param\n$body_hash\n$timestamp"
sign=$(printf "$sign_string" | openssl sha512 -hmac "$secret" | awk '{print $NF}')
full_url="$host$prefix$url"
curl -X $method $full_url \
-H "Timestamp: $timestamp" -H "KEY: $key" -H "SIGN: $sign"
GET /spot/fee
Query user trading fee rates
This API is deprecated in favour of new fee retrieving API /wallet/fee
.
Name | In | Type | Required | Description |
---|---|---|---|---|
currency_pair | query | string | false | Specify a currency pair to retrieve precise fee rate |
currency_pair: Specify a currency pair to retrieve precise fee rate
This field is optional. In most cases, the fee rate is identical among all currency pairs
Example responses
200 Response
{
"user_id": 10001,
"taker_fee": "0.002",
"maker_fee": "0.002",
"futures_taker_fee": "-0.00025",
"futures_maker_fee": "0.00075",
"gt_discount": false,
"gt_taker_fee": "0",
"gt_maker_fee": "0",
"loan_fee": "0.18",
"point_type": "1"
}
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK (opens new window) | Successfully retrieved | Inline |
Status Code 200
Name | Type | Description |
---|---|---|
» user_id | integer(int64) | User ID |
» taker_fee | string | taker fee rate |
» maker_fee | string | maker fee rate |
» gt_discount | boolean | If GT deduction is enabled |
» gt_taker_fee | string | Taker fee rate if using GT deduction. It will be 0 if GT deduction is disabled |
» gt_maker_fee | string | Maker fee rate if using GT deduction. It will be 0 if GT deduction is disabled |
» loan_fee | string | Loan fee rate of margin lending |
» point_type | string | Point type. 0 - Initial version. 1 - new version since 202009 |
» futures_taker_fee | string | Futures trading taker fee |
» futures_maker_fee | string | Future trading maker fee |
WARNING
To perform this operation, you must be authenticated by API key and secret
Code samples
# coding: utf-8
import requests
import time
import hashlib
import hmac
host = "https://api.gatemt.com"
prefix = "/api/v4"
headers = {'Accept': 'application/json', 'Content-Type': 'application/json'}
url = '/spot/batch_fee'
query_param = 'currency_pairs=BTC_USDT,ETH_USDT'
# for `gen_sign` implementation, refer to section `Authentication` above
sign_headers = gen_sign('GET', prefix + url, query_param)
headers.update(sign_headers)
r = requests.request('GET', host + prefix + url + "?" + query_param, headers=headers)
print(r.json())
key="YOUR_API_KEY"
secret="YOUR_API_SECRET"
host="https://api.gatemt.com"
prefix="/api/v4"
method="GET"
url="/spot/batch_fee"
query_param="currency_pairs=BTC_USDT,ETH_USDT"
body_param=''
timestamp=$(date +%s)
body_hash=$(printf "$body_param" | openssl sha512 | awk '{print $NF}')
sign_string="$method\n$prefix$url\n$query_param\n$body_hash\n$timestamp"
sign=$(printf "$sign_string" | openssl sha512 -hmac "$secret" | awk '{print $NF}')
full_url="$host$prefix$url?$query_param"
curl -X $method $full_url \
-H "Timestamp: $timestamp" -H "KEY: $key" -H "SIGN: $sign"
GET /spot/batch_fee
Query a batch of user trading fee rates
Name | In | Type | Required | Description |
---|---|---|---|---|
currency_pairs | query | string | true | A request can only query up to 50 currency pairs |
Example responses
200 Response
{
"BTC_USDT": {
"user_id": 10001,
"taker_fee": "0.002",
"maker_fee": "0.002",
"gt_discount": false,
"gt_taker_fee": "0",
"gt_maker_fee": "0",
"loan_fee": "0.18",
"point_type": "1",
"currency_pair": "BTC_USDT"
},
"GT_USDT": {
"user_id": 10001,
"taker_fee": "0.002",
"maker_fee": "0.002",
"gt_discount": false,
"gt_taker_fee": "0",
"gt_maker_fee": "0",
"loan_fee": "0.18",
"point_type": "1",
"currency_pair": "GT_USDT"
},
"ETH_USDT": {
"user_id": 10001,
"taker_fee": "0.002",
"maker_fee": "0.002",
"gt_discount": false,
"gt_taker_fee": "0",
"gt_maker_fee": "0",
"loan_fee": "0.18",
"point_type": "1",
"currency_pair": "ETH_USDT"
}
}
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK (opens new window) | Successfully retrieved | Inline |
Status Code 200
Name | Type | Description |
---|---|---|
» additionalProperties | object | none |
»» user_id | integer(int64) | User ID |
»» taker_fee | string | taker fee rate |
»» maker_fee | string | maker fee rate |
»» gt_discount | boolean | If GT deduction is enabled |
»» gt_taker_fee | string | Taker fee rate if using GT deduction. It will be 0 if GT deduction is disabled |
»» gt_maker_fee | string | Maker fee rate if using GT deduction. It will be 0 if GT deduction is disabled |
»» loan_fee | string | Loan fee rate of margin lending |
»» point_type | string | Point type. 0 - Initial version. 1 - new version since 202009 |
»» currency_pair | string | Currency pair |
WARNING
To perform this operation, you must be authenticated by API key and secret
Code samples
# coding: utf-8
import requests
import time
import hashlib
import hmac
host = "https://api.gatemt.com"
prefix = "/api/v4"
headers = {'Accept': 'application/json', 'Content-Type': 'application/json'}
url = '/spot/accounts'
query_param = ''
# for `gen_sign` implementation, refer to section `Authentication` above
sign_headers = gen_sign('GET', prefix + url, query_param)
headers.update(sign_headers)
r = requests.request('GET', host + prefix + url, headers=headers)
print(r.json())
key="YOUR_API_KEY"
secret="YOUR_API_SECRET"
host="https://api.gatemt.com"
prefix="/api/v4"
method="GET"
url="/spot/accounts"
query_param=""
body_param=''
timestamp=$(date +%s)
body_hash=$(printf "$body_param" | openssl sha512 | awk '{print $NF}')
sign_string="$method\n$prefix$url\n$query_param\n$body_hash\n$timestamp"
sign=$(printf "$sign_string" | openssl sha512 -hmac "$secret" | awk '{print $NF}')
full_url="$host$prefix$url"
curl -X $method $full_url \
-H "Timestamp: $timestamp" -H "KEY: $key" -H "SIGN: $sign"
GET /spot/accounts
List spot accounts
Name | In | Type | Required | Description |
---|---|---|---|---|
currency | query | string | false | Retrieve data of the specified currency |
Example responses
200 Response
[
{
"currency": "ETH",
"available": "968.8",
"locked": "0"
}
]
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK (opens new window) | List retrieved | [Inline] |
Status Code 200
Name | Type | Description |
---|---|---|
» currency | string | Currency detail |
» available | string | Available amount |
» locked | string | Locked amount, used in trading |
WARNING
To perform this operation, you must be authenticated by API key and secret
Code samples
# coding: utf-8
import requests
import time
import hashlib
import hmac
host = "https://api.gatemt.com"
prefix = "/api/v4"
headers = {'Accept': 'application/json', 'Content-Type': 'application/json'}
url = '/spot/batch_orders'
query_param = ''
body='[{"text":"t-123456","currency_pair":"ETH_BTC","type":"limit","account":"spot","side":"buy","iceberg":"0","amount":"1","price":"5.00032","time_in_force":"gtc","auto_borrow":false,"stp_act":"cn"}]'
# for `gen_sign` implementation, refer to section `Authentication` above
sign_headers = gen_sign('POST', prefix + url, query_param, body)
headers.update(sign_headers)
r = requests.request('POST', host + prefix + url, headers=headers, data=body)
print(r.json())
key="YOUR_API_KEY"
secret="YOUR_API_SECRET"
host="https://api.gatemt.com"
prefix="/api/v4"
method="POST"
url="/spot/batch_orders"
query_param=""
body_param='[{"text":"t-123456","currency_pair":"ETH_BTC","type":"limit","account":"spot","side":"buy","iceberg":"0","amount":"1","price":"5.00032","time_in_force":"gtc","auto_borrow":false,"stp_act":"cn"}]'
timestamp=$(date +%s)
body_hash=$(printf "$body_param" | openssl sha512 | awk '{print $NF}')
sign_string="$method\n$prefix$url\n$query_param\n$body_hash\n$timestamp"
sign=$(printf "$sign_string" | openssl sha512 -hmac "$secret" | awk '{print $NF}')
full_url="$host$prefix$url"
curl -X $method $full_url -d "$body_param" -H "Content-Type: application/json" \
-H "Timestamp: $timestamp" -H "KEY: $key" -H "SIGN: $sign"
POST /spot/batch_orders
Create a batch of orders
Batch orders requirements:
text
is requiredaccount
must be identical for all ordersBody parameter
[
{
"text": "t-123456",
"currency_pair": "ETH_BTC",
"type": "limit",
"account": "spot",
"side": "buy",
"iceberg": "0",
"amount": "1",
"price": "5.00032",
"time_in_force": "gtc",
"auto_borrow": false,
"stp_act": "cn"
}
]
Name | In | Type | Required | Description |
---|---|---|---|---|
body | body | array[Order] | true | none |
Example responses
200 Response
[
{
"text": "t-123456",
"succeeded": true,
"label": "",
"message": "",
"id": "12332324",
"create_time": "1548000000",
"update_time": "1548000100",
"create_time_ms": 1548000000123,
"update_time_ms": 1548000100123,
"currency_pair": "ETC_BTC",
"status": "cancelled",
"type": "limit",
"account": "spot",
"side": "buy",
"amount": "1",
"price": "5.00032",
"time_in_force": "gtc",
"iceberg": "0",
"left": "0.5",
"filled_total": "2.50016",
"fee": "0.005",
"fee_currency": "ETH",
"point_fee": "0",
"gt_fee": "0",
"gt_discount": false,
"rebated_fee": "0",
"rebated_fee_currency": "BTC",
"stp_act": "cn",
"finish_as": "stp",
"stp_id": 10240
}
]
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK (opens new window) | Request is completed | [Inline] |
Status Code 200
Name | Type | Description |
---|---|---|
» None | object | Batch order details |
»» text | string | User defined information. If not empty, must follow the rules below: 1. prefixed with t- 2. no longer than 28 bytes without t- prefix3. can only include 0-9, A-Z, a-z, underscore(_), hyphen(-) or dot(.) |
»» succeeded | boolean | Whether the batch of orders succeeded |
»» label | string | Error label, if any, otherwise an empty string |
»» message | string | Detailed error message, if any, otherwise an empty string |
»» id | string | Order ID |
»» create_time | string | Creation time of order |
»» update_time | string | Last modification time of order |
»» create_time_ms | integer(int64) | Creation time of order (in milliseconds) |
»» update_time_ms | integer(int64) | Last modification time of order (in milliseconds) |
»» status | string | Order status - open : to be filled- closed : filled- cancelled : cancelled |
»» currency_pair | string | Currency pair |
»» type | string | Order Type - limit : Limit Order - market : Market Order |
»» account | string | Account type. spot - use spot account; margin - use margin account; cross_margin - use cross margin account |
»» side | string | Order side |
»» amount | string | Trade amount |
»» price | string | Order price |
»» time_in_force | string | Time in force - gtc: GoodTillCancelled - ioc: ImmediateOrCancelled, taker only - poc: PendingOrCancelled, makes a post-only order that always enjoys a maker fee - fok: FillOrKill, fill either completely or none |
»» iceberg | string | Amount to display for the iceberg order. Null or 0 for normal orders. Hiding all amount is not supported. |
»» auto_repay | boolean | Enable or disable automatic repayment for automatic borrow loan generated by cross margin order. Default is disabled. Note that: 1. This field is only effective for cross margin orders. Margin account does not support setting auto repayment for orders. 2. auto_borrow and auto_repay cannot be both set to true in one order. |
»» left | string | Amount left to fill |
»» fill_price | string | Total filled in quote currency. Deprecated in favor of filled_total |
»» filled_total | string | Total filled in quote currency |
»» fee | string | Fee deducted |
»» fee_currency | string | Fee currency unit |
»» point_fee | string | Points used to deduct fee |
»» gt_fee | string | GT used to deduct fee |
»» gt_discount | boolean | Whether GT fee discount is used |
»» rebated_fee | string | Rebated fee |
»» rebated_fee_currency | string | Rebated fee currency unit |
»» stp_id | integer | Orders between users in the same stp_id group are not allowed to be self-traded1. If the stp_id of two orders being matched is non-zero and equal, they will not be executed. Instead, the corresponding strategy will be executed based on the stp_act of the taker.2. stp_id returns 0 by default for orders that have not been set for STP group |
»» stp_act | string | Self-Trading Prevention Action. Users can use this field to set self-trade prevetion strategies 1. After users join the STP Group , he can pass stp_act to limit the user's self-trade prevetion strategy. If stp_act is not passed, the default is cn strategy。2. When the user does not join the STP group , an error will be returned when passing the stp_act parameter。3. If stp_act parameter is not provided when placing a order, stp_act field of the order does not return。- cn: Cancel newest, Cancel new orders and keep old ones - co: Cancel oldest, Cancel old orders and keep new ones - cb: Cancel both, Both old and new orders will be cancelled |
»» finish_as | string | How the order was finished. - open: processing - filled: filled totally - cancelled: manually cancelled - ioc: time in force is IOC , finish immediately- stp: cancelled because self trade prevention |
Property | Value |
---|---|
status | open |
status | closed |
status | cancelled |
type | limit |
type | market |
account | spot |
account | margin |
account | cross_margin |
side | buy |
side | sell |
time_in_force | gtc |
time_in_force | ioc |
time_in_force | poc |
time_in_force | fok |
stp_act | cn |
stp_act | co |
stp_act | cb |
finish_as | open |
finish_as | filled |
finish_as | cancelled |
finish_as | ioc |
finish_as | stp |
WARNING
To perform this operation, you must be authenticated by API key and secret
Code samples
# coding: utf-8
import requests
import time
import hashlib
import hmac
host = "https://api.gatemt.com"
prefix = "/api/v4"
headers = {'Accept': 'application/json', 'Content-Type': 'application/json'}
url = '/spot/open_orders'
query_param = ''
# for `gen_sign` implementation, refer to section `Authentication` above
sign_headers = gen_sign('GET', prefix + url, query_param)
headers.update(sign_headers)
r = requests.request('GET', host + prefix + url, headers=headers)
print(r.json())
key="YOUR_API_KEY"
secret="YOUR_API_SECRET"
host="https://api.gatemt.com"
prefix="/api/v4"
method="GET"
url="/spot/open_orders"
query_param=""
body_param=''
timestamp=$(date +%s)
body_hash=$(printf "$body_param" | openssl sha512 | awk '{print $NF}')
sign_string="$method\n$prefix$url\n$query_param\n$body_hash\n$timestamp"
sign=$(printf "$sign_string" | openssl sha512 -hmac "$secret" | awk '{print $NF}')
full_url="$host$prefix$url"
curl -X $method $full_url \
-H "Timestamp: $timestamp" -H "KEY: $key" -H "SIGN: $sign"
GET /spot/open_orders
List all open orders
List open orders in all currency pairs.
Note that pagination parameters affect record number in each currency pair's open order list. No pagination is applied to the number of currency pairs returned. All currency pairs with open orders will be returned.
Spot and margin orders are returned by default. To list cross margin orders, account
must be set to cross_margin
Name | In | Type | Required | Description |
---|---|---|---|---|
page | query | integer | false | Page number |
limit | query | integer | false | Maximum number of records returned in one page in each currency pair |
account | query | string | false | Specify operation account. Default to spot and margin account if not specified. Set to cross_margin to operate against margin account. Portfolio margin account must set to cross_margin only |
Example responses
200 Response
[
{
"currency_pair": "ETH_BTC",
"total": 1,
"orders": [
{
"id": "12332324",
"text": "t-123456",
"create_time": "1548000000",
"update_time": "1548000100",
"currency_pair": "ETH_BTC",
"status": "open",
"type": "limit",
"account": "spot",
"side": "buy",
"amount": "1",
"price": "5.00032",
"time_in_force": "gtc",
"left": "0.5",
"filled_total": "2.50016",
"fee": "0.005",
"fee_currency": "ETH",
"point_fee": "0",
"gt_fee": "0",
"gt_discount": false,
"rebated_fee": "0",
"rebated_fee_currency": "BTC"
}
]
}
]
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK (opens new window) | List retrieved | [Inline] |
Status Code 200
Name | Type | Description |
---|---|---|
» currency_pair | string | Currency pair |
» total | integer | Total open orders in this currency pair |
» orders | array | none |
»» None | object | Spot order details |
»»» id | string | Order ID |
»»» text | string | User defined information. If not empty, must follow the rules below: 1. prefixed with t- 2. no longer than 28 bytes without t- prefix3. can only include 0-9, A-Z, a-z, underscore(_), hyphen(-) or dot(.) Besides user defined information, reserved contents are listed below, denoting how the order is created: - 101: from android - 102: from IOS - 103: from IPAD - 104: from webapp - 3: from web - 2: from apiv2 - apiv4: from apiv4 |
»»» amend_text | string | The custom data that the user remarked when amending the order |
»»» create_time | string | Creation time of order |
»»» update_time | string | Last modification time of order |
»»» create_time_ms | integer(int64) | Creation time of order (in milliseconds) |
»»» update_time_ms | integer(int64) | Last modification time of order (in milliseconds) |
»»» status | string | Order status - open : to be filled- closed : filled- cancelled : cancelled |
»»» currency_pair | string | Currency pair |
»»» type | string | Order Type - limit : Limit Order - market : Market Order |
»»» account | string | Account type. spot - use spot account; margin - use margin account; cross_margin - use cross margin account. Portfolio margin account must set to cross-margin |
»»» side | string | Order side |
»»» amount | string | When type is limit, it refers to base currency. For instance, BTC_USDT means BTC When type is market , it refers to different currency according to side - side : buy means quote currency, BTC_USDT means USDT - side : sell means base currency,BTC_USDT means BTC |
»»» price | string | Price can't be empty when type = limit |
»»» time_in_force | string | Time in force - gtc: GoodTillCancelled - ioc: ImmediateOrCancelled, taker only - poc: PendingOrCancelled, makes a post-only order that always enjoys a maker fee - fok: FillOrKill, fill either completely or none Only ioc and fok are supported when type =market |
»»» iceberg | string | Amount to display for the iceberg order. Null or 0 for normal orders. Hiding all amount is not supported. |
»»» auto_repay | boolean | Enable or disable automatic repayment for automatic borrow loan generated by cross margin order. Default is disabled. Note that: 1. This field is only effective for cross margin orders. Margin account does not support setting auto repayment for orders. 2. auto_borrow and auto_repay cannot be both set to true in one order. |
»»» left | string | Amount left to fill |
»»» fill_price | string | Total filled in quote currency. Deprecated in favor of filled_total |
»»» filled_total | string | Total filled in quote currency |
»»» avg_deal_price | string | Average fill price |
»»» fee | string | Fee deducted |
»»» fee_currency | string | Fee currency unit |
»»» point_fee | string | Points used to deduct fee |
»»» gt_fee | string | GT used to deduct fee |
»»» gt_maker_fee | string | GT used to deduct maker fee |
»»» gt_taker_fee | string | GT used to deduct taker fee |
»»» gt_discount | boolean | Whether GT fee discount is used |
»»» rebated_fee | string | Rebated fee |
»»» rebated_fee_currency | string | Rebated fee currency unit |
»»» stp_id | integer | Orders between users in the same stp_id group are not allowed to be self-traded1. If the stp_id of two orders being matched is non-zero and equal, they will not be executed. Instead, the corresponding strategy will be executed based on the stp_act of the taker.2. stp_id returns 0 by default for orders that have not been set for STP group |
»»» stp_act | string | Self-Trading Prevention Action. Users can use this field to set self-trade prevetion strategies 1. After users join the STP Group , he can pass stp_act to limit the user's self-trade prevetion strategy. If stp_act is not passed, the default is cn strategy。2. When the user does not join the STP group , an error will be returned when passing the stp_act parameter。3. If stp_act parameter is not provided when placing a order, stp_act field of the order does not return。- cn: Cancel newest, Cancel new orders and keep old ones - co: Cancel oldest, Cancel old orders and keep new ones - cb: Cancel both, Both old and new orders will be cancelled |
»»» finish_as | string | How the order was finished. - open: processing - filled: filled totally - cancelled: manually cancelled - ioc: time in force is IOC , finish immediately- stp: cancelled because self trade prevention |
Property | Value |
---|---|
status | open |
status | closed |
status | cancelled |
type | limit |
type | market |
account | spot |
account | margin |
account | cross_margin |
side | buy |
side | sell |
time_in_force | gtc |
time_in_force | ioc |
time_in_force | poc |
time_in_force | fok |
stp_act | cn |
stp_act | co |
stp_act | cb |
finish_as | open |
finish_as | filled |
finish_as | cancelled |
finish_as | ioc |
finish_as | stp |
WARNING
To perform this operation, you must be authenticated by API key and secret
Code samples
# coding: utf-8
import requests
import time
import hashlib
import hmac
host = "https://api.gatemt.com"
prefix = "/api/v4"
headers = {'Accept': 'application/json', 'Content-Type': 'application/json'}
url = '/spot/cross_liquidate_orders'
query_param = ''
body='{"currency_pair":"GT_USDT","amount":"12","price":"10.15","text":"t-34535"}'
# for `gen_sign` implementation, refer to section `Authentication` above
sign_headers = gen_sign('POST', prefix + url, query_param, body)
headers.update(sign_headers)
r = requests.request('POST', host + prefix + url, headers=headers, data=body)
print(r.json())
key="YOUR_API_KEY"
secret="YOUR_API_SECRET"
host="https://api.gatemt.com"
prefix="/api/v4"
method="POST"
url="/spot/cross_liquidate_orders"
query_param=""
body_param='{"currency_pair":"GT_USDT","amount":"12","price":"10.15","text":"t-34535"}'
timestamp=$(date +%s)
body_hash=$(printf "$body_param" | openssl sha512 | awk '{print $NF}')
sign_string="$method\n$prefix$url\n$query_param\n$body_hash\n$timestamp"
sign=$(printf "$sign_string" | openssl sha512 -hmac "$secret" | awk '{print $NF}')
full_url="$host$prefix$url"
curl -X $method $full_url -d "$body_param" -H "Content-Type: application/json" \
-H "Timestamp: $timestamp" -H "KEY: $key" -H "SIGN: $sign"
POST /spot/cross_liquidate_orders
close position when cross-currency is disabled
Currently, only cross-margin accounts are supported to close position when cross currencies are disabled. Maximum buy quantity = (unpaid principal and interest - currency balance - the amount of the currency in the order book) / 0.998
Body parameter
{
"currency_pair": "GT_USDT",
"amount": "12",
"price": "10.15",
"text": "t-34535"
}
Name | In | Type | Required | Description |
---|---|---|---|---|
body | body | object | true | none |
» text | body | string | false | User defined information. If not empty, must follow the rules below: |
» currency_pair | body | string | true | Currency pair |
» amount | body | string | true | Trade amount |
» price | body | string | true | Order price |
» text: User defined information. If not empty, must follow the rules below:
t-
t-
prefixExample responses
201 Response
{
"id": "12332324",
"text": "t-123456",
"create_time": "1548000000",
"update_time": "1548000100",
"create_time_ms": 1548000000123,
"update_time_ms": 1548000100123,
"currency_pair": "ETH_BTC",
"status": "cancelled",
"type": "limit",
"account": "spot",
"side": "buy",
"iceberg": "0",
"amount": "1",
"price": "5.00032",
"time_in_force": "gtc",
"left": "0.5",
"filled_total": "2.50016",
"avg_deal_price": "5.00032",
"fee": "0.005",
"fee_currency": "ETH",
"point_fee": "0",
"gt_fee": "0",
"gt_discount": false,
"rebated_fee": "0",
"rebated_fee_currency": "BTC",
"stp_act": "cn",
"finish_as": "stp",
"stp_id": 10240
}
Status | Meaning | Description | Schema |
---|---|---|---|
201 | Created (opens new window) | order created | Order |
WARNING
To perform this operation, you must be authenticated by API key and secret
Code samples
# coding: utf-8
import requests
import time
import hashlib
import hmac
host = "https://api.gatemt.com"
prefix = "/api/v4"
headers = {'Accept': 'application/json', 'Content-Type': 'application/json'}
url = '/spot/orders'
query_param = ''
body='{"text":"t-123456","currency_pair":"ETH_BTC","type":"limit","account":"spot","side":"buy","iceberg":"0","amount":"1","price":"5.00032","time_in_force":"gtc","auto_borrow":false,"stp_act":"cn"}'
# for `gen_sign` implementation, refer to section `Authentication` above
sign_headers = gen_sign('POST', prefix + url, query_param, body)
headers.update(sign_headers)
r = requests.request('POST', host + prefix + url, headers=headers, data=body)
print(r.json())
key="YOUR_API_KEY"
secret="YOUR_API_SECRET"
host="https://api.gatemt.com"
prefix="/api/v4"
method="POST"
url="/spot/orders"
query_param=""
body_param='{"text":"t-123456","currency_pair":"ETH_BTC","type":"limit","account":"spot","side":"buy","iceberg":"0","amount":"1","price":"5.00032","time_in_force":"gtc","auto_borrow":false,"stp_act":"cn"}'
timestamp=$(date +%s)
body_hash=$(printf "$body_param" | openssl sha512 | awk '{print $NF}')
sign_string="$method\n$prefix$url\n$query_param\n$body_hash\n$timestamp"
sign=$(printf "$sign_string" | openssl sha512 -hmac "$secret" | awk '{print $NF}')
full_url="$host$prefix$url"
curl -X $method $full_url -d "$body_param" -H "Content-Type: application/json" \
-H "Timestamp: $timestamp" -H "KEY: $key" -H "SIGN: $sign"
POST /spot/orders
Create an order
You can place orders with spot, margin or cross margin account through setting the account
field. It defaults to spot
, which means spot account is used to place orders.
When margin account is used, i.e., account
is margin
, auto_borrow
field can be set to true
to enable the server to borrow the amount lacked using POST /margin/loans
when your account's balance is not enough.
Whether margin orders' fill will be used to repay margin loans automatically is determined by the auto repayment setting in your margin account, which can be updated or queried using /margin/auto_repay
API.
When cross margin account is used, i.e., account
is cross_margin
, auto_borrow
can also be enabled to achieve borrowing the insufficient amount automatically if cross account's balance is not enough.
But it differs from margin account that automatic repayment is determined by order's auto_repay
field and only current order's fill will be used to repay cross margin loans.
Automatic repayment will be triggered when the order is finished, i.e., its status is either cancelled
or closed
.
Order status
An order waiting to be filled is open
, and it stays open
until it is filled totally. If fully filled, order is finished and its status turns to closed
.If the order is cancelled before it is totally filled, whether or not partially filled, its status is cancelled
.
Iceberg order
iceberg
field can be used to set the amount shown. Set to -1
to hide the order completely. Note that the hidden part's fee will be charged using taker's fee rate.
Self Trade Prevention
stp_act
to decide the strategy of self-trade prevention. For detailed usage, refer to the stp_act
parameter in request bodyBody parameter
{
"text": "t-123456",
"currency_pair": "ETH_BTC",
"type": "limit",
"account": "spot",
"side": "buy",
"iceberg": "0",
"amount": "1",
"price": "5.00032",
"time_in_force": "gtc",
"auto_borrow": false,
"stp_act": "cn"
}
Name | In | Type | Required | Description |
---|---|---|---|---|
body | body | Order | true | none |
» text | body | string | false | User defined information. If not empty, must follow the rules below: |
» currency_pair | body | string | true | Currency pair |
» type | body | string | false | Order Type |
» account | body | string | false | Account type. spot - use spot account; margin - use margin account; cross_margin - use cross margin account. Portfolio margin account must set to cross-margin |
» side | body | string | true | Order side |
» amount | body | string | true | When type is limit, it refers to base currency. For instance, BTC_USDT means BTC |
» price | body | string | false | Price can't be empty when type = limit |
» time_in_force | body | string | false | Time in force |
» iceberg | body | string | false | Amount to display for the iceberg order. Null or 0 for normal orders. Hiding all amount is not supported. |
» auto_borrow | body | boolean | false | Used in margin or cross margin trading to allow automatic loan of insufficient amount if balance is not enough. |
» auto_repay | body | boolean | false | Enable or disable automatic repayment for automatic borrow loan generated by cross margin order. Default is disabled. Note that: |
» stp_act | body | string | false | Self-Trading Prevention Action. Users can use this field to set self-trade prevetion strategies |
» text: User defined information. If not empty, must follow the rules below:
t-
t-
prefixBesides user defined information, reserved contents are listed below, denoting how the order is created:
» type: Order Type
» amount: When type
is limit, it refers to base currency. For instance, BTC_USDT
means BTC
When type
is market
, it refers to different currency according to side
side
: buy
means quote currency, BTC_USDT
means USDT
side
: sell
means base currency,BTC_USDT
means BTC
» time_in_force: Time in force
ioc
and fok
are supported when type
=market
» auto_repay: Enable or disable automatic repayment for automatic borrow loan generated by cross margin order. Default is disabled. Note that:
auto_borrow
and auto_repay
cannot be both set to true in one order.» stp_act: Self-Trading Prevention Action. Users can use this field to set self-trade prevetion strategies
STP Group
, he can pass stp_act
to limit the user's self-trade prevetion strategy. If stp_act
is not passed, the default is cn
strategy。STP group
, an error will be returned when passing the stp_act
parameter。stp_act
field of the order does not return。Parameter | Value |
---|---|
» type | limit |
» type | market |
» account | spot |
» account | margin |
» account | cross_margin |
» side | buy |
» side | sell |
» time_in_force | gtc |
» time_in_force | ioc |
» time_in_force | poc |
» time_in_force | fok |
» stp_act | cn |
» stp_act | co |
» stp_act | cb |
Example responses
201 Response
{
"id": "12332324",
"text": "t-123456",
"create_time": "1548000000",
"update_time": "1548000100",
"create_time_ms": 1548000000123,
"update_time_ms": 1548000100123,
"currency_pair": "ETH_BTC",
"status": "cancelled",
"type": "limit",
"account": "spot",
"side": "buy",
"iceberg": "0",
"amount": "1",
"price": "5.00032",
"time_in_force": "gtc",
"left": "0.5",
"filled_total": "2.50016",
"avg_deal_price": "5.00032",
"fee": "0.005",
"fee_currency": "ETH",
"point_fee": "0",
"gt_fee": "0",
"gt_discount": false,
"rebated_fee": "0",
"rebated_fee_currency": "BTC",
"stp_act": "cn",
"finish_as": "stp",
"stp_id": 10240
}
Status | Meaning | Description | Schema |
---|---|---|---|
201 | Created (opens new window) | Order created. | Order |
WARNING
To perform this operation, you must be authenticated by API key and secret
Code samples
# coding: utf-8
import requests
import time
import hashlib
import hmac
host = "https://api.gatemt.com"
prefix = "/api/v4"
headers = {'Accept': 'application/json', 'Content-Type': 'application/json'}
url = '/spot/orders'
query_param = 'currency_pair=BTC_USDT&status=open'
# for `gen_sign` implementation, refer to section `Authentication` above
sign_headers = gen_sign('GET', prefix + url, query_param)
headers.update(sign_headers)
r = requests.request('GET', host + prefix + url + "?" + query_param, headers=headers)
print(r.json())
key="YOUR_API_KEY"
secret="YOUR_API_SECRET"
host="https://api.gatemt.com"
prefix="/api/v4"
method="GET"
url="/spot/orders"
query_param="currency_pair=BTC_USDT&status=open"
body_param=''
timestamp=$(date +%s)
body_hash=$(printf "$body_param" | openssl sha512 | awk '{print $NF}')
sign_string="$method\n$prefix$url\n$query_param\n$body_hash\n$timestamp"
sign=$(printf "$sign_string" | openssl sha512 -hmac "$secret" | awk '{print $NF}')
full_url="$host$prefix$url?$query_param"
curl -X $method $full_url \
-H "Timestamp: $timestamp" -H "KEY: $key" -H "SIGN: $sign"
GET /spot/orders
List orders
Spot and margin orders are returned by default. If cross margin orders are needed, account
must be set to cross_margin
When status
is open
, i.e., listing open orders, only pagination parameters page
and limit
are supported and limit
cannot be larger than 100. Query by side
and time range parameters from
and to
are not supported.
When status
is finished
, i.e., listing finished orders, pagination parameters, time range parameters from
and to
, and side
parameters are all supported.
Time range parameters are handled as order finish time.
Name | In | Type | Required | Description |
---|---|---|---|---|
currency_pair | query | string | true | Retrieve results with specified currency pair. It is required for open orders, but optional for finished ones. |
status | query | string | true | List orders based on status |
page | query | integer | false | Page number |
limit | query | integer | false | Maximum number of records to be returned. If status is open , maximum of limit is 100 |
account | query | string | false | Specify operation account. Default to spot and margin account if not specified. Set to cross_margin to operate against margin account. Portfolio margin account must set to cross_margin only |
from | query | integer(int64) | false | Start timestamp of the query |
to | query | integer(int64) | false | Time range ending, default to current time |
side | query | string | false | All bids or asks. Both included if not specified |
status: List orders based on status
open
- order is waiting to be filled
finished
- order has been filled or cancelled
Parameter | Value |
---|---|
status | open |
status | finished |
side | buy |
side | sell |
Example responses
200 Response
[
{
"id": "12332324",
"text": "t-123456",
"create_time": "1548000000",
"update_time": "1548000100",
"create_time_ms": 1548000000123,
"update_time_ms": 1548000100123,
"currency_pair": "ETH_BTC",
"status": "cancelled",
"type": "limit",
"account": "spot",
"side": "buy",
"iceberg": "0",
"amount": "1",
"price": "5.00032",
"time_in_force": "gtc",
"left": "0.5",
"filled_total": "2.50016",
"avg_deal_price": "5.00032",
"fee": "0.005",
"fee_currency": "ETH",
"point_fee": "0",
"gt_fee": "0",
"gt_discount": false,
"rebated_fee": "0",
"rebated_fee_currency": "BTC",
"stp_act": "cn",
"finish_as": "stp",
"stp_id": 10240
}
]
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK (opens new window) | List retrieved | [Order] |
WARNING
To perform this operation, you must be authenticated by API key and secret
open
orders in specified currency pairCode samples
# coding: utf-8
import requests
import time
import hashlib
import hmac
host = "https://api.gatemt.com"
prefix = "/api/v4"
headers = {'Accept': 'application/json', 'Content-Type': 'application/json'}
url = '/spot/orders'
query_param = 'currency_pair=BTC_USDT'
# for `gen_sign` implementation, refer to section `Authentication` above
sign_headers = gen_sign('DELETE', prefix + url, query_param)
headers.update(sign_headers)
r = requests.request('DELETE', host + prefix + url + "?" + query_param, headers=headers)
print(r.json())
key="YOUR_API_KEY"
secret="YOUR_API_SECRET"
host="https://api.gatemt.com"
prefix="/api/v4"
method="DELETE"
url="/spot/orders"
query_param="currency_pair=BTC_USDT"
body_param=''
timestamp=$(date +%s)
body_hash=$(printf "$body_param" | openssl sha512 | awk '{print $NF}')
sign_string="$method\n$prefix$url\n$query_param\n$body_hash\n$timestamp"
sign=$(printf "$sign_string" | openssl sha512 -hmac "$secret" | awk '{print $NF}')
full_url="$host$prefix$url?$query_param"
curl -X $method $full_url \
-H "Timestamp: $timestamp" -H "KEY: $key" -H "SIGN: $sign"
DELETE /spot/orders
Cancel all open
orders in specified currency pair
If account
is not set, all open orders, including spot, margin and cross margin ones, will be cancelled.
You can set account
to cancel only orders within the specified account
Name | In | Type | Required | Description |
---|---|---|---|---|
currency_pair | query | string | true | Currency pair |
side | query | string | false | All bids or asks. Both included if not specified |
account | query | string | false | Specify account type |
account: Specify account type
cross_margin
onlyParameter | Value |
---|---|
side | buy |
side | sell |
account | spot |
account | margin |
account | cross_margin |
Example responses
200 Response
[
{
"id": "12332324",
"text": "t-123456",
"create_time": "1548000000",
"update_time": "1548000100",
"create_time_ms": 1548000000123,
"update_time_ms": 1548000100123,
"currency_pair": "ETH_BTC",
"status": "cancelled",
"type": "limit",
"account": "spot",
"side": "buy",
"iceberg": "0",
"amount": "1",
"price": "5.00032",
"time_in_force": "gtc",
"left": "0.5",
"filled_total": "2.50016",
"avg_deal_price": "5.00032",
"fee": "0.005",
"fee_currency": "ETH",
"point_fee": "0",
"gt_fee": "0",
"gt_discount": false,
"rebated_fee": "0",
"rebated_fee_currency": "BTC",
"stp_act": "cn",
"finish_as": "stp",
"stp_id": 10240
}
]
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK (opens new window) | Batch cancellation request accepted. Query order status by listing orders | [Order] |
WARNING
To perform this operation, you must be authenticated by API key and secret
Code samples
# coding: utf-8
import requests
import time
import hashlib
import hmac
host = "https://api.gatemt.com"
prefix = "/api/v4"
headers = {'Accept': 'application/json', 'Content-Type': 'application/json'}
url = '/spot/cancel_batch_orders'
query_param = ''
body='[{"currency_pair":"BTC_USDT","id":"123456"}]'
# for `gen_sign` implementation, refer to section `Authentication` above
sign_headers = gen_sign('POST', prefix + url, query_param, body)
headers.update(sign_headers)
r = requests.request('POST', host + prefix + url, headers=headers, data=body)
print(r.json())
key="YOUR_API_KEY"
secret="YOUR_API_SECRET"
host="https://api.gatemt.com"
prefix="/api/v4"
method="POST"
url="/spot/cancel_batch_orders"
query_param=""
body_param='[{"currency_pair":"BTC_USDT","id":"123456"}]'
timestamp=$(date +%s)
body_hash=$(printf "$body_param" | openssl sha512 | awk '{print $NF}')
sign_string="$method\n$prefix$url\n$query_param\n$body_hash\n$timestamp"
sign=$(printf "$sign_string" | openssl sha512 -hmac "$secret" | awk '{print $NF}')
full_url="$host$prefix$url"
curl -X $method $full_url -d "$body_param" -H "Content-Type: application/json" \
-H "Timestamp: $timestamp" -H "KEY: $key" -H "SIGN: $sign"
POST /spot/cancel_batch_orders
Cancel a batch of orders with an ID list
Multiple currency pairs can be specified, but maximum 20 orders are allowed per request
Body parameter
[
{
"currency_pair": "BTC_USDT",
"id": "123456"
}
]
Name | In | Type | Required | Description |
---|---|---|---|---|
body | body | array[object] | true | none |
Example responses
200 Response
[
{
"currency_pair": "BTC_USDT",
"id": "123456",
"succeeded": true,
"label": null,
"message": null
}
]
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK (opens new window) | Batch cancellation completed | [Inline] |
Status Code 200
Name | Type | Description |
---|---|---|
» CancelOrderResult | object | Order cancellation result |
»» currency_pair | string | Order currency pair |
»» id | string | Order ID |
»» succeeded | boolean | Whether cancellation succeeded |
»» label | string | Error label when failed to cancel the order; emtpy if succeeded |
»» message | string | Error message when failed to cancel the order; empty if succeeded |
»» account | string | Empty by default. If cancelled order is cross margin order, this field is set to cross_margin |
WARNING
To perform this operation, you must be authenticated by API key and secret
Code samples
# coding: utf-8
import requests
import time
import hashlib
import hmac
host = "https://api.gatemt.com"
prefix = "/api/v4"
headers = {'Accept': 'application/json', 'Content-Type': 'application/json'}
url = '/spot/orders/12345'
query_param = 'currency_pair=BTC_USDT'
# for `gen_sign` implementation, refer to section `Authentication` above
sign_headers = gen_sign('GET', prefix + url, query_param)
headers.update(sign_headers)
r = requests.request('GET', host + prefix + url + "?" + query_param, headers=headers)
print(r.json())
key="YOUR_API_KEY"
secret="YOUR_API_SECRET"
host="https://api.gatemt.com"
prefix="/api/v4"
method="GET"
url="/spot/orders/12345"
query_param="currency_pair=BTC_USDT"
body_param=''
timestamp=$(date +%s)
body_hash=$(printf "$body_param" | openssl sha512 | awk '{print $NF}')
sign_string="$method\n$prefix$url\n$query_param\n$body_hash\n$timestamp"
sign=$(printf "$sign_string" | openssl sha512 -hmac "$secret" | awk '{print $NF}')
full_url="$host$prefix$url?$query_param"
curl -X $method $full_url \
-H "Timestamp: $timestamp" -H "KEY: $key" -H "SIGN: $sign"
GET /spot/orders/{order_id}
Get a single order
Spot and margin orders are queried by default. If cross margin orders are needed or portfolio margin account are used, account must be set to cross_margin.
Name | In | Type | Required | Description |
---|---|---|---|---|
order_id | path | string | true | Order ID returned, or user custom ID(i.e., text field). |
currency_pair | query | string | true | Currency pair |
account | query | string | false | Specify operation account. Default to spot and margin account if not specified. Set to cross_margin to operate against margin account. Portfolio margin account must set to cross_margin only |
order_id: Order ID returned, or user custom ID(i.e., text
field).
Operations based on custom ID can only be checked when the order is in orderbook. When the order is finished, it can be checked within 1 hour after the end of the order. After that, only order ID is accepted.
Example responses
200 Response
{
"id": "12332324",
"text": "t-123456",
"create_time": "1548000000",
"update_time": "1548000100",
"create_time_ms": 1548000000123,
"update_time_ms": 1548000100123,
"currency_pair": "ETH_BTC",
"status": "cancelled",
"type": "limit",
"account": "spot",
"side": "buy",
"iceberg": "0",
"amount": "1",
"price": "5.00032",
"time_in_force": "gtc",
"left": "0.5",
"filled_total": "2.50016",
"avg_deal_price": "5.00032",
"fee": "0.005",
"fee_currency": "ETH",
"point_fee": "0",
"gt_fee": "0",
"gt_discount": false,
"rebated_fee": "0",
"rebated_fee_currency": "BTC",
"stp_act": "cn",
"finish_as": "stp",
"stp_id": 10240
}
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK (opens new window) | Detail retrieved | Order |
WARNING
To perform this operation, you must be authenticated by API key and secret
Code samples
# coding: utf-8
import requests
import time
import hashlib
import hmac
host = "https://api.gatemt.com"
prefix = "/api/v4"
headers = {'Accept': 'application/json', 'Content-Type': 'application/json'}
url = '/spot/orders/12345'
query_param = 'currency_pair=BTC_USDT'
body='{"amount":"1","price":"14"}'
# for `gen_sign` implementation, refer to section `Authentication` above
sign_headers = gen_sign('PATCH', prefix + url, query_param, body)
headers.update(sign_headers)
r = requests.request('PATCH', host + prefix + url + "?" + query_param, headers=headers, data=body)
print(r.json())
key="YOUR_API_KEY"
secret="YOUR_API_SECRET"
host="https://api.gatemt.com"
prefix="/api/v4"
method="PATCH"
url="/spot/orders/12345"
query_param="currency_pair=BTC_USDT"
body_param='{"amount":"1","price":"14"}'
timestamp=$(date +%s)
body_hash=$(printf "$body_param" | openssl sha512 | awk '{print $NF}')
sign_string="$method\n$prefix$url\n$query_param\n$body_hash\n$timestamp"
sign=$(printf "$sign_string" | openssl sha512 -hmac "$secret" | awk '{print $NF}')
full_url="$host$prefix$url?$query_param"
curl -X $method $full_url -d "$body_param" -H "Content-Type: application/json" \
-H "Timestamp: $timestamp" -H "KEY: $key" -H "SIGN: $sign"
PATCH /spot/orders/{order_id}
Amend an order
By default, the orders of spot and margin account are updated. If you need to modify orders of the cross-margin
account, you must specify account as cross_margin
. For portfolio margin account, only cross_margin
account is supported.
Currently, only supports modification of price
or amount
fields.
Regarding rate limiting: modify order and create order sharing rate limiting rules. Regarding matching priority: only modifying the amount does not affect the priority. If the price is modified, the priority will be adjusted to the last of the new price. Note: If the modified amount is less than the fill amount, the order will be cancelled.
Body parameter
{
"amount": "1",
"price": "14"
}
Name | In | Type | Required | Description |
---|---|---|---|---|
body | body | object | true | none |
» amount | body | string | false | New order amount. amount and price must specify one of them |
» price | body | string | false | New order price. amount and Price must specify one of them" |
» amend_text | body | string | false | Custom info during amending order |
order_id | path | string | true | Order ID returned, or user custom ID(i.e., text field). |
currency_pair | query | string | true | Currency pair |
account | query | string | false | Specify operation account. Default to spot and margin account if not specified. Set to cross_margin to operate against margin account. Portfolio margin account must set to cross_margin only |
order_id: Order ID returned, or user custom ID(i.e., text
field).
Operations based on custom ID can only be checked when the order is in orderbook. When the order is finished, it can be checked within 1 hour after the end of the order. After that, only order ID is accepted.
Example responses
200 Response
{
"id": "12332324",
"text": "t-123456",
"create_time": "1548000000",
"update_time": "1548000100",
"create_time_ms": 1548000000123,
"update_time_ms": 1548000100123,
"currency_pair": "ETH_BTC",
"status": "cancelled",
"type": "limit",
"account": "spot",
"side": "buy",
"iceberg": "0",
"amount": "1",
"price": "5.00032",
"time_in_force": "gtc",
"left": "0.5",
"filled_total": "2.50016",
"avg_deal_price": "5.00032",
"fee": "0.005",
"fee_currency": "ETH",
"point_fee": "0",
"gt_fee": "0",
"gt_discount": false,
"rebated_fee": "0",
"rebated_fee_currency": "BTC",
"stp_act": "cn",
"finish_as": "stp",
"stp_id": 10240
}
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK (opens new window) | Updated | Order |
WARNING
To perform this operation, you must be authenticated by API key and secret
Code samples
# coding: utf-8
import requests
import time
import hashlib
import hmac
host = "https://api.gatemt.com"
prefix = "/api/v4"
headers = {'Accept': 'application/json', 'Content-Type': 'application/json'}
url = '/spot/orders/12345'
query_param = 'currency_pair=BTC_USDT'
# for `gen_sign` implementation, refer to section `Authentication` above
sign_headers = gen_sign('DELETE', prefix + url, query_param)
headers.update(sign_headers)
r = requests.request('DELETE', host + prefix + url + "?" + query_param, headers=headers)
print(r.json())
key="YOUR_API_KEY"
secret="YOUR_API_SECRET"
host="https://api.gatemt.com"
prefix="/api/v4"
method="DELETE"
url="/spot/orders/12345"
query_param="currency_pair=BTC_USDT"
body_param=''
timestamp=$(date +%s)
body_hash=$(printf "$body_param" | openssl sha512 | awk '{print $NF}')
sign_string="$method\n$prefix$url\n$query_param\n$body_hash\n$timestamp"
sign=$(printf "$sign_string" | openssl sha512 -hmac "$secret" | awk '{print $NF}')
full_url="$host$prefix$url?$query_param"
curl -X $method $full_url \
-H "Timestamp: $timestamp" -H "KEY: $key" -H "SIGN: $sign"
DELETE /spot/orders/{order_id}
Cancel a single order
Spot and margin orders are cancelled by default. If trying to cancel cross margin orders or portfolio margin account are used, account must be set to cross_margin
Name | In | Type | Required | Description |
---|---|---|---|---|
order_id | path | string | true | Order ID returned, or user custom ID(i.e., text field). |
currency_pair | query | string | true | Currency pair |
account | query | string | false | Specify operation account. Default to spot and margin account if not specified. Set to cross_margin to operate against margin account. Portfolio margin account must set to cross_margin only |
order_id: Order ID returned, or user custom ID(i.e., text
field).
Operations based on custom ID can only be checked when the order is in orderbook. When the order is finished, it can be checked within 1 hour after the end of the order. After that, only order ID is accepted.
Example responses
200 Response
{
"id": "12332324",
"text": "t-123456",
"create_time": "1548000000",
"update_time": "1548000100",
"create_time_ms": 1548000000123,
"update_time_ms": 1548000100123,
"currency_pair": "ETH_BTC",
"status": "cancelled",
"type": "limit",
"account": "spot",
"side": "buy",
"iceberg": "0",
"amount": "1",
"price": "5.00032",
"time_in_force": "gtc",
"left": "0.5",
"filled_total": "2.50016",
"avg_deal_price": "5.00032",
"fee": "0.005",
"fee_currency": "ETH",
"point_fee": "0",
"gt_fee": "0",
"gt_discount": false,
"rebated_fee": "0",
"rebated_fee_currency": "BTC",
"stp_act": "cn",
"finish_as": "stp",
"stp_id": 10240
}
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK (opens new window) | Order cancelled | Order |
WARNING
To perform this operation, you must be authenticated by API key and secret
Code samples
# coding: utf-8
import requests
import time
import hashlib
import hmac
host = "https://api.gatemt.com"
prefix = "/api/v4"
headers = {'Accept': 'application/json', 'Content-Type': 'application/json'}
url = '/spot/my_trades'
query_param = ''
# for `gen_sign` implementation, refer to section `Authentication` above
sign_headers = gen_sign('GET', prefix + url, query_param)
headers.update(sign_headers)
r = requests.request('GET', host + prefix + url, headers=headers)
print(r.json())
key="YOUR_API_KEY"
secret="YOUR_API_SECRET"
host="https://api.gatemt.com"
prefix="/api/v4"
method="GET"
url="/spot/my_trades"
query_param=""
body_param=''
timestamp=$(date +%s)
body_hash=$(printf "$body_param" | openssl sha512 | awk '{print $NF}')
sign_string="$method\n$prefix$url\n$query_param\n$body_hash\n$timestamp"
sign=$(printf "$sign_string" | openssl sha512 -hmac "$secret" | awk '{print $NF}')
full_url="$host$prefix$url"
curl -X $method $full_url \
-H "Timestamp: $timestamp" -H "KEY: $key" -H "SIGN: $sign"
GET /spot/my_trades
List personal trading history
Spot and margin trades are queried by default. If cross margin trades are needed, account
must be set to cross_margin
You can also set from
and(or) to
to query by time range.
If you don't specify from
and/or to
parameters, only the last 7 days of data will be retured.
The range of from
and to
is not alloed to exceed 30 days.
Time range parameters are handled as order finish time.
Name | In | Type | Required | Description |
---|---|---|---|---|
currency_pair | query | string | false | Retrieve results with specified currency pair |
limit | query | integer | false | Maximum number of records to be returned in a single list |
page | query | integer | false | Page number |
order_id | query | string | false | Filter trades with specified order ID. currency_pair is also required if this field is present |
account | query | string | false | Specify operation account. Default to spot and margin account if not specified. Set to cross_margin to operate against margin account. Portfolio margin account must set to cross_margin only |
from | query | integer(int64) | false | Start timestamp of the query |
to | query | integer(int64) | false | Time range ending, default to current time |
Example responses
200 Response
[
{
"id": "1232893232",
"create_time": "1548000000",
"create_time_ms": "1548000000123.456",
"order_id": "4128442423",
"side": "buy",
"role": "maker",
"amount": "0.15",
"price": "0.03",
"fee": "0.0005",
"fee_currency": "ETH",
"point_fee": "0",
"gt_fee": "0"
}
]
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK (opens new window) | List retrieved | [Inline] |
Status Code 200
Name | Type | Description |
---|---|---|
None | array | none |
» id | string | Trade ID |
» create_time | string | Trading time |
» create_time_ms | string | Trading time, with millisecond precision |
» currency_pair | string | Currency pair |
» side | string | Order side |
» role | string | Trade role. No value in public endpoints |
» amount | string | Trade amount |
» price | string | Order price |
» order_id | string | Related order ID. No value in public endpoints |
» fee | string | Fee deducted. No value in public endpoints |
» fee_currency | string | Fee currency unit. No value in public endpoints |
» point_fee | string | Points used to deduct fee. No value in public endpoints |
» gt_fee | string | GT used to deduct fee. No value in public endpoints |
» amend_text | string | The custom data that the user remarked when amending the order |
Property | Value |
---|---|
side | buy |
side | sell |
role | taker |
role | maker |
WARNING
To perform this operation, you must be authenticated by API key and secret
Code samples
# coding: utf-8
import requests
host = "https://api.gatemt.com"
prefix = "/api/v4"
headers = {'Accept': 'application/json', 'Content-Type': 'application/json'}
url = '/spot/time'
query_param = ''
r = requests.request('GET', host + prefix + url, headers=headers)
print(r.json())
curl -X GET https://api.gatemt.com/api/v4/spot/time \
-H 'Accept: application/json'
GET /spot/time
Get server current time
Example responses
200 Response
{
"server_time": 1597026383085
}
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK (opens new window) | Successfully retrieved | Inline |
Status Code 200
SystemTime
Name | Type | Description |
---|---|---|
» server_time | integer(int64) | Server current time(ms) |
Code samples
# coding: utf-8
import requests
import time
import hashlib
import hmac
host = "https://api.gatemt.com"
prefix = "/api/v4"
headers = {'Accept': 'application/json', 'Content-Type': 'application/json'}
url = '/spot/countdown_cancel_all'
query_param = ''
body='{"timeout":30,"currency_pair":"BTC_USDT"}'
# for `gen_sign` implementation, refer to section `Authentication` above
sign_headers = gen_sign('POST', prefix + url, query_param, body)
headers.update(sign_headers)
r = requests.request('POST', host + prefix + url, headers=headers, data=body)
print(r.json())
key="YOUR_API_KEY"
secret="YOUR_API_SECRET"
host="https://api.gatemt.com"
prefix="/api/v4"
method="POST"
url="/spot/countdown_cancel_all"
query_param=""
body_param='{"timeout":30,"currency_pair":"BTC_USDT"}'
timestamp=$(date +%s)
body_hash=$(printf "$body_param" | openssl sha512 | awk '{print $NF}')
sign_string="$method\n$prefix$url\n$query_param\n$body_hash\n$timestamp"
sign=$(printf "$sign_string" | openssl sha512 -hmac "$secret" | awk '{print $NF}')
full_url="$host$prefix$url"
curl -X $method $full_url -d "$body_param" -H "Content-Type: application/json" \
-H "Timestamp: $timestamp" -H "KEY: $key" -H "SIGN: $sign"
POST /spot/countdown_cancel_all
Countdown cancel orders
When the timeout set by the user is reached, if there is no cancel or set a new countdown, the related pending orders will be automatically cancelled.
This endpoint can be called repeatedly to set a new countdown or cancel the countdown.
For example, call this endpoint at 30s intervals, each countdowntimeout
is set to 30s.
If this endpoint is not called again within 30 seconds, all pending orders on the specified market
will be automatically cancelled, if no market
is specified, all market pending orders will be cancelled.
If the timeout
is set to 0 within 30 seconds, the countdown timer will expire and the cacnel function will be cancelled.
Body parameter
{
"timeout": 30,
"currency_pair": "BTC_USDT"
}
Name | In | Type | Required | Description |
---|---|---|---|---|
body | body | object | true | none |
» timeout | body | integer(int32) | true | Countdown time, in seconds |
» currency_pair | body | string | false | Currency pair |
» timeout: Countdown time, in seconds At least 5 seconds, 0 means cancel the countdown
Example responses
200 Response
{
"triggerTime": "1660039145000"
}
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK (opens new window) | Set countdown successfully | Inline |
Status Code 200
triggerTime
Name | Type | Description |
---|---|---|
» triggerTime | integer(int64) | Timestamp of the end of the countdown, in milliseconds |
WARNING
To perform this operation, you must be authenticated by API key and secret
Withdrawal operations
Code samples
# coding: utf-8
import requests
import time
import hashlib
import hmac
host = "https://api.gatemt.com"
prefix = "/api/v4"
headers = {'Accept': 'application/json', 'Content-Type': 'application/json'}
url = '/withdrawals'
query_param = ''
body='{"withdraw_order_id":"order_123456","currency":"USDT","address":"1HkxtBAMrA3tP5ENnYY2CZortjZvFDH5Cs","amount":"222.61","memo":"","chain":"TRX"}'
# for `gen_sign` implementation, refer to section `Authentication` above
sign_headers = gen_sign('POST', prefix + url, query_param, body)
headers.update(sign_headers)
r = requests.request('POST', host + prefix + url, headers=headers, data=body)
print(r.json())
key="YOUR_API_KEY"
secret="YOUR_API_SECRET"
host="https://api.gatemt.com"
prefix="/api/v4"
method="POST"
url="/withdrawals"
query_param=""
body_param='{"withdraw_order_id":"order_123456","currency":"USDT","address":"1HkxtBAMrA3tP5ENnYY2CZortjZvFDH5Cs","amount":"222.61","memo":"","chain":"TRX"}'
timestamp=$(date +%s)
body_hash=$(printf "$body_param" | openssl sha512 | awk '{print $NF}')
sign_string="$method\n$prefix$url\n$query_param\n$body_hash\n$timestamp"
sign=$(printf "$sign_string" | openssl sha512 -hmac "$secret" | awk '{print $NF}')
full_url="$host$prefix$url"
curl -X $method $full_url -d "$body_param" -H "Content-Type: application/json" \
-H "Timestamp: $timestamp" -H "KEY: $key" -H "SIGN: $sign"
POST /withdrawals
Withdraw
Body parameter
{
"withdraw_order_id": "order_123456",
"currency": "USDT",
"address": "1HkxtBAMrA3tP5ENnYY2CZortjZvFDH5Cs",
"amount": "222.61",
"memo": "",
"chain": "TRX"
}
Name | In | Type | Required | Description |
---|---|---|---|---|
body | body | object | true | none |
» withdraw_order_id | body | string | false | Client order id, up to 32 length and can only include 0-9, A-Z, a-z, underscore(_), hyphen(-) or dot(.) |
» amount | body | string | true | Currency amount |
» currency | body | string | true | Currency name |
» address | body | string | false | Withdrawal address. Required for withdrawals |
» memo | body | string | false | Additional remarks with regards to the withdrawal |
» chain | body | string | true | Name of the chain used in withdrawals |
Example responses
202 Response
{
"id": "210496",
"timestamp": "1542000000",
"withdraw_order_id": "order_123456",
"currency": "USDT",
"address": "1HkxtBAMrA3tP5ENnYY2CZortjZvFDH5Cs",
"txid": "128988928203223323290",
"amount": "222.61",
"memo": "",
"status": "DONE",
"chain": "TRX"
}
Status | Meaning | Description | Schema |
---|---|---|---|
202 | Accepted (opens new window) | Withdraw request is accepted. Refer to withdrawal records for status | Inline |
Status Code 202
Name | Type | Description |
---|---|---|
» id | string | Record ID |
» txid | string | Hash record of the withdrawal |
» withdraw_order_id | string | Client order id, up to 32 length and can only include 0-9, A-Z, a-z, underscore(_), hyphen(-) or dot(.) |
» timestamp | string | Operation time |
» amount | string | Currency amount |
» currency | string | Currency name |
» address | string | Withdrawal address. Required for withdrawals |
» memo | string | Additional remarks with regards to the withdrawal |
» status | string | Record status. - DONE: done - CANCEL: cancelled - REQUEST: requesting - MANUAL: pending manual approval - BCODE: GateCode operation - EXTPEND: pending confirm after sending - FAIL: pending confirm when fail - INVALID: invalid order - VERIFY: verifying - PROCES: processing - PEND: pending - DMOVE: required manual approval - SPLITPEND: the order is automatically split due to large amount |
» chain | string | Name of the chain used in withdrawals |
» fee | string | Fee |
Property | Value |
---|---|
status | DONE |
status | CANCEL |
status | REQUEST |
status | MANUAL |
status | BCODE |
status | EXTPEND |
status | FAIL |
status | INVALID |
status | VERIFY |
status | PROCES |
status | PEND |
status | DMOVE |
status | SPLITPEND |
WARNING
To perform this operation, you must be authenticated by API key and secret
Code samples
# coding: utf-8
import requests
import time
import hashlib
import hmac
host = "https://api.gatemt.com"
prefix = "/api/v4"
headers = {'Accept': 'application/json', 'Content-Type': 'application/json'}
url = '/withdrawals/210496'
query_param = ''
# for `gen_sign` implementation, refer to section `Authentication` above
sign_headers = gen_sign('DELETE', prefix + url, query_param)
headers.update(sign_headers)
r = requests.request('DELETE', host + prefix + url, headers=headers)
print(r.json())
key="YOUR_API_KEY"
secret="YOUR_API_SECRET"
host="https://api.gatemt.com"
prefix="/api/v4"
method="DELETE"
url="/withdrawals/210496"
query_param=""
body_param=''
timestamp=$(date +%s)
body_hash=$(printf "$body_param" | openssl sha512 | awk '{print $NF}')
sign_string="$method\n$prefix$url\n$query_param\n$body_hash\n$timestamp"
sign=$(printf "$sign_string" | openssl sha512 -hmac "$secret" | awk '{print $NF}')
full_url="$host$prefix$url"
curl -X $method $full_url \
-H "Timestamp: $timestamp" -H "KEY: $key" -H "SIGN: $sign"
DELETE /withdrawals/{withdrawal_id}
Cancel withdrawal with specified ID
Name | In | Type | Required | Description |
---|---|---|---|---|
withdrawal_id | path | string | true | none |
Example responses
202 Response
{
"id": "210496",
"timestamp": "1542000000",
"withdraw_order_id": "order_123456",
"currency": "USDT",
"address": "1HkxtBAMrA3tP5ENnYY2CZortjZvFDH5Cs",
"txid": "128988928203223323290",
"amount": "222.61",
"memo": "",
"status": "DONE",
"chain": "TRX"
}
Status | Meaning | Description | Schema |
---|---|---|---|
202 | Accepted (opens new window) | Cancellation accepted. Refer to record status for the cancellation result | Inline |
Status Code 202
Name | Type | Description |
---|---|---|
» id | string | Record ID |
» txid | string | Hash record of the withdrawal |
» withdraw_order_id | string | Client order id, up to 32 length and can only include 0-9, A-Z, a-z, underscore(_), hyphen(-) or dot(.) |
» timestamp | string | Operation time |
» amount | string | Currency amount |
» currency | string | Currency name |
» address | string | Withdrawal address. Required for withdrawals |
» memo | string | Additional remarks with regards to the withdrawal |
» status | string | Record status. - DONE: done - CANCEL: cancelled - REQUEST: requesting - MANUAL: pending manual approval - BCODE: GateCode operation - EXTPEND: pending confirm after sending - FAIL: pending confirm when fail - INVALID: invalid order - VERIFY: verifying - PROCES: processing - PEND: pending - DMOVE: required manual approval - SPLITPEND: the order is automatically split due to large amount |
» chain | string | Name of the chain used in withdrawals |
» fee | string | Fee |
Property | Value |
---|---|
status | DONE |
status | CANCEL |
status | REQUEST |
status | MANUAL |
status | BCODE |
status | EXTPEND |
status | FAIL |
status | INVALID |
status | VERIFY |
status | PROCES |
status | PEND |
status | DMOVE |
status | SPLITPEND |
WARNING
To perform this operation, you must be authenticated by API key and secret
Wallet
Code samples
# coding: utf-8
import requests
host = "https://api.gatemt.com"
prefix = "/api/v4"
headers = {'Accept': 'application/json', 'Content-Type': 'application/json'}
url = '/wallet/currency_chains'
query_param = 'currency=GT'
r = requests.request('GET', host + prefix + url + "?" + query_param, headers=headers)
print(r.json())
curl -X GET https://api.gatemt.com/api/v4/wallet/currency_chains?currency=GT \
-H 'Accept: application/json'
GET /wallet/currency_chains
List chains supported for specified currency
Name | In | Type | Required | Description |
---|---|---|---|---|
currency | query | string | true | Currency name |
Example responses
200 Response
[
{
"chain": "ETH",
"name_cn": "以太坊ERC20",
"name_en": "ETH/ERC20",
"is_disabled": 0,
"is_deposit_disabled": 0,
"is_withdraw_disabled": 0
}
]
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK (opens new window) | Successfully retrieved | [Inline] |
Status Code 200
Name | Type | Description |
---|---|---|
» chain | string | Chain name |
» name_cn | string | Chain name in Chinese |
» name_en | string | Chain name in English |
» is_disabled | integer | If it is disabled. 0 means NOT being disabled |
» is_deposit_disabled | integer | Is deposit disabled. 0 means not |
» is_withdraw_disabled | integer | Is withdrawal disabled. 0 means not |
Code samples
# coding: utf-8
import requests
import time
import hashlib
import hmac
host = "https://api.gatemt.com"
prefix = "/api/v4"
headers = {'Accept': 'application/json', 'Content-Type': 'application/json'}
url = '/wallet/deposit_address'
query_param = 'currency=USDT'
# for `gen_sign` implementation, refer to section `Authentication` above
sign_headers = gen_sign('GET', prefix + url, query_param)
headers.update(sign_headers)
r = requests.request('GET', host + prefix + url + "?" + query_param, headers=headers)
print(r.json())
key="YOUR_API_KEY"
secret="YOUR_API_SECRET"
host="https://api.gatemt.com"
prefix="/api/v4"
method="GET"
url="/wallet/deposit_address"
query_param="currency=USDT"
body_param=''
timestamp=$(date +%s)
body_hash=$(printf "$body_param" | openssl sha512 | awk '{print $NF}')
sign_string="$method\n$prefix$url\n$query_param\n$body_hash\n$timestamp"
sign=$(printf "$sign_string" | openssl sha512 -hmac "$secret" | awk '{print $NF}')
full_url="$host$prefix$url?$query_param"
curl -X $method $full_url \
-H "Timestamp: $timestamp" -H "KEY: $key" -H "SIGN: $sign"
GET /wallet/deposit_address
Generate currency deposit address
Name | In | Type | Required | Description |
---|---|---|---|---|
currency | query | string | true | Currency name |
Example responses
200 Response
{
"currency": "USDT",
"address": "LPXtk1kWHioP62SzfqwKbYE3Z7Wt2ujYEc",
"multichain_addresses": [
{
"chain": "TRX",
"address": "LPXtk1kWHioP62SzfqwKbYE3Z7Wt2ujYEc",
"payment_id": "",
"payment_name": "",
"obtain_failed": 0
}
]
}
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK (opens new window) | Address successfully generated | Inline |
Status Code 200
Name | Type | Description |
---|---|---|
» currency | string | Currency detail |
» address | string | Deposit address |
» multichain_addresses | array | none |
»» MultiChainAddressItem | object | none |
»»» chain | string | Name of the chain |
»»» address | string | Deposit address |
»»» payment_id | string | Notes that some currencies required(e.g., Tag, Memo) when depositing |
»»» payment_name | string | Note type, Tag or Memo |
»»» obtain_failed | integer | The obtain failed status- 0: address successfully obtained- 1: failed to obtain address |
WARNING
To perform this operation, you must be authenticated by API key and secret
Code samples
# coding: utf-8
import requests
import time
import hashlib
import hmac
host = "https://api.gatemt.com"
prefix = "/api/v4"
headers = {'Accept': 'application/json', 'Content-Type': 'application/json'}
url = '/wallet/withdrawals'
query_param = ''
# for `gen_sign` implementation, refer to section `Authentication` above
sign_headers = gen_sign('GET', prefix + url, query_param)
headers.update(sign_headers)
r = requests.request('GET', host + prefix + url, headers=headers)
print(r.json())
key="YOUR_API_KEY"
secret="YOUR_API_SECRET"
host="https://api.gatemt.com"
prefix="/api/v4"
method="GET"
url="/wallet/withdrawals"
query_param=""
body_param=''
timestamp=$(date +%s)
body_hash=$(printf "$body_param" | openssl sha512 | awk '{print $NF}')
sign_string="$method\n$prefix$url\n$query_param\n$body_hash\n$timestamp"
sign=$(printf "$sign_string" | openssl sha512 -hmac "$secret" | awk '{print $NF}')
full_url="$host$prefix$url"
curl -X $method $full_url \
-H "Timestamp: $timestamp" -H "KEY: $key" -H "SIGN: $sign"
GET /wallet/withdrawals
Retrieve withdrawal records
Record time range cannot exceed 30 days
Name | In | Type | Required | Description |
---|---|---|---|---|
currency | query | string | false | Filter by currency. Return all currency records if not specified |
from | query | integer(int64) | false | Time range beginning, default to 7 days before current time |
to | query | integer(int64) | false | Time range ending, default to current time |
limit | query | integer | false | Maximum number of records to be returned in a single list |
offset | query | integer | false | List offset, starting from 0 |
Example responses
200 Response
[
{
"id": "210496",
"timestamp": "1542000000",
"withdraw_order_id": "order_123456",
"currency": "USDT",
"address": "1HkxtBAMrA3tP5ENnYY2CZortjZvFDH5Cs",
"txid": "128988928203223323290",
"amount": "222.61",
"memo": "",
"status": "DONE",
"chain": "TRX"
}
]
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK (opens new window) | List retrieved | [Inline] |
Status Code 200
Name | Type | Description |
---|---|---|
None | array | none |
» id | string | Record ID |
» txid | string | Hash record of the withdrawal |
» withdraw_order_id | string | Client order id, up to 32 length and can only include 0-9, A-Z, a-z, underscore(_), hyphen(-) or dot(.) |
» timestamp | string | Operation time |
» amount | string | Currency amount |
» currency | string | Currency name |
» address | string | Withdrawal address. Required for withdrawals |
» memo | string | Additional remarks with regards to the withdrawal |
» status | string | Record status. - DONE: done - CANCEL: cancelled - REQUEST: requesting - MANUAL: pending manual approval - BCODE: GateCode operation - EXTPEND: pending confirm after sending - FAIL: pending confirm when fail - INVALID: invalid order - VERIFY: verifying - PROCES: processing - PEND: pending - DMOVE: required manual approval - SPLITPEND: the order is automatically split due to large amount |
» chain | string | Name of the chain used in withdrawals |
» fee | string | Fee |
Property | Value |
---|---|
status | DONE |
status | CANCEL |
status | REQUEST |
status | MANUAL |
status | BCODE |
status | EXTPEND |
status | FAIL |
status | INVALID |
status | VERIFY |
status | PROCES |
status | PEND |
status | DMOVE |
status | SPLITPEND |
WARNING
To perform this operation, you must be authenticated by API key and secret
Code samples
# coding: utf-8
import requests
import time
import hashlib
import hmac
host = "https://api.gatemt.com"
prefix = "/api/v4"
headers = {'Accept': 'application/json', 'Content-Type': 'application/json'}
url = '/wallet/deposits'
query_param = ''
# for `gen_sign` implementation, refer to section `Authentication` above
sign_headers = gen_sign('GET', prefix + url, query_param)
headers.update(sign_headers)
r = requests.request('GET', host + prefix + url, headers=headers)
print(r.json())
key="YOUR_API_KEY"
secret="YOUR_API_SECRET"
host="https://api.gatemt.com"
prefix="/api/v4"
method="GET"
url="/wallet/deposits"
query_param=""
body_param=''
timestamp=$(date +%s)
body_hash=$(printf "$body_param" | openssl sha512 | awk '{print $NF}')
sign_string="$method\n$prefix$url\n$query_param\n$body_hash\n$timestamp"
sign=$(printf "$sign_string" | openssl sha512 -hmac "$secret" | awk '{print $NF}')
full_url="$host$prefix$url"
curl -X $method $full_url \
-H "Timestamp: $timestamp" -H "KEY: $key" -H "SIGN: $sign"
GET /wallet/deposits
Retrieve deposit records
Record time range cannot exceed 30 days
Name | In | Type | Required | Description |
---|---|---|---|---|
currency | query | string | false | Filter by currency. Return all currency records if not specified |
from | query | integer(int64) | false | Time range beginning, default to 7 days before current time |
to | query | integer(int64) | false | Time range ending, default to current time |
limit | query | integer | false | Maximum number of records to be returned in a single list |
offset | query | integer | false | List offset, starting from 0 |
Example responses
200 Response
[
{
"id": "210496",
"timestamp": "1542000000",
"withdraw_order_id": "order_123456",
"currency": "USDT",
"address": "1HkxtBAMrA3tP5ENnYY2CZortjZvFDH5Cs",
"txid": "128988928203223323290",
"amount": "222.61",
"memo": "",
"status": "DONE",
"chain": "TRX"
}
]
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK (opens new window) | List retrieved | [Inline] |
Status Code 200
Name | Type | Description |
---|---|---|
None | array | none |
» id | string | Record ID |
» txid | string | Hash record of the withdrawal |
» withdraw_order_id | string | Client order id, up to 32 length and can only include 0-9, A-Z, a-z, underscore(_), hyphen(-) or dot(.) |
» timestamp | string | Operation time |
» amount | string | Currency amount |
» currency | string | Currency name |
» address | string | Withdrawal address. Required for withdrawals |
» memo | string | Additional remarks with regards to the withdrawal |
» status | string | Record status. - DONE: done - CANCEL: cancelled - REQUEST: requesting - MANUAL: pending manual approval - BCODE: GateCode operation - EXTPEND: pending confirm after sending - FAIL: pending confirm when fail - INVALID: invalid order - VERIFY: verifying - PROCES: processing - PEND: pending - DMOVE: required manual approval - SPLITPEND: the order is automatically split due to large amount |
» chain | string | Name of the chain used in withdrawals |
» fee | string | Fee |
Property | Value |
---|---|
status | DONE |
status | CANCEL |
status | REQUEST |
status | MANUAL |
status | BCODE |
status | EXTPEND |
status | FAIL |
status | INVALID |
status | VERIFY |
status | PROCES |
status | PEND |
status | DMOVE |
status | SPLITPEND |
WARNING
To perform this operation, you must be authenticated by API key and secret
Code samples
# coding: utf-8
import requests
import time
import hashlib
import hmac
host = "https://api.gatemt.com"
prefix = "/api/v4"
headers = {'Accept': 'application/json', 'Content-Type': 'application/json'}
url = '/wallet/transfers'
query_param = ''
body='{"currency":"BTC","from":"spot","to":"margin","amount":"1","currency_pair":"BTC_USDT"}'
# for `gen_sign` implementation, refer to section `Authentication` above
sign_headers = gen_sign('POST', prefix + url, query_param, body)
headers.update(sign_headers)
r = requests.request('POST', host + prefix + url, headers=headers, data=body)
print(r.json())
key="YOUR_API_KEY"
secret="YOUR_API_SECRET"
host="https://api.gatemt.com"
prefix="/api/v4"
method="POST"
url="/wallet/transfers"
query_param=""
body_param='{"currency":"BTC","from":"spot","to":"margin","amount":"1","currency_pair":"BTC_USDT"}'
timestamp=$(date +%s)
body_hash=$(printf "$body_param" | openssl sha512 | awk '{print $NF}')
sign_string="$method\n$prefix$url\n$query_param\n$body_hash\n$timestamp"
sign=$(printf "$sign_string" | openssl sha512 -hmac "$secret" | awk '{print $NF}')
full_url="$host$prefix$url"
curl -X $method $full_url -d "$body_param" -H "Content-Type: application/json" \
-H "Timestamp: $timestamp" -H "KEY: $key" -H "SIGN: $sign"
POST /wallet/transfers
Transfer between trading accounts
Transfer between different accounts. Currently support transfers between the following:
Body parameter
{
"currency": "BTC",
"from": "spot",
"to": "margin",
"amount": "1",
"currency_pair": "BTC_USDT"
}
Name | In | Type | Required | Description |
---|---|---|---|---|
body | body | object | true | none |
» currency | body | string | true | Transfer currency. For futures account, currency can be set to POINT or settle currency |
» from | body | string | true | Account to transfer from |
» to | body | string | true | Account to transfer to |
» amount | body | string | true | Transfer amount |
» currency_pair | body | string | false | Margin currency pair. Required if transfer from or to margin account |
» settle | body | string | false | Futures settle currency. Required if transferring from or to futures account |
Parameter | Value |
---|---|
» from | spot |
» from | margin |
» from | futures |
» from | delivery |
» from | cross_margin |
» from | options |
» to | spot |
» to | margin |
» to | futures |
» to | delivery |
» to | cross_margin |
» to | options |
Example responses
200 Response
{
"tx_id": 59636381286
}
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK (opens new window) | Balance transferred | Inline |
Status Code 200
TransactionID
Name | Type | Description |
---|---|---|
» tx_id | integer(int64) | Order id |
WARNING
To perform this operation, you must be authenticated by API key and secret
Code samples
# coding: utf-8
import requests
import time
import hashlib
import hmac
host = "https://api.gatemt.com"
prefix = "/api/v4"
headers = {'Accept': 'application/json', 'Content-Type': 'application/json'}
url = '/wallet/sub_account_transfers'
query_param = ''
body='{"currency":"BTC","sub_account":"10002","direction":"to","amount":"1","sub_account_type":"spot"}'
# for `gen_sign` implementation, refer to section `Authentication` above
sign_headers = gen_sign('POST', prefix + url, query_param, body)
headers.update(sign_headers)
r = requests.request('POST', host + prefix + url, headers=headers, data=body)
print(r.json())
key="YOUR_API_KEY"
secret="YOUR_API_SECRET"
host="https://api.gatemt.com"
prefix="/api/v4"
method="POST"
url="/wallet/sub_account_transfers"
query_param=""
body_param='{"currency":"BTC","sub_account":"10002","direction":"to","amount":"1","sub_account_type":"spot"}'
timestamp=$(date +%s)
body_hash=$(printf "$body_param" | openssl sha512 | awk '{print $NF}')
sign_string="$method\n$prefix$url\n$query_param\n$body_hash\n$timestamp"
sign=$(printf "$sign_string" | openssl sha512 -hmac "$secret" | awk '{print $NF}')
full_url="$host$prefix$url"
curl -X $method $full_url -d "$body_param" -H "Content-Type: application/json" \
-H "Timestamp: $timestamp" -H "KEY: $key" -H "SIGN: $sign"
POST /wallet/sub_account_transfers
Transfer between main and sub accounts
Support transferring with sub user's spot or futures account. Note that only main user's spot account is used no matter which sub user's account is operated.
Body parameter
{
"currency": "BTC",
"sub_account": "10002",
"direction": "to",
"amount": "1",
"sub_account_type": "spot"
}
Name | In | Type | Required | Description |
---|---|---|---|---|
body | body | object | true | none |
» currency | body | string | true | Transfer currency name |
» sub_account | body | string | true | Sub account user ID |
» direction | body | string | true | Transfer direction. to - transfer into sub account; from - transfer out from sub account |
» amount | body | string | true | Transfer amount |
» sub_account_type | body | string | false | Target sub user's account. spot - spot account, futures - perpetual contract account, cross_margin - cross margin account, delivery - delivery account |
Parameter | Value |
---|---|
» direction | to |
» direction | from |
» sub_account_type | spot |
» sub_account_type | futures |
» sub_account_type | cross_margin |
» sub_account_type | delivery |
Status | Meaning | Description | Schema |
---|---|---|---|
204 | No Content (opens new window) | Balance transferred | None |
WARNING
To perform this operation, you must be authenticated by API key and secret
Code samples
# coding: utf-8
import requests
import time
import hashlib
import hmac
host = "https://api.gatemt.com"
prefix = "/api/v4"
headers = {'Accept': 'application/json', 'Content-Type': 'application/json'}
url = '/wallet/sub_account_transfers'
query_param = ''
# for `gen_sign` implementation, refer to section `Authentication` above
sign_headers = gen_sign('GET', prefix + url, query_param)
headers.update(sign_headers)
r = requests.request('GET', host + prefix + url, headers=headers)
print(r.json())
key="YOUR_API_KEY"
secret="YOUR_API_SECRET"
host="https://api.gatemt.com"
prefix="/api/v4"
method="GET"
url="/wallet/sub_account_transfers"
query_param=""
body_param=''
timestamp=$(date +%s)
body_hash=$(printf "$body_param" | openssl sha512 | awk '{print $NF}')
sign_string="$method\n$prefix$url\n$query_param\n$body_hash\n$timestamp"
sign=$(printf "$sign_string" | openssl sha512 -hmac "$secret" | awk '{print $NF}')
full_url="$host$prefix$url"
curl -X $method $full_url \
-H "Timestamp: $timestamp" -H "KEY: $key" -H "SIGN: $sign"
GET /wallet/sub_account_transfers
Retrieve transfer records between main and sub accounts
Record time range cannot exceed 30 days
Note: only records after 2020-04-10 can be retrieved
Name | In | Type | Required | Description |
---|---|---|---|---|
sub_uid | query | string | false | User ID of sub-account, you can query multiple records separated by , . If not specified, it will return the records of all sub accounts |
from | query | integer(int64) | false | Time range beginning, default to 7 days before current time |
to | query | integer(int64) | false | Time range ending, default to current time |
limit | query | integer | false | Maximum number of records to be returned in a single list |
offset | query | integer | false | List offset, starting from 0 |
Example responses
200 Response
[
{
"uid": "10001",
"timest": "1592809000",
"source": "web",
"currency": "BTC",
"sub_account": "10002",
"direction": "to",
"amount": "1",
"sub_account_type": "spot"
}
]
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK (opens new window) | List retrieved | [Inline] |
Status Code 200
Name | Type | Description |
---|---|---|
None | array | none |
» currency | string | Transfer currency name |
» sub_account | string | Sub account user ID |
» direction | string | Transfer direction. to - transfer into sub account; from - transfer out from sub account |
» amount | string | Transfer amount |
» uid | string | Main account user ID |
» timest | string | Transfer timestamp |
» source | string | Where the operation is initiated from |
» sub_account_type | string | Target sub user's account. spot - spot account, futures - perpetual contract account, cross_margin - cross margin account, delivery - delivery account |
Property | Value |
---|---|
direction | to |
direction | from |
sub_account_type | spot |
sub_account_type | futures |
sub_account_type | cross_margin |
sub_account_type | delivery |
WARNING
To perform this operation, you must be authenticated by API key and secret
Code samples
# coding: utf-8
import requests
import time
import hashlib
import hmac
host = "https://api.gatemt.com"
prefix = "/api/v4"
headers = {'Accept': 'application/json', 'Content-Type': 'application/json'}
url = '/wallet/sub_account_to_sub_account'
query_param = ''
body='{"currency":"usdt","sub_account_from":"10001","sub_account_from_type":"spot","sub_account_to":"10002","sub_account_to_type":"spot","amount":"1"}'
# for `gen_sign` implementation, refer to section `Authentication` above
sign_headers = gen_sign('POST', prefix + url, query_param, body)
headers.update(sign_headers)
r = requests.request('POST', host + prefix + url, headers=headers, data=body)
print(r.json())
key="YOUR_API_KEY"
secret="YOUR_API_SECRET"
host="https://api.gatemt.com"
prefix="/api/v4"
method="POST"
url="/wallet/sub_account_to_sub_account"
query_param=""
body_param='{"currency":"usdt","sub_account_from":"10001","sub_account_from_type":"spot","sub_account_to":"10002","sub_account_to_type":"spot","amount":"1"}'
timestamp=$(date +%s)
body_hash=$(printf "$body_param" | openssl sha512 | awk '{print $NF}')
sign_string="$method\n$prefix$url\n$query_param\n$body_hash\n$timestamp"
sign=$(printf "$sign_string" | openssl sha512 -hmac "$secret" | awk '{print $NF}')
full_url="$host$prefix$url"
curl -X $method $full_url -d "$body_param" -H "Content-Type: application/json" \
-H "Timestamp: $timestamp" -H "KEY: $key" -H "SIGN: $sign"
POST /wallet/sub_account_to_sub_account
Sub-account transfers to sub-account
Body parameter
{
"currency": "usdt",
"sub_account_from": "10001",
"sub_account_from_type": "spot",
"sub_account_to": "10002",
"sub_account_to_type": "spot",
"amount": "1"
}
Name | In | Type | Required | Description |
---|---|---|---|---|
body | body | object | true | none |
» currency | body | string | true | Transfer currency name |
» sub_account_type | body | string | false | Transfer from the account. (deprecate, use sub_account_from_type and sub_account_to_type instead) |
» sub_account_from | body | string | true | Transfer from the user id of the sub-account |
» sub_account_from_type | body | string | true | Transfer from the account. spot - spot account, futures - perpetual contract account, cross_margin - cross margin account |
» sub_account_to | body | string | true | Transfer to the user id of the sub-account |
» sub_account_to_type | body | string | true | Transfer to the account. spot - spot account, futures - perpetual contract account, cross_margin - cross margin account |
» amount | body | string | true | Transfer amount |
Parameter | Value |
---|---|
» sub_account_from_type | spot |
» sub_account_from_type | futures |
» sub_account_from_type | cross_margin |
» sub_account_to_type | spot |
» sub_account_to_type | futures |
» sub_account_to_type | cross_margin |
Status | Meaning | Description | Schema |
---|---|---|---|
204 | No Content (opens new window) | Balance transferred | None |
WARNING
To perform this operation, you must be authenticated by API key and secret
Code samples
# coding: utf-8
import requests
import time
import hashlib
import hmac
host = "https://api.gatemt.com"
prefix = "/api/v4"
headers = {'Accept': 'application/json', 'Content-Type': 'application/json'}
url = '/wallet/withdraw_status'
query_param = ''
# for `gen_sign` implementation, refer to section `Authentication` above
sign_headers = gen_sign('GET', prefix + url, query_param)
headers.update(sign_headers)
r = requests.request('GET', host + prefix + url, headers=headers)
print(r.json())
key="YOUR_API_KEY"
secret="YOUR_API_SECRET"
host="https://api.gatemt.com"
prefix="/api/v4"
method="GET"
url="/wallet/withdraw_status"
query_param=""
body_param=''
timestamp=$(date +%s)
body_hash=$(printf "$body_param" | openssl sha512 | awk '{print $NF}')
sign_string="$method\n$prefix$url\n$query_param\n$body_hash\n$timestamp"
sign=$(printf "$sign_string" | openssl sha512 -hmac "$secret" | awk '{print $NF}')
full_url="$host$prefix$url"
curl -X $method $full_url \
-H "Timestamp: $timestamp" -H "KEY: $key" -H "SIGN: $sign"
GET /wallet/withdraw_status
Retrieve withdrawal status
Name | In | Type | Required | Description |
---|---|---|---|---|
currency | query | string | false | Retrieve data of the specified currency |
Example responses
200 Response
[
{
"currency": "GT",
"name": "GateToken",
"name_cn": "GateToken",
"deposit": "0",
"withdraw_percent": "0%",
"withdraw_fix": "0.01",
"withdraw_day_limit": "20000",
"withdraw_day_limit_remain": "20000",
"withdraw_amount_mini": "0.11",
"withdraw_eachtime_limit": "20000",
"withdraw_fix_on_chains": {
"BTC": "20",
"ETH": "15",
"TRX": "0",
"EOS": "2.5"
}
}
]
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK (opens new window) | List retrieved | [Inline] |
Status Code 200
Name | Type | Description |
---|---|---|
» currency | string | Currency |
» name | string | Currency name |
» name_cn | string | Currency Chinese name |
» deposit | string | Deposits fee |
» withdraw_percent | string | Withdrawal fee rate percentage |
» withdraw_fix | string | Fixed withdrawal fee |
» withdraw_day_limit | string | Daily allowed withdrawal amount |
» withdraw_amount_mini | string | Minimum withdrawal amount |
» withdraw_day_limit_remain | string | Daily withdrawal amount left |
» withdraw_eachtime_limit | string | Maximum amount for each withdrawal |
» withdraw_fix_on_chains | object | Fixed withdrawal fee on multiple chains |
»» additionalProperties | string | none |
WARNING
To perform this operation, you must be authenticated by API key and secret
Code samples
# coding: utf-8
import requests
import time
import hashlib
import hmac
host = "https://api.gatemt.com"
prefix = "/api/v4"
headers = {'Accept': 'application/json', 'Content-Type': 'application/json'}
url = '/wallet/sub_account_balances'
query_param = ''
# for `gen_sign` implementation, refer to section `Authentication` above
sign_headers = gen_sign('GET', prefix + url, query_param)
headers.update(sign_headers)
r = requests.request('GET', host + prefix + url, headers=headers)
print(r.json())
key="YOUR_API_KEY"
secret="YOUR_API_SECRET"
host="https://api.gatemt.com"
prefix="/api/v4"
method="GET"
url="/wallet/sub_account_balances"
query_param=""
body_param=''
timestamp=$(date +%s)
body_hash=$(printf "$body_param" | openssl sha512 | awk '{print $NF}')
sign_string="$method\n$prefix$url\n$query_param\n$body_hash\n$timestamp"
sign=$(printf "$sign_string" | openssl sha512 -hmac "$secret" | awk '{print $NF}')
full_url="$host$prefix$url"
curl -X $method $full_url \
-H "Timestamp: $timestamp" -H "KEY: $key" -H "SIGN: $sign"
GET /wallet/sub_account_balances
Retrieve sub account balances
Name | In | Type | Required | Description |
---|---|---|---|---|
sub_uid | query | string | false | User ID of sub-account, you can query multiple records separated by , . If not specified, it will return the records of all sub accounts |
Example responses
200 Response
[
{
"uid": "10003",
"available": {
"BTC": "0.1",
"GT": "2000",
"USDT": "10"
}
}
]
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK (opens new window) | List retrieved | [Inline] |
Status Code 200
Name | Type | Description |
---|---|---|
» uid | string | User ID |
» available | object | Available balances of currencies |
»» additionalProperties | string | none |
WARNING
To perform this operation, you must be authenticated by API key and secret
Code samples
# coding: utf-8
import requests
import time
import hashlib
import hmac
host = "https://api.gatemt.com"
prefix = "/api/v4"
headers = {'Accept': 'application/json', 'Content-Type': 'application/json'}
url = '/wallet/sub_account_margin_balances'
query_param = ''
# for `gen_sign` implementation, refer to section `Authentication` above
sign_headers = gen_sign('GET', prefix + url, query_param)
headers.update(sign_headers)
r = requests.request('GET', host + prefix + url, headers=headers)
print(r.json())
key="YOUR_API_KEY"
secret="YOUR_API_SECRET"
host="https://api.gatemt.com"
prefix="/api/v4"
method="GET"
url="/wallet/sub_account_margin_balances"
query_param=""
body_param=''
timestamp=$(date +%s)
body_hash=$(printf "$body_param" | openssl sha512 | awk '{print $NF}')
sign_string="$method\n$prefix$url\n$query_param\n$body_hash\n$timestamp"
sign=$(printf "$sign_string" | openssl sha512 -hmac "$secret" | awk '{print $NF}')
full_url="$host$prefix$url"
curl -X $method $full_url \
-H "Timestamp: $timestamp" -H "KEY: $key" -H "SIGN: $sign"
GET /wallet/sub_account_margin_balances
Query sub accounts' margin balances
Name | In | Type | Required | Description |
---|---|---|---|---|
sub_uid | query | string | false | User ID of sub-account, you can query multiple records separated by , . If not specified, it will return the records of all sub accounts |
Example responses
200 Response
[
{
"uid": "10000",
"available": [
{
"locked": false,
"currency_pair": "BTC_USDT",
"risk": "9999.99",
"base": {
"available": "0.1",
"borrowed": "0",
"interest": "0",
"currency": "BTC",
"locked": "0"
},
"quote": {
"available": "0",
"borrowed": "0",
"interest": "0",
"currency": "USDT",
"locked": "0"
}
}
]
}
]
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK (opens new window) | List retrieved | [Inline] |
Status Code 200
Name | Type | Description |
---|---|---|
» uid | string | User ID |
» available | array | Margin account balances |
»» None | object | Margin account detail. base refers to base currency, while `quotes to quote currency |
»»» currency_pair | string | Currency pair |
»»» locked | boolean | Whether account is locked |
»»» risk | string | Current risk rate of margin account |
»»» base | object | Account currency details |
»»»» currency | string | Currency name |
»»»» available | string | Amount suitable for margin trading. |
»»»» locked | string | Locked amount, used in margin trading |
»»»» borrowed | string | Borrowed amount |
»»»» interest | string | Unpaid interests |
»»» quote | object | Account currency details |
»»»» currency | string | Currency name |
»»»» available | string | Amount suitable for margin trading. |
»»»» locked | string | Locked amount, used in margin trading |
»»»» borrowed | string | Borrowed amount |
»»»» interest | string | Unpaid interests |
WARNING
To perform this operation, you must be authenticated by API key and secret
Code samples
# coding: utf-8
import requests
import time
import hashlib
import hmac
host = "https://api.gatemt.com"
prefix = "/api/v4"
headers = {'Accept': 'application/json', 'Content-Type': 'application/json'}
url = '/wallet/sub_account_futures_balances'
query_param = ''
# for `gen_sign` implementation, refer to section `Authentication` above
sign_headers = gen_sign('GET', prefix + url, query_param)
headers.update(sign_headers)
r = requests.request('GET', host + prefix + url, headers=headers)
print(r.json())
key="YOUR_API_KEY"
secret="YOUR_API_SECRET"
host="https://api.gatemt.com"
prefix="/api/v4"
method="GET"
url="/wallet/sub_account_futures_balances"
query_param=""
body_param=''
timestamp=$(date +%s)
body_hash=$(printf "$body_param" | openssl sha512 | awk '{print $NF}')
sign_string="$method\n$prefix$url\n$query_param\n$body_hash\n$timestamp"
sign=$(printf "$sign_string" | openssl sha512 -hmac "$secret" | awk '{print $NF}')
full_url="$host$prefix$url"
curl -X $method $full_url \
-H "Timestamp: $timestamp" -H "KEY: $key" -H "SIGN: $sign"
GET /wallet/sub_account_futures_balances
Query sub accounts' futures account balances
Name | In | Type | Required | Description |
---|---|---|---|---|
sub_uid | query | string | false | User ID of sub-account, you can query multiple records separated by , . If not specified, it will return the records of all sub accounts |
settle | query | string | false | Query only balances of specified settle currency |
Example responses
200 Response
[
{
"uid": "10003",
"available": {
"BTC": "0.1",
"GT": "2000",
"USDT": "10"
}
}
]
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK (opens new window) | List retrieved | [Inline] |
Status Code 200
Name | Type | Description |
---|---|---|
» uid | string | User ID |
» available | object | Futures account balances |
»» additionalProperties | object | none |
»»» total | string | total is the balance after the user's accumulated deposit, withdraw, profit and loss (including realized profit and loss, fund, fee and referral rebate), excluding unrealized profit and loss. total = SUM(history_dnw, history_pnl, history_fee, history_refr, history_fund) |
»»» unrealised_pnl | string | Unrealized PNL |
»»» position_margin | string | Position margin |
»»» order_margin | string | Order margin of unfinished orders |
»»» available | string | The available balance for transferring or trading(including bonus. Bonus can't be be withdrawn. The transfer amount needs to deduct the bonus) |
»»» point | string | POINT amount |
»»» currency | string | Settle currency |
»»» in_dual_mode | boolean | Whether dual mode is enabled |
»»» enable_credit | boolean | Whether portfolio margin account mode is enabled |
»»» position_initial_margin | string | Initial margin position, applicable to the portfolio margin account model |
»»» maintenance_margin | string | Maintenance margin position, applicable to the portfolio margin account model |
»»» bonus | string | Perpetual Contract Bonus |
»»» history | object | Statistical data |
»»»» dnw | string | total amount of deposit and withdraw |
»»»» pnl | string | total amount of trading profit and loss |
»»»» fee | string | total amount of fee |
»»»» refr | string | total amount of referrer rebates |
»»»» fund | string | total amount of funding costs |
»»»» point_dnw | string | total amount of point deposit and withdraw |
»»»» point_fee | string | total amount of point fee |
»»»» point_refr | string | total amount of referrer rebates of point fee |
»»»» bonus_dnw | string | total amount of perpetual contract bonus transfer |
»»»» bonus_offset | string | total amount of perpetual contract bonus deduction |
WARNING
To perform this operation, you must be authenticated by API key and secret
Code samples
# coding: utf-8
import requests
import time
import hashlib
import hmac
host = "https://api.gatemt.com"
prefix = "/api/v4"
headers = {'Accept': 'application/json', 'Content-Type': 'application/json'}
url = '/wallet/sub_account_cross_margin_balances'
query_param = ''
# for `gen_sign` implementation, refer to section `Authentication` above
sign_headers = gen_sign('GET', prefix + url, query_param)
headers.update(sign_headers)
r = requests.request('GET', host + prefix + url, headers=headers)
print(r.json())
key="YOUR_API_KEY"
secret="YOUR_API_SECRET"
host="https://api.gatemt.com"
prefix="/api/v4"
method="GET"
url="/wallet/sub_account_cross_margin_balances"
query_param=""
body_param=''
timestamp=$(date +%s)
body_hash=$(printf "$body_param" | openssl sha512 | awk '{print $NF}')
sign_string="$method\n$prefix$url\n$query_param\n$body_hash\n$timestamp"
sign=$(printf "$sign_string" | openssl sha512 -hmac "$secret" | awk '{print $NF}')
full_url="$host$prefix$url"
curl -X $method $full_url \
-H "Timestamp: $timestamp" -H "KEY: $key" -H "SIGN: $sign"
GET /wallet/sub_account_cross_margin_balances
Query subaccount's cross_margin account info
Name | In | Type | Required | Description |
---|---|---|---|---|
sub_uid | query | string | false | User ID of sub-account, you can query multiple records separated by , . If not specified, it will return the records of all sub accounts |
Example responses
200 Response
[
{
"uid": "100000",
"available": {
"user_id": 100003,
"locked": false,
"total": "20.000000",
"borrowed": "0.000000",
"interest": "0",
"borrowed_net": "0",
"net": "20",
"leverage": "3",
"risk": "9999.99",
"total_initial_margin": "0.00",
"total_margin_balance": "20.00",
"total_maintenance_margin": "0.00",
"total_initial_margin_rate": "9999.9900",
"total_maintenance_margin_rate": "9999.9900",
"total_available_margin": "20.00",
"balances": {
"USDT": {
"available": "20.000000",
"freeze": "0.000000",
"borrowed": "0.000000",
"interest": "0.000000"
}
}
}
}
]
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK (opens new window) | List retrieved | [Inline] |
Status Code 200
Name | Type | Description |
---|---|---|
» uid | string | User ID |
» available | object | none |
»» user_id | integer(int64) | User ID of the cross margin account. 0 means that the subaccount has not yet opened a cross margin account |
»» locked | boolean | Whether account is locked |
»» balances | object | none |
»»» CrossMarginBalance | object | none |
»»»» available | string | Available amount |
»»»» freeze | string | Locked amount |
»»»» borrowed | string | Borrowed amount |
»»»» interest | string | Unpaid interests |
»»» total | string | Total account value in USDT, i.e., the sum of all currencies' (available+freeze)*price*discount |
»»» borrowed | string | Total borrowed value in USDT, i.e., the sum of all currencies' borrowed*price*discount |
»»» borrowed_net | string | Total borrowed value in USDT * borrowed factor |
»»» net | string | Total net assets in USDT |
»»» leverage | string | Position leverage |
»»» interest | string | Total unpaid interests in USDT, i.e., the sum of all currencies' interest*price*discount |
»»» risk | string | Risk rate. When it belows 110%, liquidation will be triggered. Calculation formula: total / (borrowed+interest) |
»»» total_initial_margin | string | Total initial margin |
»»» total_margin_balance | string | Total margin balance |
»»» total_maintenance_margin | string | Total maintenance margin |
»»» total_initial_margin_rate | string | Total initial margin rate |
»»» total_maintenance_margin_rate | string | Total maintenance margin rate |
»»» total_available_margin | string | Total available margin |
WARNING
To perform this operation, you must be authenticated by API key and secret
Code samples
# coding: utf-8
import requests
import time
import hashlib
import hmac
host = "https://api.gatemt.com"
prefix = "/api/v4"
headers = {'Accept': 'application/json', 'Content-Type': 'application/json'}
url = '/wallet/saved_address'
query_param = 'currency=USDT'
# for `gen_sign` implementation, refer to section `Authentication` above
sign_headers = gen_sign('GET', prefix + url, query_param)
headers.update(sign_headers)
r = requests.request('GET', host + prefix + url + "?" + query_param, headers=headers)
print(r.json())
key="YOUR_API_KEY"
secret="YOUR_API_SECRET"
host="https://api.gatemt.com"
prefix="/api/v4"
method="GET"
url="/wallet/saved_address"
query_param="currency=USDT"
body_param=''
timestamp=$(date +%s)
body_hash=$(printf "$body_param" | openssl sha512 | awk '{print $NF}')
sign_string="$method\n$prefix$url\n$query_param\n$body_hash\n$timestamp"
sign=$(printf "$sign_string" | openssl sha512 -hmac "$secret" | awk '{print $NF}')
full_url="$host$prefix$url?$query_param"
curl -X $method $full_url \
-H "Timestamp: $timestamp" -H "KEY: $key" -H "SIGN: $sign"
GET /wallet/saved_address
Query saved address
Name | In | Type | Required | Description |
---|---|---|---|---|
currency | query | string | true | Currency |
chain | query | string | false | Chain name |
limit | query | string | false | Maximum number returned, 100 at most |
Example responses
200 Response
[
{
"currency": "usdt",
"chain": "TRX",
"address": "TWYirLzw2RARB2jfeFcfRPmeuU3rC7rakT",
"name": "gate",
"tag": "",
"verified": "1"
}
]
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK (opens new window) | List retrieved | [Inline] |
Status Code 200
Name | Type | Description |
---|---|---|
» currency | string | Currency |
» chain | string | Chain name |
» address | string | Address |
» name | string | Name |
» tag | string | Tag |
» verified | string | Whether to pass the verification 0-unverified, 1-verified |
WARNING
To perform this operation, you must be authenticated by API key and secret
Code samples
# coding: utf-8
import requests
import time
import hashlib
import hmac
host = "https://api.gatemt.com"
prefix = "/api/v4"
headers = {'Accept': 'application/json', 'Content-Type': 'application/json'}
url = '/wallet/fee'
query_param = ''
# for `gen_sign` implementation, refer to section `Authentication` above
sign_headers = gen_sign('GET', prefix + url, query_param)
headers.update(sign_headers)
r = requests.request('GET', host + prefix + url, headers=headers)
print(r.json())
key="YOUR_API_KEY"
secret="YOUR_API_SECRET"
host="https://api.gatemt.com"
prefix="/api/v4"
method="GET"
url="/wallet/fee"
query_param=""
body_param=''
timestamp=$(date +%s)
body_hash=$(printf "$body_param" | openssl sha512 | awk '{print $NF}')
sign_string="$method\n$prefix$url\n$query_param\n$body_hash\n$timestamp"
sign=$(printf "$sign_string" | openssl sha512 -hmac "$secret" | awk '{print $NF}')
full_url="$host$prefix$url"
curl -X $method $full_url \
-H "Timestamp: $timestamp" -H "KEY: $key" -H "SIGN: $sign"
GET /wallet/fee
Retrieve personal trading fee
Name | In | Type | Required | Description |
---|---|---|---|---|
currency_pair | query | string | false | Specify a currency pair to retrieve precise fee rate |
settle | query | string | false | Specify the settlement currency of the contract to get more accurate rate settings |
currency_pair: Specify a currency pair to retrieve precise fee rate
This field is optional. In most cases, the fee rate is identical among all currency pairs
settle: Specify the settlement currency of the contract to get more accurate rate settings
This field is optional. Generally, the rate settings for all settlement currencies are the same.
Parameter | Value |
---|---|
settle | BTC |
settle | USDT |
settle | USD |
Example responses
200 Response
{
"user_id": 10001,
"taker_fee": "0.002",
"maker_fee": "0.002",
"futures_taker_fee": "-0.00025",
"futures_maker_fee": "0.00075",
"gt_discount": false,
"gt_taker_fee": "0",
"gt_maker_fee": "0",
"loan_fee": "0.18",
"point_type": "1"
}
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK (opens new window) | Successfully retrieved | Inline |
Status Code 200
Name | Type | Description |
---|---|---|
» user_id | integer(int64) | User ID |
» taker_fee | string | taker fee rate |
» maker_fee | string | maker fee rate |
» gt_discount | boolean | If GT deduction is enabled |
» gt_taker_fee | string | Taker fee rate if using GT deduction. It will be 0 if GT deduction is disabled |
» gt_maker_fee | string | Maker fee rate if using GT deduction. It will be 0 if GT deduction is disabled |
» loan_fee | string | Loan fee rate of margin lending |
» point_type | string | Point type. 0 - Initial version. 1 - new version since 202009 |
» futures_taker_fee | string | Futures trading taker fee |
» futures_maker_fee | string | Future trading maker fee |
WARNING
To perform this operation, you must be authenticated by API key and secret
Code samples
# coding: utf-8
import requests
import time
import hashlib
import hmac
host = "https://api.gatemt.com"
prefix = "/api/v4"
headers = {'Accept': 'application/json', 'Content-Type': 'application/json'}
url = '/wallet/total_balance'
query_param = ''
# for `gen_sign` implementation, refer to section `Authentication` above
sign_headers = gen_sign('GET', prefix + url, query_param)
headers.update(sign_headers)
r = requests.request('GET', host + prefix + url, headers=headers)
print(r.json())
key="YOUR_API_KEY"
secret="YOUR_API_SECRET"
host="https://api.gatemt.com"
prefix="/api/v4"
method="GET"
url="/wallet/total_balance"
query_param=""
body_param=''
timestamp=$(date +%s)
body_hash=$(printf "$body_param" | openssl sha512 | awk '{print $NF}')
sign_string="$method\n$prefix$url\n$query_param\n$body_hash\n$timestamp"
sign=$(printf "$sign_string" | openssl sha512 -hmac "$secret" | awk '{print $NF}')
full_url="$host$prefix$url"
curl -X $method $full_url \
-H "Timestamp: $timestamp" -H "KEY: $key" -H "SIGN: $sign"
GET /wallet/total_balance
Retrieve user's total balances
This endpoint returns an approximate sum of exchanged amount from all currencies to input currency for each account.The exchange rate and account balance could have been cached for at most 1 minute. It is not recommended to use its result for any trading calculation.
For trading calculation, use the corresponding account query endpoint for each account type. For example:
GET /spot/accounts
to query spot account balanceGET /margin/accounts
to query margin account balanceGET /futures/{settle}/accounts
to query futures account balanceName | In | Type | Required | Description |
---|---|---|---|---|
currency | query | string | false | Currency unit used to calculate the balance amount. BTC, CNY, USD and USDT are allowed. USDT is the default. |
Example responses
200 Response
{
"details": {
"cross_margin": {
"amount": "0",
"currency": "USDT"
},
"spot": {
"currency": "USDT",
"amount": "42264489969935775.5160259954878034182418"
},
"finance": {
"amount": "662714381.70310327810191647181",
"currency": "USDT"
},
"margin": {
"amount": "1259175.664137668554329559",
"currency": "USDT"
},
"quant": {
"amount": "591702859674467879.6488202650892478553852",
"currency": "USDT"
},
"futures": {
"amount": "2384175.5606114082065",
"currency": "USDT"
},
"delivery": {
"currency": "USDT",
"amount": "1519804.9756702"
},
"warrant": {
"amount": "0",
"currency": "USDT"
},
"cbbc": {
"currency": "USDT",
"amount": "0"
}
},
"total": {
"currency": "USDT",
"amount": "633967350312281193.068368815439797304437"
}
}
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK (opens new window) | Request is valid and is successfully responded | Inline |
Status Code 200
User's balance in all accounts
Name | Type | Description |
---|---|---|
» total | object | Total balances calculated with specified currency unit |
»» amount | string | Account total balance amount |
»» currency | string | Currency |
» details | object | Total balances in different accounts - cross_margin: cross margin account - spot: spot account - finance: finance account - margin: margin account - quant: quant account - futures: futures account - delivery: delivery account - warrant: warrant account - cbbc: cbbc account |
»» additionalProperties | object | Total balances calculated with specified currency unit |
»»» amount | string | Account total balance amount |
»»» currency | string | Currency |
Property | Value |
---|---|
currency | BTC |
currency | CNY |
currency | USD |
currency | USDT |
currency | BTC |
currency | CNY |
currency | USD |
currency | USDT |
WARNING
To perform this operation, you must be authenticated by API key and secret
{
"id": "string",
"base": "string",
"quote": "string",
"fee": "string",
"min_base_amount": "string",
"min_quote_amount": "string",
"amount_precision": 0,
"precision": 0,
"trade_status": "untradable",
"sell_start": 0,
"buy_start": 0
}
Spot currency pair
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
id | string | false | none | Currency pair |
base | string | false | none | Base currency |
quote | string | false | none | Quote currency |
fee | string | false | none | Trading fee |
min_base_amount | string | false | none | Minimum amount of base currency to trade, null means no limit |
min_quote_amount | string | false | none | Minimum amount of quote currency to trade, null means no limit |
amount_precision | integer | false | none | Amount scale |
precision | integer | false | none | Price scale |
trade_status | string | false | none | How currency pair can be traded - untradable: cannot be bought or sold - buyable: can be bought - sellable: can be sold - tradable: can be bought or sold |
sell_start | integer(int64) | false | none | Sell start unix timestamp in seconds |
buy_start | integer(int64) | false | none | Buy start unix timestamp in seconds |
Property | Value |
---|---|
trade_status | untradable |
trade_status | buyable |
trade_status | sellable |
trade_status | tradable |
{
"id": "string",
"text": "string",
"amend_text": "string",
"create_time": "string",
"update_time": "string",
"create_time_ms": 0,
"update_time_ms": 0,
"status": "open",
"currency_pair": "string",
"type": "limit",
"account": "spot",
"side": "buy",
"amount": "string",
"price": "string",
"time_in_force": "gtc",
"iceberg": "string",
"auto_borrow": true,
"auto_repay": true,
"left": "string",
"fill_price": "string",
"filled_total": "string",
"avg_deal_price": "string",
"fee": "string",
"fee_currency": "string",
"point_fee": "string",
"gt_fee": "string",
"gt_maker_fee": "string",
"gt_taker_fee": "string",
"gt_discount": true,
"rebated_fee": "string",
"rebated_fee_currency": "string",
"stp_id": 0,
"stp_act": "cn",
"finish_as": "open"
}
Spot order details
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
id | string | false | read-only | Order ID |
text | string | false | none | User defined information. If not empty, must follow the rules below: 1. prefixed with t- 2. no longer than 28 bytes without t- prefix3. can only include 0-9, A-Z, a-z, underscore(_), hyphen(-) or dot(.) Besides user defined information, reserved contents are listed below, denoting how the order is created: - 101: from android - 102: from IOS - 103: from IPAD - 104: from webapp - 3: from web - 2: from apiv2 - apiv4: from apiv4 |
amend_text | string | false | read-only | The custom data that the user remarked when amending the order |
create_time | string | false | read-only | Creation time of order |
update_time | string | false | read-only | Last modification time of order |
create_time_ms | integer(int64) | false | read-only | Creation time of order (in milliseconds) |
update_time_ms | integer(int64) | false | read-only | Last modification time of order (in milliseconds) |
status | string | false | read-only | Order status - open : to be filled- closed : filled- cancelled : cancelled |
currency_pair | string | true | none | Currency pair |
type | string | false | none | Order Type - limit : Limit Order - market : Market Order |
account | string | false | none | Account type. spot - use spot account; margin - use margin account; cross_margin - use cross margin account. Portfolio margin account must set to cross-margin |
side | string | true | none | Order side |
amount | string | true | none | When type is limit, it refers to base currency. For instance, BTC_USDT means BTC When type is market , it refers to different currency according to side - side : buy means quote currency, BTC_USDT means USDT - side : sell means base currency,BTC_USDT means BTC |
price | string | false | none | Price can't be empty when type = limit |
time_in_force | string | false | none | Time in force - gtc: GoodTillCancelled - ioc: ImmediateOrCancelled, taker only - poc: PendingOrCancelled, makes a post-only order that always enjoys a maker fee - fok: FillOrKill, fill either completely or none Only ioc and fok are supported when type =market |
iceberg | string | false | none | Amount to display for the iceberg order. Null or 0 for normal orders. Hiding all amount is not supported. |
auto_borrow | boolean | false | write-only | Used in margin or cross margin trading to allow automatic loan of insufficient amount if balance is not enough. |
auto_repay | boolean | false | none | Enable or disable automatic repayment for automatic borrow loan generated by cross margin order. Default is disabled. Note that: 1. This field is only effective for cross margin orders. Margin account does not support setting auto repayment for orders. 2. auto_borrow and auto_repay cannot be both set to true in one order. |
left | string | false | read-only | Amount left to fill |
fill_price | string | false | read-only | Total filled in quote currency. Deprecated in favor of filled_total |
filled_total | string | false | read-only | Total filled in quote currency |
avg_deal_price | string | false | read-only | Average fill price |
fee | string | false | read-only | Fee deducted |
fee_currency | string | false | read-only | Fee currency unit |
point_fee | string | false | read-only | Points used to deduct fee |
gt_fee | string | false | read-only | GT used to deduct fee |
gt_maker_fee | string | false | read-only | GT used to deduct maker fee |
gt_taker_fee | string | false | read-only | GT used to deduct taker fee |
gt_discount | boolean | false | read-only | Whether GT fee discount is used |
rebated_fee | string | false | read-only | Rebated fee |
rebated_fee_currency | string | false | read-only | Rebated fee currency unit |
stp_id | integer | false | read-only | Orders between users in the same stp_id group are not allowed to be self-traded1. If the stp_id of two orders being matched is non-zero and equal, they will not be executed. Instead, the corresponding strategy will be executed based on the stp_act of the taker.2. stp_id returns 0 by default for orders that have not been set for STP group |
stp_act | string | false | none | Self-Trading Prevention Action. Users can use this field to set self-trade prevetion strategies 1. After users join the STP Group , he can pass stp_act to limit the user's self-trade prevetion strategy. If stp_act is not passed, the default is cn strategy。2. When the user does not join the STP group , an error will be returned when passing the stp_act parameter。3. If stp_act parameter is not provided when placing a order, stp_act field of the order does not return。- cn: Cancel newest, Cancel new orders and keep old ones - co: Cancel oldest, Cancel old orders and keep new ones - cb: Cancel both, Both old and new orders will be cancelled |
finish_as | string | false | read-only | How the order was finished. - open: processing - filled: filled totally - cancelled: manually cancelled - ioc: time in force is IOC , finish immediately- stp: cancelled because self trade prevention |
Property | Value |
---|---|
status | open |
status | closed |
status | cancelled |
type | limit |
type | market |
account | spot |
account | margin |
account | cross_margin |
side | buy |
side | sell |
time_in_force | gtc |
time_in_force | ioc |
time_in_force | poc |
time_in_force | fok |
stp_act | cn |
stp_act | co |
stp_act | cb |
finish_as | open |
finish_as | filled |
finish_as | cancelled |
finish_as | ioc |
finish_as | stp |