Informasi Umum API REST
- Base URL: https://api-adapter.backend.currency.com
- Base URL, akun demo: https://demo-api-adapter.backend.currency.com
- Semua return endpoint berupa object atau array JSON.
- Return data ditampilkan dalam urutan naik. Data yang paling lama lebih dulu, yang paling baru di tempat terakhir.
- Semua bidang yang berkaitan dengan waktu dan timestamp dinyatakan dalam milidetik.
- Semua token aset kecuali token perusahaan, token obligasi, token KARMA.cx, dan token aset dari pasar Hong Kong, tersedia dalam API versi pertama (v1). Dalam API versi kedua (v2), pasar Hong Kong sudah tersedia.
- Daftar aset yang tersedia untuk trading leverage dalam API bisa ditemukan di sini.
- Ketika menentukan pasar, limit order, atau stop order, dan menyebutkan jumlah angka presisi yang lebih besar daripada yang diperlukan untuk token tertentu, berlaku pembulatan ke bawah. Presisi yang diperbolehkan dapat ditemukan dalam respons permintaan exchangeInfo, parameter quotePrecision.
- Ketika menyebutkan jumlah angka presisi yang lebih besar untuk parameter harga, berlaku pembulatan ke atas. Presisi yang diperbolehkan dapat ditemukan dalam respons permintaan exchangeInfo, parameter quotePrecision.
Silakan merujuk pada area API REST di Swagger untuk mendapatkan informasi yang Anda butuhkan.
Troubleshooting
Kode Respons HTTP
- Kode respons HTTP 4XX digunakan untuk permintaan yang salah format, masalahnya ada di sisi pengirim.
- Kode respons HTTP 403 digunakan ketika melanggar batas WAF (Web Application Firewall).
- Kode respons HTTP 429 digunakan ketika melebihi batas jumlah permintaan.
- Kode respons HTTP 418 digunakan ketika IP diblokir otomatis karena terus mengirim permintaan setelah menerima kode 429.
- Kode respons HTTP 5XX digunakan untuk eror internal, masalahnya ada di sisi Currency.com. JANGAN menganggap kode ini muncul karena gagal operasi, status ekekusinya TIDAK DIKETAHUI dan mungkin saja berhasil.
Kode Error
- Semua endpoint dapat merespons dengan ERROR.
Sampel Payload:
{
"code": -1121,
"msg": "Invalid symbol."
}
- Kode dan pesan spesifik diterangkan dalam Kode Error.
Informasi Umum tentang Endpoint
- Untuk endpoint
GET
, parameter harus dikirim sebagaiquery string
. - Untuk endpoint
POST
,PUT
, danDELETE
, parameter dapat dikirim sebagai query string atau dalam badan permintaan dengan tipe konten application/x-www-form-urlencoded. Anda bisa menggabungkan parameter query string dan badan permintaan jika memilih demikian. Parameter dapat dikirim dalam urutan apa pun. - Parameter dapat dikirim dalam urutan apa pun.
- Jika parameter dikirim dalam query string dan badan permintaan, parameter query string yang akan digunakan.
Tipe Keamanan Endpoint
- Tiap endpoint memiliki tipe keamanan yang menentukan bagaimana interaksi Anda dengan endpoint tersebut. Tipe keamanan ini dinyatakan di samping NAMA tiap endpoint.
- Jika tidak ada keterangan, asumsikan bahwa tipe keamanannya NONE.
- Kunci API diteruskan ke API REST via header X-MBX-APIKEY.
- Kunci API dan kunci rahasia sangat sensitif.
- Kunci API hanya dapat dikonfigurasi untuk mengakses tipe endpoint tertentu yang aman. Misalnya, satu kunci API dapat digunakan untuk TRADE saja, sementara kunci API lain dapat mengakses apa saja selain rute TRADE.
- Secara default, kunci API dapat mengakses semua rute aman.
Tipe Keamanan | Deskripsi |
---|---|
NONE | Endpoint dapat diakses dengan bebas |
TRADE | Endpoint meminta pengiriman kunci API dan signature valid |
USER_DATA | Endpoint meminta pengiriman kunci API dan signature valid |
USER_STREAM | Endpoint meminta pengiriman kunci API valid |
MARKET_DATA | Endpoint meminta pengiriman kunci API valid |
- Endpoint
TRADE
danUSER_DATA
adalah endpointSIGNED
.
Keamanan Endpoint SIGNED (TRADE, USER_DATA, DAN MARGIN)
- Endpoint SIGNED membutuhkan parameter tambahan dan signature untuk dikirim dalam query string atau badan permintaan.
- Endpoint menggunakan signature HMAC SHA256. Signature HMAC SHA256 adalah operasi HMAC SHA256 yang terkunci. Gunakan secretKey Anda sebagai kunci dan totalParams sebagai nilai operasi HMAC.
- Signature tidak bersifat sensitif.
- totalParams adalah query string yang digabungkan dengan badan permintaan.
Keamanan Pengaturan Waktu
- Endpoint SIGNED juga membutuhkan pengiriman parameter timestamp, yang harus merupakan timestamp milidetik ketika permintaan dibuat dan dikirim.
- Parameter tambahan, yaitu recvWindow, dapat dikirim untuk mengidentifikasi jumlah milidetik setelah permintaan timestamp valid. Jika recvWindow § tidak dikirim, maka akan menggunakan nilai default 5000.
Logikanya sebagai berikut:
if (timestamp < (serverTime + 1000) && (serverTime -
timestamp) <= recvWindow)
{
// process request
}
else
{
// reject request
}
Keberhasilan trading sangat ditentukan oleh pengaturan waktu. Jaringan tidak selalu stabil dan reliabel, dan pada saat terjadi gangguan, permintaan Anda membutuhkan waktu berbeda-beda untuk mencapai server. Dengan recvWindow, Anda bisa memastikan permintaan harus diproses dalam milidetik tertentu atau ditolak oleh server.
Waktu yang disarankan untuk recvWindow adalah 5000 milidetik atau kurang! Maksimalnya tidak dapat melebihi 60.000!
Contoh Endpoint SIGNED untuk POST /api/v1/order
Berikut contoh langkah demi langkah mengirim payload valid dari command line Linux menggunakan echo, openssl, dan curl.
Kunci | Nilai |
---|---|
apiKey | vmPUZE6mv9SD5VNHk4HlWFsOr6aKE2zvsw0MuIgwCIPy6utIco14y7Ju91duEh8A |
secretKey | NhqPtmdSJYdKjVHjA7PZj4Mge3R5YNiP1e3UZjInClVN65XAbvqqM6A7H5fATj0j |
Parameter | Nilai |
---|---|
symbol | LTC/BTC |
side | BUY |
type | LIMIT |
timeInforce | GTC |
quantity | 1 |
price | 0,1 |
recvWindow | 5000 |
timestamp | 1499827319559 |
Harap diperhatikan bahwa beberapa simbol seperti '/' harus merupakan url yang dikodekan dan diubah menjadi kombinasi '%2F'.
Contoh 1: Sebagai badan permintaan
requestBody:
symbol=LTC%2FBTC&side=BUY&type=LIMIT&timeInForce=GTC&quantity=1&price=0.1&recvWindow=5000×tamp=1499827319559
HMAC SHA256 signature
[linux]$ echo -n
"symbol=LTC%2FBTC&side=BUY&type=LIMIT&timeInForce=GTC&quantity=1&price=0.1&recvWindow=5000×tamp=1499827319559" | openssl dgst -sha256 -hmac
"NhqPtmdSJYdKjVHjA7PZj4Mge3R5YNiP1e3UZjInClVN65XAbvqqM6A7H5fATj0j"
(stdin)= ebec6528b2beb508b2417fa33453a4ad28c1aae8097bb243caa60d0524036f50
curl command:
(HMAC SHA256)
[linux]$ curl -H "X-MBX-APIKEY:
vmPUZE6mv9SD5VNHk4HlWFsOr6aKE2zvsw0MuIgwCIPy6utIco14y7Ju91duEh8A" -X POST 'https://api-adapter.backend.currency.com/api/v1/order' -d
'symbol=LTC%2FBTC&side=BUY&type=LIMIT&timeInForce=GTC&quantity=1&price=0.1&recvWindow=5000×tamp=1499827319559&signature=ebec6528b2beb508b2417fa33453a4ad28c1aae8097bb243caa60d0524036f50'
Contoh 2: Sebagai query string
queryString:
symbol=LTC%2FBTC&side=BUY&type=LIMIT&timeInForce=GTC&quantity=1&price=0.1&recvWindow=5000×tamp=1499827319559
HMAC SHA256 signature:
[linux]$ echo -n
"symbol=LTC%2FBTC&side=BUY&type=LIMIT&timeInForce=GTC&quantity=1&price=0.1&recvWindow=5000×tamp=1499827319559" | openssl dgst -sha256 -hmac
"NhqPtmdSJYdKjVHjA7PZj4Mge3R5YNiP1e3UZjInClVN65XAbvqqM6A7H5fATj0j"
(stdin)= ebec6528b2beb508b2417fa33453a4ad28c1aae8097bb243caa60d0524036f50
curl command:
(HMAC SHA256)
[linux]$ curl -H "X-MBX-APIKEY:
vmPUZE6mv9SD5VNHk4HlWFsOr6aKE2zvsw0MuIgwCIPy6utIco14y7Ju91duEh8A" -X POST 'https://api-adapter.backend.currency.com/api/v1/order?symbol=LTC%2FBTC&side=BUY&type=LIMIT&timeInForce=GTC&quantity=1&price=0.1&recvWindow=5000×tamp=1499827319559&signature=ebec6528b2beb508b2417fa33453a4ad28c1aae8097bb243caa60d0524036f50'
Contoh Endpoint SIGNED untuk POST /api/v1/order
(mode trading leverage)
Berikut contoh langkah demi langkah mengirim payload valid dari command line Linux menggunakan echo, openssl, dan curl.
Kunci | Nilai |
---|---|
apiKey | vmPUZE6mv9SD5VNHk4HlWFsOr6aKE2zvsw0MuIgwCIPy6utIco14y7Ju91duEh8A |
secretKey | NhqPtmdSJYdKjVHjA7PZj4Mge3R5YNiP1e3UZjInClVN65XAbvqqM6A7H5fATj0j |
Parameter | Nilai |
---|---|
symbol | BTC/USD_LEVERAGE |
side | BUY |
type | MARKET |
timeInforce | GTC |
quantity | 0.01 |
quantity | 2 |
accountId | 2376109060084932 |
takeProfit | 8000 |
stopLoss | 6000 |
recvWindow | 60000 |
timestamp | 1586942164000 |
Harap diperhatikan bahwa beberapa simbol seperti '/' harus merupakan url yang dikodekan dan diubah menjadi kombinasi '%2F'.
Contoh 1: Sebagai badan permintaan
requestBody:
symbol=BTC%2FUSD_LEVERAGE&side=BUY&type=MARKET&timeInForce=GTC&quantity=0.01&leverage=2&accountId=2376109060084932&takeProfit=8000&stopLoss=6000&recvWindow=60000×tamp=1586942164000
HMAC SHA256 signature
[linux]$ echo -n
"symbol=BTC%2FUSD_LEVERAGE&side=BUY&type=MARKET&timeInForce=GTC&quantity=0.01&leverage=2&accountId=2376109060084932&takeProfit=8000&stopLoss=6000&recvWindow=60000×tamp=1586942164000" | openssl dgst -sha256 -hmac
"NhqPtmdSJYdKjVHjA7PZj4Mge3R5YNiP1e3UZjInClVN65XAbvqqM6A7H5fATj0j"
(stdin)= 05fc9fd19c2b1a11215025c5dfa56da2204b04181add67670d4f92049b439f7b
curl command:
(HMAC SHA256)
[linux]$ curl -H "X-MBX-APIKEY:
vmPUZE6mv9SD5VNHk4HlWFsOr6aKE2zvsw0MuIgwCIPy6utIco14y7Ju91duEh8A" -X POST 'https://api-adapter.backend.currency.com/api/v1/order' -d
'symbol=BTC%2FUSD_LEVERAGE&side=BUY&type=MARKET&timeInForce=GTC&quantity=0.01&leverage=2&accountId=2376109060084932&takeProfit=8000&stopLoss=6000&recvWindow=60000×tamp=1586942164000&signature=05fc9fd19c2b1a11215025c5dfa56da2204b04181add67670d4f92049b439f7b'
Contoh 2: Sebagai query string
queryString:
symbol=BTC%2FUSD_LEVERAGE&side=BUY&type=MARKET&timeInForce=GTC&quantity=0.01&leverage=2&accountId=2376109060084932&takeProfit=8000&stopLoss=6000&recvWindow=60000×tamp=1586942164000
HMAC SHA256 signature:
[linux]$ echo -n
"symbol=BTC%2FUSD_LEVERAGE&side=BUY&type=MARKET&timeInForce=GTC&quantity=0.01&leverage=2&accountId=2376109060084932&takeProfit=8000&stopLoss=6000&recvWindow=60000×tamp=1586942164000" | openssl dgst -sha256 -hmac
"NhqPtmdSJYdKjVHjA7PZj4Mge3R5YNiP1e3UZjInClVN65XAbvqqM6A7H5fATj0j"
(stdin)= 05fc9fd19c2b1a11215025c5dfa56da2204b04181add67670d4f92049b439f7b
curl command:
(HMAC SHA256)
[linux]$ curl -H "X-MBX-APIKEY:
vmPUZE6mv9SD5VNHk4HlWFsOr6aKE2zvsw0MuIgwCIPy6utIco14y7Ju91duEh8A" -X POST 'https://api-adapter.backend.currency.com/api/v1/order?symbol=BTC%2FUSD_LEVERAGE&side=BUY&type=MARKET&timeInForce=GTC&quantity=0.01&leverage=2&accountId=2376109060084932&takeProfit=8000&stopLoss=6000&recvWindow=60000×tamp=1586942164000&signature=05fc9fd19c2b1a11215025c5dfa56da2204b04181add67670d4f92049b439f7b
Terminologi
- base asset merujuk pada aset yang merupakan quantity simbol.
- quote asset merujuk pada aset yang merupakan price simbol.
Definisi ENUM
Status order (status):
- NEW
- FILLED
- CANCELED
- REJECTED
Tipe order (orderTypes, type):
- LIMIT
- MARKET
- STOP
Pemasangan order (side):
- BUY
- SELL
Waktu order aktif (timeInForce):
- GTC
- IOC
- FOK
Internal grafik Kline/Candlestick: m -> menit; h -> jam; d -> hari; w -> minggu
- 1m
- 5m
- 15m
- 30m
- 1h
- 4h
- 1d
- 1w
Parameter /klines 'type':
- heiken-ashi