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:

Response:
{ "code": -1121, "msg": "Invalid symbol." }
  • Kode dan pesan spesifik diterangkan dalam Kode Error.

Informasi Umum tentang Endpoint

  • Untuk endpoint GET, parameter harus dikirim sebagai query string.
  • Untuk endpoint POST, PUT, dan DELETE, 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 KeamananDeskripsi
NONEEndpoint dapat diakses dengan bebas
TRADEEndpoint meminta pengiriman kunci API dan signature valid
USER_DATAEndpoint meminta pengiriman kunci API dan signature valid
USER_STREAMEndpoint meminta pengiriman kunci API valid
MARKET_DATAEndpoint meminta pengiriman kunci API valid
  • Endpoint TRADE dan USER_DATA adalah endpoint SIGNED.

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.

KunciNilai
apiKeyvmPUZE6mv9SD5VNHk4HlWFsOr6aKE2zvsw0MuIgwCIPy6utIco14y7Ju91duEh8A
secretKeyNhqPtmdSJYdKjVHjA7PZj4Mge3R5YNiP1e3UZjInClVN65XAbvqqM6A7H5fATj0j
ParameterNilai
symbolLTC/BTC
sideBUY
typeLIMIT
timeInforceGTC
quantity1
price0,1
recvWindow5000
timestamp1499827319559

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&timestamp=1499827319559

HMAC SHA256 signature

[linux]$ echo -n
"symbol=LTC%2FBTC&side=BUY&type=LIMIT&timeInForce=GTC&quantity=1&price=0.1&recvWindow=5000&timestamp=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&timestamp=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&timestamp=1499827319559

HMAC SHA256 signature:

[linux]$ echo -n
"symbol=LTC%2FBTC&side=BUY&type=LIMIT&timeInForce=GTC&quantity=1&price=0.1&recvWindow=5000&timestamp=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&timestamp=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.

KunciNilai
apiKeyvmPUZE6mv9SD5VNHk4HlWFsOr6aKE2zvsw0MuIgwCIPy6utIco14y7Ju91duEh8A
secretKeyNhqPtmdSJYdKjVHjA7PZj4Mge3R5YNiP1e3UZjInClVN65XAbvqqM6A7H5fATj0j
ParameterNilai
symbolBTC/USD_LEVERAGE
sideBUY
typeMARKET
timeInforceGTC
quantity0.01
quantity2
accountId2376109060084932
takeProfit8000
stopLoss6000
recvWindow60000
timestamp1586942164000

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&timestamp=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&timestamp=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&timestamp=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&timestamp=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&timestamp=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&timestamp=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