Git Product home page Git Product logo

kucoin-api-docs's Introduction

KuCoin Developer Documentation Improvement Program

You can visit the live KuCoin developer documentation.

As a people's exchange, KuCoin will strive to support as many document languages as possible for everyone's convenience. In the process, We hope to get everyone's help.

You can help KuCoin to improve and translate developer documentation together.

For document translators with outstanding contributions, KuCoin will reward a small amount of KCS.

If you want to add a language to this document, please follow these steps:

  • add [lang].yml to locales
  • add index.[lang].html.md to source/localizable

If you only need to improve the translation of a language, you can directly modify the corresponding index.[lang].html.md.

KuCoin officially updates the English version after the API change, so the translation should be based on the English version. Before submitting the merge request, please be sure to test it. Do not destroy the main structure of the document.

KuCoin

Slate

The KuCoin Developer Documentation was created with Slate. Check it out at lord.github.io/slate.

Prerequisites

You're going to need:

  • Linux or macOS — Windows may work, but is unsupported.
  • Ruby, version 2.3.1 or newer
  • Bundler — If Ruby is already installed, but the bundle command doesn't work, just run gem install bundler in a terminal.

Getting Set Up

  1. Fork this repository on GitHub.
  2. Clone your forked repository (not our original one) to your hard drive with git clone [email protected]:Kucoin/kucoin-api-docs.git
  3. cd kucoin-api-docs
  4. Initialize and start Slate. You can either do this locally, or with Vagrant:
# either run this to run locally
bundle install
bundle exec middleman server

# OR run this to run with vagrant
vagrant up

You can now see the docs at http://localhost:4567. Whoa! That was fast!

Now that Slate is all set up on your machine, you'll probably want to learn more about editing Slate markdown, or how to publish your docs.

If you'd prefer to use Docker, instructions are available in the wiki.

Note on JavaScript Runtime

For those who don't have JavaScript runtime or are experiencing JavaScript runtime issues with ExecJS, it is recommended to add the rubyracer gem to your gemfile and run bundle again.

Contributors

Slate was built by Robert Lord while interning at TripIt.

Thanks to the following people who have submitted major pull requests:

Also, thanks to Sauce Labs for sponsoring the development of the responsive styles.

Special Thanks

kucoin-api-docs's People

Contributors

1bazinga25 avatar 435844292 avatar codewc avatar dazdeng avatar dependabot[bot] avatar funcss avatar gp0014 avatar hhxsv5 avatar jeasonrunoutlook avatar maot-1990 avatar mingyangwang avatar purekid avatar reetazhang avatar reetazhang-zz avatar vaexexchange avatar xinghui322 avatar zhancong-ted avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

kucoin-api-docs's Issues

keep getting KC-API-SIGN error

below here is my code with google appscript(base on javascript) i really have no clue why this keep getting me error,GET method works fine but nothing works with POST method,please help me. Api key and secret key are both correct and without any issue.

function test(){
var payload={
'clientOid':"UUID",
'payAccountId':'pay id',
'recAccountId':'received id',
'amount':'1',
}
test1('key',secret',payload);
}
function test1(key,secret,payload){
var api_key = key;
var api_secret = secret;
var api_passphrase = "sandbox1234";
var data = JSON.stringify(payload);
var url = 'https://openapi-sandbox.kucoin.com/api/v1/accounts/inner-transfer';
var now = '' + Date.parse(new Date());
var str_to_sign = String(now) + 'POST' + '/api/v1/accounts/inner-transfer'+data;
Logger.log(str_to_sign);
var signature = Utilities.base64Encode(
Utilities.computeHmacSignature(Utilities.MacAlgorithm.HMAC_SHA_256, str_to_sign, api_secret))
var headers = {
"KC-API-SIGN": signature,
"KC-API-TIMESTAMP": String(now),
"KC-API-KEY": api_key,
"KC-API-PASSPHRASE": api_passphrase,
}
var option = {
"Content-Type": "application/json",
'method' : 'post',
'headers' : headers,
'payload' : data,
}
Logger.log(option);
response = UrlFetchApp.fetch(url, option);
Logger.log(response.getContentText());
}
error code
{"code":"400005","msg":"Invalid KC-API-SIGN"}

api v2 authentication

Hi i am having troubles authenticating with api v2. I can't get past error:

400001 Any of KC-API-KEY, KC-API-SIGN, KC-API-TIMESTAMP, KC-API-PASSPHRASE is missing in your request header

Header fields are there (i checked with wireshark):

GET /api/v1/accounts HTTP/1.1
Host: openapi-v2.kucoin.com
Accept: /
Content-Type: application/json
KC-API-KEY: xxxxxxxxxxxxxxxx
KC-API-SIGN: qNgz7z3f9RtACh/f2hEKuydwpGnHsLgxZWZSVUBNpss=
KC-API-TIMESTAMP: 2019-02-18T21:32:29.824Z
KC-API-PASSPHRASE: yyyyyyyyy

I also tried TIMESTAMP with milliseconds. Is there any special order that needs to be followed for header parameters?

Regards,
jsveto

Candles API always return empty data

It seems the /api/v1/market/candles API returns an empty data set for all markets (tried GRIN-BTC, GRIN-LTC), regardless of timeframe (startAt/endAt) or type (tested 1min, 5min, 15min, 1hour).

REST DELETE authorization

I am fairly new to python and am having issues with REST DELETE request. I get a 401 error for "Unauthorized -- Invalid API Key." I use the same auth function for the GET requests without issue. The code is below. Thank you very much.

def AUTH2(request):

    api_key = kclient.API_KEY
    api_secret = kclient.API_SECRET
    api_passphrase = kclient.API_PASSPHRASE
    url = kclient.API_URL+destination
    now = int(time.time() * 1000)
    str_to_sign = str(now) + request + destination
    signature = base64.b64encode(
        hmac.new(api_secret.encode('utf-8'), str_to_sign.encode('utf-8'), hashlib.sha256).digest())
    headers = {
        "KC-API-SIGN": signature,
        "KC-API-TIMESTAMP": str(now),
        "KC-API-KEY": api_key,
        "KC-API-PASSPHRASE": api_passphrase
    }
    return headers  

orderid=item['orderId']
destination='/api/v1/margin/lend/'
print(requests.request('delete',kclient.API_URL+destination+orderid, headers=AUTH2('DELETE')))

Cannot get all open orders

When trying to use endpoint:
var endpoint = $"/api/v1/orders";

I get only trades I opened in last 24 hours.

When I try to use parameters "startAt" and "endAt" none trades are received from response.

There is no error, Data is null.

GET /api/v1/stop-order and api/v1/orders - wrong docs and shadow changes

I am able to place stop orders with POST on /api/v1/orders.
I am not able to find stop orders with GET on /api/v1/orders.
Documentation does not match that.
This used to work different before.

I can get stop orders info with GET on /api/v1/stop-order but they have different response type which DOES NOT match documentation.

Websocket feed problem

Does anybody successfully connected to the new websocket 2.0 feed wss://push1-v2.kucoin.com/endpoint and receiving websocket messages?

Mine stuck at "connecting" state, I don't receive "socket opened" message

Tried both /api/v1/bullet-public & /api/v1/bullet-private, without any success, public & private tokens are ok

All was OK in sandbox and with previous websocket version

Using .NET

Thank you

Order book corruption: sequence numbers are skipped by websocket

On KCS-BTC the sequence ids from level2 updates went from 1550468120937 to 1550468120940. We have a strong indication that actual changes happened to the order book that were not broadcast to the websocket.

Could you please fix this asap?

{"changes":{"asks":[],"bids":[["0","0","1550468120937"]]},"seq":null,"sequenceEnd":1550468120937,"sequenceStart":1550468120937,"symbol":"KCS-BTC","topic":"/market/level2:KCS-BTC"}
{"changes":{"asks":[],"bids":[["0.00014209","1577.26163226","1550468120940"]]},"seq":null,"sequenceEnd":1550468120940,"sequenceStart":1550468120940,"symbol":"KCS-BTC","topic":"/market/level2:KCS-BTC"}

Pong not sent using certain combinations of tokens

When subscribing to the new L3 channels, sometimes the server never sends a pong when a ping is sent.

Pong gets sent for this one
"topic":"/spotMarket/level3:ETH-USDT"

But this one doesn't send a pong
"topic":"/spotMarket/level3:ETH-USDT,BTC-USDT,XRP-USDT"

How to Fetch my Trade / Order history via API.

I have done some trade after v2 upgrade. I am currently trying GET /orders and GET /fills but its returning empty data. My API keys and connection is correct BTW as i was able to fetch by deposits and withdrawals.

Sandbox

Don't you need the rest api but not the Sandbox version? It looks like you have the sandbox version for testing the terrain but not the other that initiates the actual site

Correct procedure for Level-2 market data calibration

Hi,

https://docs.kucoin.com/#level-2-market-data contains:

Calibration procedure:

  1. After receiving the websocket Level 2 data flow, cache the data.
  2. Initiate a REST request to get the snapshot data of Level 2 order book.
  3. Playback the cached Level 2 data flow.
  4. Apply the new Level 2 data flow to the local snapshot to ensure that the sequence of the new Level 2 update lines up with the sequence of the previous Level 2 data. Discard all the message prior to that sequence, and then playback the change to snapshot.
  5. Update the level2 full data based on sequence according to the price and size. If the price is 0, ignore the messages and update the sequence. If the size=0, update the sequence and remove the price of which the size is 0 out of level 2. For other cases, please update the price.

I'm not sure how to correctly proceed in step 3 and 5 as the example JSON update message in the docs does not help me:

{
    "type":"message",
    "topic":"/market/level2:BTC-USDT",
    "subject":"trade.l2update",
    "data":{

        "sequenceStart":1545896669105,
        "sequenceEnd":1545896669106,
        "symbol":"BTC-USDT",
        "changes":{

            "asks":[["6","1","1545896669105"]],           //price, size, sequence
            "bids":[["4","1","1545896669106"]]
        }
    }
}

My questions are:

  1. Are changes.asks (in the JSON above) and changes.bids sorted by price or by sequence numbers or not sorted at all?
  2. Can I apply updates in changes for asks first and then for bids? Or do I need to merge changes.asks and changes.bids, sort by sequence numbers and apply update change after another?
  3. Is there any sample how to correctly implement the calibration procedure mentioned in https://docs.kucoin.com/#level-2-market-data?

Thank you!

Kucoin API - trade at margin

Hi,

I went through your documentation, and I could not find anything on how to place a margin order. Has it not been integrated in the API yet please?

Thanks!

Corruption of order books

Sometimes updates are pushed that are inconsistent. Below the price 0.0033123 is removed from the book:

"data":{"sequenceStart":1550467891609,"symbol":"KCS-ETH","changes":{"asks":[],"bids":[["0.0033123","0","1550467891609"]]},"sequenceEnd":1550467891609},"subject":"trade.l2update","topic":"/market/level2:KCS-ETH","type":"message"}

later we get the same removal (due to a trade) even though in the mean time nothing was added for the same price:

"data":{"sequenceStart":1550467891672,"symbol":"KCS-ETH","changes":{"asks":[],"bids":[["0.0033123","0","1550467891672"]]},"sequenceEnd":1550467891672},"subject":"trade.l2update","topic":"/market/level2:KCS-ETH","type":"message"

Here is the complete log to prove it (the sequence numbers are sequential):

{"data":{"sequenceStart":1550467891609,"symbol":"KCS-ETH","changes":{"asks":[],"bids":[["0.0033123","0","1550467891609"]]},"sequenceEnd":1550467891609},"subject":"trade.l2update","topic":"/market/level2:KCS-ETH","type":"message"}
{"data":{"sequenceStart":1550467891610,"symbol":"KCS-ETH","changes":{"asks":[],"bids":[["0","0","1550467891610"]]},"sequenceEnd":1550467891610},"subject":"trade.l2update","topic":"/market/level2:KCS-ETH","type":"message"}
{"data":{"sequenceStart":1550467891611,"symbol":"KCS-ETH","changes":{"asks":[],"bids":[["0.0033121","130.6118574","1550467891611"]]},"sequenceEnd":1550467891611},"subject":"trade.l2update","topic":"/market/level2:KCS-ETH","type":"message"}
{"data":{"sequenceStart":1550467891612,"symbol":"KCS-ETH","changes":{"asks":[["0","0","1550467891612"]],"bids":[]},"sequenceEnd":1550467891612},"subject":"trade.l2update","topic":"/market/level2:KCS-ETH","type":"message"}
{"data":{"sequenceStart":1550467891613,"symbol":"KCS-ETH","changes":{"asks":[["0.0033998","187.102","1550467891613"]],"bids":[]},"sequenceEnd":1550467891613},"subject":"trade.l2update","topic":"/market/level2:KCS-ETH","type":"message"}
{"data":{"sequenceStart":1550467891614,"symbol":"KCS-ETH","changes":{"asks":[["0","0","1550467891614"]],"bids":[]},"sequenceEnd":1550467891614},"subject":"trade.l2update","topic":"/market/level2:KCS-ETH","type":"message"}
{"data":{"sequenceStart":1550467891615,"symbol":"KCS-ETH","changes":{"asks":[["0.0033998","294.3309","1550467891615"]],"bids":[]},"sequenceEnd":1550467891615},"subject":"trade.l2update","topic":"/market/level2:KCS-ETH","type":"message"}
{"data":{"sequenceStart":1550467891616,"symbol":"KCS-ETH","changes":{"asks":[],"bids":[["0.0033124","0","1550467891616"]]},"sequenceEnd":1550467891616},"subject":"trade.l2update","topic":"/market/level2:KCS-ETH","type":"message"}
{"data":{"sequenceStart":1550467891617,"symbol":"KCS-ETH","changes":{"asks":[["0.0033999","0","1550467891617"]],"bids":[]},"sequenceEnd":1550467891617},"subject":"trade.l2update","topic":"/market/level2:KCS-ETH","type":"message"}
{"data":{"sequenceStart":1550467891618,"symbol":"KCS-ETH","changes":{"asks":[["0","0","1550467891618"]],"bids":[]},"sequenceEnd":1550467891618},"subject":"trade.l2update","topic":"/market/level2:KCS-ETH","type":"message"}
{"data":{"sequenceStart":1550467891619,"symbol":"KCS-ETH","changes":{"asks":[["0.0033997","66.4267","1550467891619"]],"bids":[]},"sequenceEnd":1550467891619},"subject":"trade.l2update","topic":"/market/level2:KCS-ETH","type":"message"}
{"data":{"sequenceStart":1550467891620,"symbol":"KCS-ETH","changes":{"asks":[["0","0","1550467891620"]],"bids":[]},"sequenceEnd":1550467891620},"subject":"trade.l2update","topic":"/market/level2:KCS-ETH","type":"message"}
{"data":{"sequenceStart":1550467891621,"symbol":"KCS-ETH","changes":{"asks":[["0.003402","1791.54542236","1550467891621"]],"bids":[]},"sequenceEnd":1550467891621},"subject":"trade.l2update","topic":"/market/level2:KCS-ETH","type":"message"}
{"data":{"sequenceStart":1550467891622,"symbol":"KCS-ETH","changes":{"asks":[["0.0033998","187.102","1550467891622"]],"bids":[]},"sequenceEnd":1550467891622},"subject":"trade.l2update","topic":"/market/level2:KCS-ETH","type":"message"}
{"data":{"sequenceStart":1550467891623,"symbol":"KCS-ETH","changes":{"asks":[["0","0","1550467891623"]],"bids":[]},"sequenceEnd":1550467891623},"subject":"trade.l2update","topic":"/market/level2:KCS-ETH","type":"message"}
{"data":{"sequenceStart":1550467891624,"symbol":"KCS-ETH","changes":{"asks":[["0.0033996","107.2289","1550467891624"]],"bids":[]},"sequenceEnd":1550467891624},"subject":"trade.l2update","topic":"/market/level2:KCS-ETH","type":"message"}
{"data":{"sequenceStart":1550467891625,"symbol":"KCS-ETH","changes":{"asks":[["0","0","1550467891625"]],"bids":[]},"sequenceEnd":1550467891625},"subject":"trade.l2update","topic":"/market/level2:KCS-ETH","type":"message"}
{"data":{"sequenceStart":1550467891626,"symbol":"KCS-ETH","changes":{"asks":[["0.0033996","107.8328","1550467891626"]],"bids":[]},"sequenceEnd":1550467891626},"subject":"trade.l2update","topic":"/market/level2:KCS-ETH","type":"message"}
{"data":{"sequenceStart":1550467891627,"symbol":"KCS-ETH","changes":{"asks":[["0.0033998","0","1550467891627"]],"bids":[]},"sequenceEnd":1550467891627},"subject":"trade.l2update","topic":"/market/level2:KCS-ETH","type":"message"}
{"data":{"sequenceStart":1550467891628,"symbol":"KCS-ETH","changes":{"asks":[["0","0","1550467891628"]],"bids":[]},"sequenceEnd":1550467891628},"subject":"trade.l2update","topic":"/market/level2:KCS-ETH","type":"message"}
{"data":{"sequenceStart":1550467891629,"symbol":"KCS-ETH","changes":{"asks":[["0.0033996","294.9348","1550467891629"]],"bids":[]},"sequenceEnd":1550467891629},"subject":"trade.l2update","topic":"/market/level2:KCS-ETH","type":"message"}
{"data":{"sequenceStart":1550467891630,"symbol":"KCS-ETH","changes":{"asks":[["0.0033997","0","1550467891630"]],"bids":[]},"sequenceEnd":1550467891630},"subject":"trade.l2update","topic":"/market/level2:KCS-ETH","type":"message"}
{"data":{"sequenceStart":1550467891631,"symbol":"KCS-ETH","changes":{"asks":[["0","0","1550467891631"]],"bids":[]},"sequenceEnd":1550467891631},"subject":"trade.l2update","topic":"/market/level2:KCS-ETH","type":"message"}
{"data":{"sequenceStart":1550467891632,"symbol":"KCS-ETH","changes":{"asks":[["0.0033995","66.4279","1550467891632"]],"bids":[]},"sequenceEnd":1550467891632},"subject":"trade.l2update","topic":"/market/level2:KCS-ETH","type":"message"}
{"data":{"sequenceStart":1550467891633,"symbol":"KCS-ETH","changes":{"asks":[["0.0033996","187.7059","1550467891633"]],"bids":[]},"sequenceEnd":1550467891633},"subject":"trade.l2update","topic":"/market/level2:KCS-ETH","type":"message"}
{"data":{"sequenceStart":1550467891634,"symbol":"KCS-ETH","changes":{"asks":[["0","0","1550467891634"]],"bids":[]},"sequenceEnd":1550467891634},"subject":"trade.l2update","topic":"/market/level2:KCS-ETH","type":"message"}
{"data":{"sequenceStart":1550467891635,"symbol":"KCS-ETH","changes":{"asks":[["0.0033994","107.2289","1550467891635"]],"bids":[]},"sequenceEnd":1550467891635},"subject":"trade.l2update","topic":"/market/level2:KCS-ETH","type":"message"}
{"data":{"sequenceStart":1550467891636,"symbol":"KCS-ETH","changes":{"asks":[["0.0033995","0","1550467891636"]],"bids":[]},"sequenceEnd":1550467891636},"subject":"trade.l2update","topic":"/market/level2:KCS-ETH","type":"message"}
{"data":{"sequenceStart":1550467891637,"symbol":"KCS-ETH","changes":{"asks":[["0","0","1550467891637"]],"bids":[]},"sequenceEnd":1550467891637},"subject":"trade.l2update","topic":"/market/level2:KCS-ETH","type":"message"}
{"data":{"sequenceStart":1550467891638,"symbol":"KCS-ETH","changes":{"asks":[["0.0033993","66.4328","1550467891638"]],"bids":[]},"sequenceEnd":1550467891638},"subject":"trade.l2update","topic":"/market/level2:KCS-ETH","type":"message"}
{"data":{"sequenceStart":1550467891639,"symbol":"KCS-ETH","changes":{"asks":[["0.0033994","0","1550467891639"]],"bids":[]},"sequenceEnd":1550467891639},"subject":"trade.l2update","topic":"/market/level2:KCS-ETH","type":"message"}
{"data":{"sequenceStart":1550467891640,"symbol":"KCS-ETH","changes":{"asks":[["0","0","1550467891640"]],"bids":[]},"sequenceEnd":1550467891640},"subject":"trade.l2update","topic":"/market/level2:KCS-ETH","type":"message"}
{"data":{"sequenceStart":1550467891641,"symbol":"KCS-ETH","changes":{"asks":[["0.0033992","107.2289","1550467891641"]],"bids":[]},"sequenceEnd":1550467891641},"subject":"trade.l2update","topic":"/market/level2:KCS-ETH","type":"message"}
{"data":{"sequenceStart":1550467891642,"symbol":"KCS-ETH","changes":{"asks":[["0","0","1550467891642"]],"bids":[]},"sequenceEnd":1550467891642},"subject":"trade.l2update","topic":"/market/level2:KCS-ETH","type":"message"}
{"data":{"sequenceStart":1550467891643,"symbol":"KCS-ETH","changes":{"asks":[["0.0033996","0.6039","1550467891643"]],"bids":[]},"sequenceEnd":1550467891643},"subject":"trade.l2update","topic":"/market/level2:KCS-ETH","type":"message"}
{"data":{"sequenceStart":1550467891644,"symbol":"KCS-ETH","changes":{"asks":[["0","0","1550467891644"]],"bids":[]},"sequenceEnd":1550467891644},"subject":"trade.l2update","topic":"/market/level2:KCS-ETH","type":"message"}
{"data":{"sequenceStart":1550467891645,"symbol":"KCS-ETH","changes":{"asks":[["0.0033992","294.3309","1550467891645"]],"bids":[]},"sequenceEnd":1550467891645},"subject":"trade.l2update","topic":"/market/level2:KCS-ETH","type":"message"}
{"data":{"sequenceStart":1550467891646,"symbol":"KCS-ETH","changes":{"asks":[["0.0033993","0","1550467891646"]],"bids":[]},"sequenceEnd":1550467891646},"subject":"trade.l2update","topic":"/market/level2:KCS-ETH","type":"message"}
{"data":{"sequenceStart":1550467891647,"symbol":"KCS-ETH","changes":{"asks":[],"bids":[["0","0","1550467891647"]]},"sequenceEnd":1550467891647},"subject":"trade.l2update","topic":"/market/level2:KCS-ETH","type":"message"}
{"data":{"sequenceStart":1550467891648,"symbol":"KCS-ETH","changes":{"asks":[],"bids":[["0.0033122","12.2115762","1550467891648"]]},"sequenceEnd":1550467891648},"subject":"trade.l2update","topic":"/market/level2:KCS-ETH","type":"message"}
{"data":{"sequenceStart":1550467891649,"symbol":"KCS-ETH","changes":{"asks":[["0.0033996","0","1550467891649"]],"bids":[]},"sequenceEnd":1550467891649},"subject":"trade.l2update","topic":"/market/level2:KCS-ETH","type":"message"}
{"data":{"sequenceStart":1550467891650,"symbol":"KCS-ETH","changes":{"asks":[["0","0","1550467891650"]],"bids":[]},"sequenceEnd":1550467891650},"subject":"trade.l2update","topic":"/market/level2:KCS-ETH","type":"message"}
{"data":{"sequenceStart":1550467891651,"symbol":"KCS-ETH","changes":{"asks":[["0.0033991","66.4397","1550467891651"]],"bids":[]},"sequenceEnd":1550467891651},"subject":"trade.l2update","topic":"/market/level2:KCS-ETH","type":"message"}
{"data":{"sequenceStart":1550467891652,"symbol":"KCS-ETH","changes":{"asks":[["0","0","1550467891652"]],"bids":[]},"sequenceEnd":1550467891652},"subject":"trade.l2update","topic":"/market/level2:KCS-ETH","type":"message"}
{"data":{"sequenceStart":1550467891653,"symbol":"KCS-ETH","changes":{"asks":[["0.0033991","67.0253","1550467891653"]],"bids":[]},"sequenceEnd":1550467891653},"subject":"trade.l2update","topic":"/market/level2:KCS-ETH","type":"message"}
{"data":{"sequenceStart":1550467891654,"symbol":"KCS-ETH","changes":{"asks":[["0.0033992","187.102","1550467891654"]],"bids":[]},"sequenceEnd":1550467891654},"subject":"trade.l2update","topic":"/market/level2:KCS-ETH","type":"message"}
{"data":{"sequenceStart":1550467891655,"symbol":"KCS-ETH","changes":{"asks":[],"bids":[["0","0","1550467891655"]]},"sequenceEnd":1550467891655},"subject":"trade.l2update","topic":"/market/level2:KCS-ETH","type":"message"}
{"data":{"sequenceStart":1550467891656,"symbol":"KCS-ETH","changes":{"asks":[],"bids":[["0","0","1550467891656"]]},"sequenceEnd":1550467891656},"subject":"trade.l2update","topic":"/market/level2:KCS-ETH","type":"message"}
{"data":{"sequenceStart":1550467891657,"symbol":"KCS-ETH","changes":{"asks":[],"bids":[["0","0","1550467891657"]]},"sequenceEnd":1550467891657},"subject":"trade.l2update","topic":"/market/level2:KCS-ETH","type":"message"}
{"data":{"sequenceStart":1550467891658,"symbol":"KCS-ETH","changes":{"asks":[["0","0","1550467891658"]],"bids":[]},"sequenceEnd":1550467891658},"subject":"trade.l2update","topic":"/market/level2:KCS-ETH","type":"message"}
{"data":{"sequenceStart":1550467891659,"symbol":"KCS-ETH","changes":{"asks":[["0.003399","107.2289","1550467891659"]],"bids":[]},"sequenceEnd":1550467891659},"subject":"trade.l2update","topic":"/market/level2:KCS-ETH","type":"message"}
{"data":{"sequenceStart":1550467891660,"symbol":"KCS-ETH","changes":{"asks":[],"bids":[["0","0","1550467891660"]]},"sequenceEnd":1550467891660},"subject":"trade.l2update","topic":"/market/level2:KCS-ETH","type":"message"}
{"data":{"sequenceStart":1550467891661,"symbol":"KCS-ETH","changes":{"asks":[],"bids":[["0","0","1550467891661"]]},"sequenceEnd":1550467891661},"subject":"trade.l2update","topic":"/market/level2:KCS-ETH","type":"message"}
{"data":{"sequenceStart":1550467891662,"symbol":"KCS-ETH","changes":{"asks":[["0.0033991","0.5856","1550467891662"]],"bids":[]},"sequenceEnd":1550467891662},"subject":"trade.l2update","topic":"/market/level2:KCS-ETH","type":"message"}
{"data":{"sequenceStart":1550467891663,"symbol":"KCS-ETH","changes":{"asks":[["0.0033992","0","1550467891663"]],"bids":[]},"sequenceEnd":1550467891663},"subject":"trade.l2update","topic":"/market/level2:KCS-ETH","type":"message"}
{"data":{"sequenceStart":1550467891664,"symbol":"KCS-ETH","changes":{"asks":[["0","0","1550467891664"]],"bids":[]},"sequenceEnd":1550467891664},"subject":"trade.l2update","topic":"/market/level2:KCS-ETH","type":"message"}
{"data":{"sequenceStart":1550467891665,"symbol":"KCS-ETH","changes":{"asks":[["0.0033989","187.102","1550467891665"]],"bids":[]},"sequenceEnd":1550467891665},"subject":"trade.l2update","topic":"/market/level2:KCS-ETH","type":"message"}
{"data":{"sequenceStart":1550467891666,"symbol":"KCS-ETH","changes":{"asks":[["0.003399","0","1550467891666"]],"bids":[]},"sequenceEnd":1550467891666},"subject":"trade.l2update","topic":"/market/level2:KCS-ETH","type":"message"}
{"data":{"sequenceStart":1550467891667,"symbol":"KCS-ETH","changes":{"asks":[["0","0","1550467891667"]],"bids":[]},"sequenceEnd":1550467891667},"subject":"trade.l2update","topic":"/market/level2:KCS-ETH","type":"message"}
{"data":{"sequenceStart":1550467891668,"symbol":"KCS-ETH","changes":{"asks":[["0.0033988","107.2289","1550467891668"]],"bids":[]},"sequenceEnd":1550467891668},"subject":"trade.l2update","topic":"/market/level2:KCS-ETH","type":"message"}
{"data":{"sequenceStart":1550467891669,"symbol":"KCS-ETH","changes":{"asks":[["0","0","1550467891669"]],"bids":[]},"sequenceEnd":1550467891669},"subject":"trade.l2update","topic":"/market/level2:KCS-ETH","type":"message"}
{"data":{"sequenceStart":1550467891670,"symbol":"KCS-ETH","changes":{"asks":[["0.0033988","173.6792","1550467891670"]],"bids":[]},"sequenceEnd":1550467891670},"subject":"trade.l2update","topic":"/market/level2:KCS-ETH","type":"message"}
{"data":{"sequenceStart":1550467891671,"symbol":"KCS-ETH","changes":{"asks":[["0","0","1550467891671"]],"bids":[]},"sequenceEnd":1550467891671},"subject":"trade.l2update","topic":"/market/level2:KCS-ETH","type":"message"}
{"data":{"sequenceStart":1550467891672,"symbol":"KCS-ETH","changes":{"asks":[],"bids":[["0.0033123","0","1550467891672"]]},"sequenceEnd":1550467891672},"subject":"trade.l2update","topic":"/market/level2:KCS-ETH","type":"message"}

What is going on? Obviously I don't dare to trade if the books I get are incorrect.

Link trade Id and order Id on lending feature

Hi there, I need to link the trade id and order id at the Borrow & Lend feature:
Step 1: I have a posted lend order, it will return an ORDER ID if successful.
Step 2: I query my waiting lend order and if it can be executed, the lend order history will return FILLED.
Step 3: I query my unsettled lend order, it will return a TRADE ID, can not link ORDER ID at my first step.
Step 4: I query my settled lend order, if order from step 3 on the maturity date, it will return a TRADE ID same as step 3.
So I need help there, how can I know which unsettle/settled lend order (only has trade id) is linked with my lend order history (only has order id)... Thanks so much for the help.
//And another confuse is getting the history of any order/trade will return a large response, may Kucoin will support to filter in the next release, for example, input param is before or after a specific date?

Unclear level3 engine behaviour

Very often come across the following situation (not only with KCS-BTC):

After RECEIVED msg with orderType="limit" sequence missing for 1 message, this missed msg is definitely OPEN (it will be clear below)
If then request the full level3 book the order id and price (contained in missed msg) will not be in this book

After some time, a MATCH or DONE message arrives with this missed order id (to cancel or match this order), but the book doesn't contain this order id & price!

In such conditions it is impossible to calibrate level3 book properly...

2019.03.27 20:08:39.138 {"data":{"sequence":"1553507769484","symbol":"KCS-BTC","orderType":"limit","side":"buy","size":"11.0508","orderId":"5c9bae17cdaba45ba946195f","price":"0.00032858000000000000","time":"1553706519125155945","type":"received","clientOid":"6ad527a7-de6d-4b6b-b1c6-0dfd85e4ac53"},"subject":"trade.l3received","topic":"/market/level3:KCS-BTC","type":"message"}
--- missed 1 msg with sequence 1553507769485
2019.03.27 20:08:39.342 {"data":{"sequence":"1553507769486","symbol":"KCS-BTC","orderType":"limit","side":"sell","size":"20.0000","orderId":"5c9bae17cdaba45ba946196d","price":"0.00032988000000000000","time":"1553706519321053362","type":"received","clientOid":"8de27cd1-4e7d-4dc6-bb3a-bff7799482d1"},"subject":"trade.l3received","topic":"/market/level3:KCS-BTC","type":"message"}
2019.03.27 20:08:39.342 [1] KCS-BTC book msg sequence missed 1 message (1553507769484 ... 1553507769486), calibration required, requesting full level 3 book
2019.03.27 20:08:39.342 {"data":{"sequence":"1553507769487","symbol":"KCS-BTC","side":"sell","size":"20.0000","orderId":"5c9bae17cdaba45ba946196d","price":"0.00032988000000000000","time":"1553706519321053362","type":"open","remainSize":"20.0000"},"subject":"trade.l3open","topic":"/market/level3:KCS-BTC","type":"message"}
2019.03.27 20:08:39.670 {"data":{"sequence":"1553507769488","symbol":"KCS-BTC","reason":"canceled","side":"sell","size":"987","orderId":"5c9baddf5137b950eb92f450","price":"0.00033050000000000000","time":"1553706519673573025","type":"done"},"subject":"trade.l3done","topic":"/market/level3:KCS-BTC","type":"message"}
2019.03.27 20:08:39.701 {"data":{"sequence":"1553507769489","symbol":"KCS-BTC","reason":"canceled","side":"sell","size":"935","orderId":"5c9bac675137b94c64a5d931","price":"0.00033049000000000000","time":"1553706519694664424","type":"done"},"subject":"trade.l3done","topic":"/market/level3:KCS-BTC","type":"message"}
2019.03.27 20:08:39.764 {"data":{"sequence":"1553507769490","symbol":"KCS-BTC","orderType":"limit","side":"sell","size":"676","orderId":"5c9bae17cdaba4572f6e745d","price":"0.00032990000000000000","time":"1553706519757210114","type":"received","clientOid":"15537065192913"},"subject":"trade.l3received","topic":"/market/level3:KCS-BTC","type":"message"}
2019.03.27 20:08:39.764 {"data":{"sequence":"1553507769491","symbol":"KCS-BTC","side":"sell","size":"676","orderId":"5c9bae17cdaba4572f6e745d","price":"0.00032990000000000000","time":"1553706519757210114","type":"open","remainSize":"676"},"subject":"trade.l3open","topic":"/market/level3:KCS-BTC","type":"message"}
2019.03.27 20:08:39.810 {"data":{"sequence":"1553507769492","symbol":"KCS-BTC","orderType":"limit","side":"sell","size":"674","orderId":"5c9bae175137b950eb92fcc7","price":"0.00033005000000000000","time":"1553706519819064121","type":"received","clientOid":"15537065191184"},"subject":"trade.l3received","topic":"/market/level3:KCS-BTC","type":"message"}
2019.03.27 20:08:39.842 {"data":{"sequence":"1553507769493","symbol":"KCS-BTC","side":"sell","size":"674","orderId":"5c9bae175137b950eb92fcc7","price":"0.00033005000000000000","time":"1553706519819064121","type":"open","remainSize":"674"},"subject":"trade.l3open","topic":"/market/level3:KCS-BTC","type":"message"}
2019.03.27 20:08:39.873 {"data":{"sequence":"1553507769494","symbol":"KCS-BTC","reason":"canceled","side":"buy","size":"62","orderId":"5c9bacc3cdaba4572f6e44be","price":"0.00032844000000000000","time":"1553706519870874089","type":"done"},"subject":"trade.l3done","topic":"/market/level3:KCS-BTC","type":"message"}
2019.03.27 20:08:39.998 {"data":{"sequence":"1553507769495","symbol":"KCS-BTC","orderType":"limit","side":"buy","size":"151","orderId":"5c9bae17c788c664cf0346a2","price":"0.00032804000000000000","time":"1553706519984838156","type":"received","clientOid":"15537065194209"},"subject":"trade.l3received","topic":"/market/level3:KCS-BTC","type":"message"}
2019.03.27 20:08:39.998 {"data":{"sequence":"1553507769496","symbol":"KCS-BTC","side":"buy","size":"151","orderId":"5c9bae17c788c664cf0346a2","price":"0.00032804000000000000","time":"1553706519984838156","type":"open","remainSize":"151"},"subject":"trade.l3open","topic":"/market/level3:KCS-BTC","type":"message"}
2019.03.27 20:08:41.279 KCS-BTC book successfully calibrated requested book sequence: 1553507769496
--- book calibrated, but order with id 5c9bae17cdaba45ba946195f is not present in this book, DONE/MATCH messages with this order id also haven't yet come
2019.03.27 20:08:49.732 {"data":{"sequence":"1553507769497","symbol":"KCS-BTC","orderType":"limit","side":"sell","size":"303.0266","orderId":"5c9bae21cdaba45ba9461adb","price":"0.00032924000000000000","time":"1553706529722257392","type":"received"},"subject":"trade.l3received","topic":"/market/level3:KCS-BTC","type":"message"}
2019.03.27 20:08:49.732 {"data":{"sequence":"1553507769498","symbol":"KCS-BTC","side":"sell","size":"303.0266","orderId":"5c9bae21cdaba45ba9461adb","price":"0.00032924000000000000","time":"1553706529722257392","type":"open","remainSize":"303.0266"},"subject":"trade.l3open","topic":"/market/level3:KCS-BTC","type":"message"}
2019.03.27 20:08:50.123 {"data":{"sequence":"1553507769499","symbol":"KCS-BTC","reason":"canceled","side":"buy","size":"11.0508","orderId":"5c9bae17cdaba45ba946195f","price":"0.00032858000000000000","time":"1553706530100963115","type":"done"},"subject":"trade.l3done","topic":"/market/level3:KCS-BTC","type":"message"}
2019.03.27 20:08:50.123 [DONE CANCELED] KCS-BTC price 0.00032858000000000000 not found in the book (BUY)
--- DONE received but requested book doesn't contains price 0.00032858 & order id 5c9bae17cdaba45ba946195f

/market/level2 updates with zero price

I see a lot of updates like:

{"data":{"sequenceStart":1550467687716,"symbol":"BTC-USDT","changes":{"asks":[["0","0","1550467687716"]],"bids":[]},"sequenceEnd":1550467687716},"subject":"trade.l2update","topic":"/market/level2:BTC-USDT","type":"message"}

As you see the price is zero. It makes no sense. It seems you send such update for every trade but the message has absolutely no usable information.

Spot limit orders cancellations don't work properly

When I cancel spot limit order via API request - I always get correct response indicating that my order is cancelled. But sometimes it turns out that order is not cancelled and still open.
Here is the complete example:

  1. I submit the AKRO-BTC order. The REST request got the response:
    {"code":"200000","data":{"orderId":"5f454322f54554000749eb6a"}}

  2. Shortly after I got the websocket confirmation that my order is received:
    {"symbol":"AKRO-BTC","orderType":"limit","sequence":"1594231959806","side":"sell","size":"700.72","orderId":"5f454322f54554000749eb6a","price":"0.0000029801","time":"1598374690944099751","type":"received","clientOid":"15983746907282016"}

  3. And active:
    {"symbol":"AKRO-BTC","sequence":"1594231959807","side":"sell","orderTime":"1598374690944099751","size":"700.72","orderId":"5f454322f54554000749eb6a","price":"0.0000029801","time":"1598374690944099751","type":"open","remainSize":"700.72"}

  4. 38 seconds later I cancel the order. The REST request got correct response:
    {"code":"200000","data":{"cancelledOrderIds":["5f454322f54554000749eb6a"]}}

  5. Shortly after I got the websocket cancel confirmation:
    {"symbol":"AKRO-BTC","reason":"canceled","sequence":"1594231960557","side":"sell","size":"700.72","orderId":"5f454322f54554000749eb6a","price":"0.0000029801","time":"1598374728280046686","type":"done"}

At this time both (websocket and REST) responses indicate that my order is cancelled (or at least is going to be cancelled)

  1. But 12 seconds later I requested the list of active orders via API endpoint /api/v1/orders?status=active. And realised that the order is still active:
    {"id":"5f454322f54554000749eb6a","symbol":"AKRO-BTC","opType":"DEAL","type":"limit","side":"sell","price":"0.0000029801","size":"700.72","funds":"0","dealFunds":"0","dealSize":"0","fee":"0","feeCurrency":"BTC","stp":"","stop":"","stopTriggered":false,"stopPrice":"0","timeInForce":"GTC","postOnly":false,"hidden":true,"iceberg":false,"visibleSize":"0","cancelAfter":0,"channel":"API","clientOid":"15983746907282016","remark":null,"tags":null,"isActive":true,"cancelExist":false,"createdAt":1598374691000,"tradeType":"TRADE"}

  2. So I rechecked the order's state via /api/v1/orders/5f454322f54554000749eb6a REST request and got confirmation that the order is really active:
    {"code":"200000","data":{"id":"5f454322f54554000749eb6a","symbol":"AKRO-BTC","opType":"DEAL","type":"limit","side":"sell","price":"0.0000029801","size":"700.72","funds":"0","dealFunds":"0","dealSize":"0","fee":"0","feeCurrency":"BTC","stp":"","stop":"","stopTriggered":false,"stopPrice":"0","timeInForce":"GTC","postOnly":false,"hidden":true,"iceberg":false,"visibleSize":"0","cancelAfter":0,"channel":"API","clientOid":"15983746907282016","remark":null,"tags":null,"isActive":true,"cancelExist":false,"createdAt":1598374691000,"tradeType":"TRADE"}}

Then I cancelled it again, and this time it was really cancelled.

So why the first cancel request didn't work?
And why I got wrong REST and WS indication that the order was cancelled?

This issue can happen 100+ times each day for different trading pairs.

GET /api/v1/sub/user - userId is null for all accounts

Hello,

Since 2021-04-09 04:15:00.126Z today, the API endpoint didn't returns the userId of subaccounts to check robots balances.

Here is the response of the RESTFUL API :

/api/v1/sub/user {
  code: '200000',
  data: [
    {
      userId: null,
      subName: 'robot363445002',
      type: 1,
      remarks: 'robot sub user'
    },
    {
      userId: null,
      subName: 'robot363445003',
      type: 1,
      remarks: 'robot sub user'
    },
    {
      userId: null,
      subName: 'robot363445006',
      type: 1,
      remarks: 'robot sub user'
    },
    {
      userId: null,
      subName: 'robot363445009',
      type: 1,
      remarks: 'robot sub user'
    },
    {
      userId: null,
      subName: 'robot363445001',
    
```  type: 1,
      remarks: 'robot sub user'
    },
    {
      userId: null,
      subName: 'robot363445008',
      type: 1,
      remarks: 'robot sub user'
    },
    {
      userId: null,
      subName: 'robot363445004',
      type: 1,
      remarks: 'robot sub user'
    },
    {
      userId: null,
      subName: 'robot363445005',
      type: 1,
      remarks: 'robot sub user'
    },
    {
      userId: null,
      subName: 'robot363445007',
      type: 1,
      remarks: 'robot sub user'
    },
    {
      userId: null,
      subName: 'robot3634450010',
      type: 1,
      remarks: 'robot sub user'
    }
  ]
}

Time field of websocket Match Execution

The time field of the websocket Match Execution appears to be different in the 2.0 version of the API. The 2.0 example shows:
"time":"1545913818099033203" which is much longer than in 1.0, where it was:
"time": 1541034625000. It used to be Unix milliseconds.
The API docs don't specify what it is now in 2.0.
Is it Unix nanoseconds?

How do you get anyone from Kucoin Help Center to help you?

I have been trying to get someone from the Kucoin Help Center to respond to me for a week and not a single reply. I sent some XLM to the exchange last 6 days ago and have yet to receive it.

Yes I put a memo.

Is there any way to get someone to respond?my email is [email protected] if anyone knows how I can get some help.

Wrong behavior of the opened order

Hi.
I get the list of orders with one active order and then cancel this order by id (the exchange returns 200000, that means - everything is ok). But this order is not canceled - request returns this order as active again. Moreover, there is no order as active via the web interface. So, my order with id 5ea95a17227e210009d33317 exists only by Rest request approximately 10 hours, I can't cancel it because it is not actually opened.

Cancel All orders - symbol not working.

The function to cancel all orders seems to ignore the optional parameter.

Cancel all orders: DELETE /api/v1/orders

Param Type Description
symbol string [optional] Only cancel orders open for a specific symbol

Scenario

  1. I place an order to buy on 'BTC-USDT'.
    This returns orderId 5c723xxxxxxxxxxx.
  2. This order shows up as active on both the Kucoin website and API
  3. I call DELETE /api/v1/orders with symbol parameter 'ETH-BTC', a different market.
    This signs a signature like "1550988726892DELETE/api/v1/orders{"symbol":"ETH-BTC"}"
    I get the response
{
   "cancelledOrderIds": [
    "5c723xxxxxxxxxxx"
   ]
}
  1. Cancel all orders with symbol ; 'ETH-BTC', just cancelled my 'BTC-USDT' order.
    This even works if I set symbol to a random string like {"symbol":"FooBar"}.

Suggestion

If a symbol is included, any order not matching that symbol should stay active.

Websocket sends duplicate level 3 OPEN messages

Very frequently websocket sends a bunch of duplicate OPEN messages like below (not only for KCS-ETH), these messages differ only by sequence...

What does this mean? How an order with the same id can be opened several times?

{"sequence":"1556385123826","symbol":"KCS-ETH","side":"sell","size":"300.00000000000000000000","orderId":"5d5584d04c06876f0653ec63","price":"0.00897070000000000000","time":"1565885725471463222","type":"open"}
{"sequence":"1556385123828","symbol":"KCS-ETH","side":"sell","size":"300.00000000000000000000","orderId":"5d5584d04c06876f0653ec63","price":"0.00897070000000000000","time":"1565885725471463222","type":"open"}
{"sequence":"1556385123830","symbol":"KCS-ETH","side":"sell","size":"300.00000000000000000000","orderId":"5d5584d04c06876f0653ec63","price":"0.00897070000000000000","time":"1565885725471463222","type":"open"}
{"sequence":"1556385123834","symbol":"KCS-ETH","side":"sell","size":"300.00000000000000000000","orderId":"5d5584d04c06876f0653ec63","price":"0.00897070000000000000","time":"1565885725471463222","type":"open"}
{"sequence":"1556385123836","symbol":"KCS-ETH","side":"sell","size":"300.00000000000000000000","orderId":"5d5584d04c06876f0653ec63","price":"0.00897070000000000000","time":"1565885725471463222","type":"open"}
{"sequence":"1556385123838","symbol":"KCS-ETH","side":"sell","size":"300.00000000000000000000","orderId":"5d5584d04c06876f0653ec63","price":"0.00897070000000000000","time":"1565885725471463222","type":"open"}
{"sequence":"1556385123840","symbol":"KCS-ETH","side":"sell","size":"300.00000000000000000000","orderId":"5d5584d04c06876f0653ec63","price":"0.00897070000000000000","time":"1565885725471463222","type":"open"}
{"sequence":"1556385123842","symbol":"KCS-ETH","side":"sell","size":"300.00000000000000000000","orderId":"5d5584d04c06876f0653ec63","price":"0.00897070000000000000","time":"1565885725471463222","type":"open"}
{"sequence":"1556385123844","symbol":"KCS-ETH","side":"sell","size":"300.00000000000000000000","orderId":"5d5584d04c06876f0653ec63","price":"0.00897070000000000000","time":"1565885725471463222","type":"open"}
{"sequence":"1556385123846","symbol":"KCS-ETH","side":"sell","size":"300.00000000000000000000","orderId":"5d5584d04c06876f0653ec63","price":"0.00897070000000000000","time":"1565885725471463222","type":"open"}
{"sequence":"1556385123848","symbol":"KCS-ETH","side":"sell","size":"300.00000000000000000000","orderId":"5d5584d04c06876f0653ec63","price":"0.00897070000000000000","time":"1565885725471463222","type":"open"}
{"sequence":"1556385123850","symbol":"KCS-ETH","side":"sell","size":"300.00000000000000000000","orderId":"5d5584d04c06876f0653ec63","price":"0.00897070000000000000","time":"1565885725471463222","type":"open"}
{"sequence":"1556385123852","symbol":"KCS-ETH","side":"sell","size":"300.00000000000000000000","orderId":"5d5584d04c06876f0653ec63","price":"0.00897070000000000000","time":"1565885725471463222","type":"open"}
{"sequence":"1556385123854","symbol":"KCS-ETH","side":"sell","size":"300.00000000000000000000","orderId":"5d5584d04c06876f0653ec63","price":"0.00897070000000000000","time":"1565885725471463222","type":"open"}
{"sequence":"1556385123856","symbol":"KCS-ETH","side":"sell","size":"200.00000000000000000000","orderId":"5d5584d04c06876f0653ec63","price":"0.00897070000000000000","time":"1565885725471463222","type":"open"}

WebSocket Error: getaddrinfo ENOTFOUND push1-v2.kucoin.com

According to the docs, I'm attempting to connect to the correct URL. I know that the base URL has been updated and not sure if this is what's causing my issue. It's been a few months since I've worked with this particular exchange, however it was working fine last time I checked.

The full URLs I'm using are as follows.

Live:
wss://push1-v2.kucoin.com/endpoint?token=${token}&[connectId=${Date.now()}]

Sandbox:
wss://push1-sandbox.kucoin.com/endpoint?token=${token}&[connectId=${Date.now()}]

List of Balances

I am currently using the code below to acquire a list of balances for a particular account. However the response I get is an empty list. This is very strange as I am 100% sure that the account I am querying indeed has a balance. has anyone ever encountered this issue? I have only stumbled on this case when updating to the new APIs. With the old APIs everything worked fine.

string endpoint = "/api/v1/accounts";
long nonce = RequestTools.GetNonce();

using (var client = new HttpClient())
using (var httpRequest = new HttpRequestMessage(new HttpMethod("GET"), endpoint))
{
	client.BaseAddress = new Uri(Properties.Settings.Default.KuCoinUri);

	var message = $"{nonce}GET{endpoint}";
	var signedMessage = "";
	using (var encoder = new HMACSHA256(Encoding.UTF8.GetBytes(request.PrivateKey)))
	{
		var hash = encoder.ComputeHash(Encoding.UTF8.GetBytes(message));
		signedMessage = Convert.ToBase64String(hash);
	}

	httpRequest.Headers.Add("KC-API-KEY", request.PublicKey);
	httpRequest.Headers.Add("KC-API-Timestamp", nonce.ToString());
	httpRequest.Headers.Add("KC-API-SIGN", signedMessage);
	httpRequest.Headers.Add("KC-API-PASSPHRASE", request.Passphrase);

	var response = await client.SendAsync(httpRequest);
	var result = await response.Content.ReadAsStringAsync();
}

This is the response I am getting:
image

Trade History Not Coming Through

I'm trying to get the trade history for a user via https://docs.kucoin.com/#list-fills

I've checked the user's account via the website and they have 30 trades back in Jan of 2018. I've sent the following requests all coming back with:

{
    "code": "200000",
    "data": {
        "totalNum": 0,
        "totalPage": 0,
        "pageSize": 50,
        "currentPage": 1,
        "items": []
    }
}

Requests sent to (All requests have correct headers or API would respond accordingly):
https://openapi-v2.kucoin.com/api/v1/fills?symbol=KCS-BTC&startAt=0
https://openapi-v2.kucoin.com/api/v1/fills?startAt=0000000000000
https://openapi-v2.kucoin.com/api/v1/fills?symbol=KCS-BTC&startAt=1515110400000
https://openapi-v2.kucoin.com/api/v1/fills?symbol=ETH-BTC&startAt=0

Fee in KCS

GET /api/v1/fills still gives old feeRate, feeCurrency and fee when I pay fee in KCS

Get All Tickers missing Bid and Ask

The previous API (v1) had the endpoint: https://api.kucoin.com/v1/market/open/symbols which would return the current Last, Bid and Ask price for all markets:

[
    {
      "coinType": "KCS",
      "trading": true,
      "lastDealPrice": 4500,
      "buy": 4120,
      "sell": 4500,
      "coinTypePair": "BTC",
      "sort": 0,
      "feeRate": 0.001,
      "volValue": 324866889,
      "high": 6890,
      "datetime": 1506051488000,
      "vol": 5363831663913,
      "low": 4500,
      "changeRate": -0.3431
    },...

The new endpoint: https://openapi-v2.kucoin.com/api/v1/market/allTickers does only return a close value, but not the Bid and Ask prices (buy and sell)...

[{
	"symbol": "LOOM-BTC",
	"high": "0.00001212",
	"vol": "4706.7114",
	"low": "0.00001109",
	"changePrice": "-0.00000064",
	"changeRate": "-0.0545",
	"close": "0.00001109",
	"volValue": "0.055227432084",
	"open": "0.00001173"
},...
]

To now achieve the same result, we have to do a call for each market to get the Bid and Ask prices with the tickers. Or am I missing something? If not, could you please add this again to the API?

Active orders not fetched correctly

I am trying to access ALL active orders (orders still on the order book) using the /api/v1/orders endpoint.

I have sent all the requests with {"status":"active"} but the results are for the {"status":"done"} which is the default (see below).

I have double checked with the user interface on the website and the orders are open.

When I check the status of one of the open orders using the /api/v1/orders/order-id the status is "active".

The documentation states "Orders which are resting on the order book, will be marked with the active status. Orders which are no longer resting on the order book, will be marked with the done status.

For order checking, after inputting the correct parameters, you could check the orders in all status. But if the status parameter is not input into the orders interface, the system would return the orders of done status to you by default."

getSymbols() only returns 6 pairs

Many symbols are missing from this call, same thing with the getAllTicker call

let res = await api.getSymbols() if (res && res.data ) { res.data.forEach(pair => { console.log(pair) }); }

{ symbol: 'KCS-USDT', name: 'KCS-USDT', baseCurrency: 'KCS', quoteCurrency: 'USDT', feeCurrency: 'USDT', market: 'USDS', baseMinSize: '0.01', quoteMinSize: '0.05', baseMaxSize: '10000000000', quoteMaxSize: '99999999', baseIncrement: '0.0001', quoteIncrement: '0.000001', priceIncrement: '0.00001', priceLimitRate: '0.1', isMarginEnabled: true, enableTrading: true } { symbol: 'ETH-USDT', name: 'ETH-USDT', baseCurrency: 'ETH', quoteCurrency: 'USDT', feeCurrency: 'USDT', market: 'USDS', baseMinSize: '0.0001', quoteMinSize: '0.01', baseMaxSize: '10000000000', quoteMaxSize: '999999999', baseIncrement: '0.0000001', quoteIncrement: '0.000001', priceIncrement: '0.01', priceLimitRate: '0.1', isMarginEnabled: true, enableTrading: true } { symbol: 'BTC-USDT', name: 'BTC-USDT', baseCurrency: 'BTC', quoteCurrency: 'USDT', feeCurrency: 'USDT', market: 'USDS', baseMinSize: '0.00001', quoteMinSize: '0.01', baseMaxSize: '10000000000', quoteMaxSize: '99999999', baseIncrement: '0.00000001', quoteIncrement: '0.000001', priceIncrement: '0.1', priceLimitRate: '0.1', isMarginEnabled: true, enableTrading: true } { symbol: 'ETH-BTC', name: 'ETH-BTC', baseCurrency: 'ETH', quoteCurrency: 'BTC', feeCurrency: 'BTC', market: 'BTC', baseMinSize: '0.0001', quoteMinSize: '0.00001', baseMaxSize: '10000000000', quoteMaxSize: '999999999', baseIncrement: '0.0000001', quoteIncrement: '0.00000001', priceIncrement: '0.000001', priceLimitRate: '0.1', isMarginEnabled: true, enableTrading: true } { symbol: 'BTC3L-USDT', name: 'BTC3L-USDT', baseCurrency: 'BTC3L', quoteCurrency: 'USDT', feeCurrency: 'USDT', market: 'ETF', baseMinSize: '0.01', quoteMinSize: '1', baseMaxSize: '100', quoteMaxSize: '1000000', baseIncrement: '0.00000001', quoteIncrement: '0.00000001', priceIncrement: '0.00000001', priceLimitRate: '0.1', isMarginEnabled: false, enableTrading: true } { symbol: 'BTC3S-USDT', name: 'BTC3S-USDT', baseCurrency: 'BTC3S', quoteCurrency: 'USDT', feeCurrency: 'USDT', market: 'ETF', baseMinSize: '0.01', quoteMinSize: '1', baseMaxSize: '100', quoteMaxSize: '1000000', baseIncrement: '0.00000001', quoteIncrement: '0.00000001', priceIncrement: '0.00000001', priceLimitRate: '0.1', isMarginEnabled: false, enableTrading: true }

Order book for Margin Trade

The docs say that a separation has occurred between TRADE and MARGIN-TRADE. But, I don't see any documentation on getting the margin trade order book. Either in the Get api or web socket. I would imagine that this is an omission in the documentation. Anyone know how to get the order book for margin trading?

Wrong sequence of HOT-ETH level3 book

HOT-ETH book request (/api/v1/market/orderbook/level3?symbol=HOT-ETH) always returns the book with constantly the same sequence = 1553507384872

Meanwhile, the socket messages come normally (incremented) and their sequences have much larger value (about 370245400 larger)

2019.04.01 15:15:57.964 {"data":{"sequence":"1553877630272","symbol":"HOT-ETH","reason":"canceled","side":"buy","size":"2719.2417","orderId":"5ca200b7c788c66106d8bafc","price":"0.00020874000000000000","time":"1554120957924842124","type":"done"},"subject":"trade.l3done","topic":"/market/level3:HOT-ETH","type":"message"}
2019.04.01 15:15:57.969 [1] HOT-ETH book msg sequence missed 370245399 messages (1553507384872 ... 1553877630272)
2019.04.01 15:15:57.969 calibrating HOT-ETH book...
2019.04.01 15:15:57.984 {"data":{"sequence":"1553877630273","symbol":"HOT-ETH","orderType":"limit","side":"buy","size":"2719.2417","orderId":"5ca200fd054b467df58a6213","price":"0.00020873000000000000","time":"1554120957955297564","type":"received","clientOid":"17449354"},"subject":"trade.l3received","topic":"/market/level3:HOT-ETH","type":"message"}
2019.04.01 15:15:57.984 {"data":{"sequence":"1553877630274","symbol":"HOT-ETH","side":"buy","size":"2719.2417","orderId":"5ca200fd054b467df58a6213","price":"0.00020873000000000000","time":"1554120957955297564","type":"open","remainSize":"2719.2417"},"subject":"trade.l3open","topic":"/market/level3:HOT-ETH","type":"message"}
2019.04.01 15:15:58.247 {"data":{"sequence":"1553877630275","symbol":"HOT-ETH","reason":"canceled","side":"buy","size":"2990.9502","orderId":"5ca200b70bad454a9ac7f48a","price":"0.00020456000000000000","time":"1554120958203800573","type":"done"},"subject":"trade.l3done","topic":"/market/level3:HOT-ETH","type":"message"}
2019.04.01 15:15:58.328 {"data":{"sequence":"1553877630276","symbol":"HOT-ETH","orderType":"limit","side":"buy","size":"2990.9502","orderId":"5ca200fe4c06872e796e00c5","price":"0.00020455000000000000","time":"1554120958297774542","type":"received","clientOid":"17449355"},"subject":"trade.l3received","topic":"/market/level3:HOT-ETH","type":"message"}
2019.04.01 15:15:58.328 {"data":{"sequence":"1553877630277","symbol":"HOT-ETH","side":"buy","size":"2990.9502","orderId":"5ca200fe4c06872e796e00c5","price":"0.00020455000000000000","time":"1554120958297774542","type":"open","remainSize":"2990.9502"},"subject":"trade.l3open","topic":"/market/level3:HOT-ETH","type":"message"}
2019.04.01 15:15:58.550 {"data":{"sequence":"1553877630278","symbol":"HOT-ETH","reason":"canceled","side":"buy","size":"3289.8081","orderId":"5ca200b75137b95c6fb859e0","price":"0.00020039000000000000","time":"1554120958504865190","type":"done"},"subject":"trade.l3done","topic":"/market/level3:HOT-ETH","type":"message"}
2019.04.01 15:15:58.672 {"data":{"sequence":"1553877630279","symbol":"HOT-ETH","orderType":"limit","side":"buy","size":"3289.8081","orderId":"5ca200fe0bad454a9ac7fc33","price":"0.00020038000000000000","time":"1554120958629492072","type":"received","clientOid":"17449356"},"subject":"trade.l3received","topic":"/market/level3:HOT-ETH","type":"message"}
2019.04.01 15:15:58.672 {"data":{"sequence":"1553877630280","symbol":"HOT-ETH","side":"buy","size":"3289.8081","orderId":"5ca200fe0bad454a9ac7fc33","price":"0.00020038000000000000","time":"1554120958629492072","type":"open","remainSize":"3289.8081"},"subject":"trade.l3open","topic":"/market/level3:HOT-ETH","type":"message"}
2019.04.01 15:15:58.834 {"data":{"sequence":"1553877630281","symbol":"HOT-ETH","reason":"canceled","side":"sell","size":"2705.4864","orderId":"5ca200b80bad454a9ac7f497","price":"0.00021275000000000000","time":"1554120958785803550","type":"done"},"subject":"trade.l3done","topic":"/market/level3:HOT-ETH","type":"message"}
2019.04.01 15:15:59.036 {"data":{"sequence":"1553877630282","symbol":"HOT-ETH","orderType":"limit","side":"sell","size":"2705.4864","orderId":"5ca200fe0bad453fa29663b6","price":"0.00021274000000000000","time":"1554120958991325798","type":"received","clientOid":"17449357"},"subject":"trade.l3received","topic":"/market/level3:HOT-ETH","type":"message"}
2019.04.01 15:15:59.036 {"data":{"sequence":"1553877630283","symbol":"HOT-ETH","side":"sell","size":"2705.4864","orderId":"5ca200fe0bad453fa29663b6","price":"0.00021274000000000000","time":"1554120958991325798","type":"open","remainSize":"2705.4864"},"subject":"trade.l3open","topic":"/market/level3:HOT-ETH","type":"message"}
2019.04.01 15:15:59.116 {"data":{"sequence":"1553877630284","symbol":"HOT-ETH","reason":"canceled","side":"sell","size":"2990.0249","orderId":"5ca200b8cdaba4647d11a90a","price":"0.00021701000000000000","time":"1554120959074380124","type":"done"},"subject":"trade.l3done","topic":"/market/level3:HOT-ETH","type":"message"}
2019.04.01 15:15:59.359 {"data":{"sequence":"1553877630285","symbol":"HOT-ETH","orderType":"limit","side":"sell","size":"2990.0249","orderId":"5ca200ffcdaba4647d11b129","price":"0.00021700000000000000","time":"1554120959324491948","type":"received","clientOid":"17449358"},"subject":"trade.l3received","topic":"/market/level3:HOT-ETH","type":"message"}
2019.04.01 15:15:59.359 {"data":{"sequence":"1553877630286","symbol":"HOT-ETH","side":"sell","size":"2990.0249","orderId":"5ca200ffcdaba4647d11b129","price":"0.00021700000000000000","time":"1554120959324491948","type":"open","remainSize":"2990.0249"},"subject":"trade.l3open","topic":"/market/level3:HOT-ETH","type":"message"}
2019.04.01 15:15:59.419 {"data":{"sequence":"1553877630287","symbol":"HOT-ETH","reason":"canceled","side":"sell","size":"3304.4886","orderId":"5ca200b889fc84505901b0a0","price":"0.00022126000000000000","time":"1554120959376442481","type":"done"},"subject":"trade.l3done","topic":"/market/level3:HOT-ETH","type":"message"}
2019.04.01 15:15:59.682 {"data":{"sequence":"1553877630288","symbol":"HOT-ETH","orderType":"limit","side":"sell","size":"3304.4886","orderId":"5ca200ff0bad453fa29663bf","price":"0.00022125000000000000","time":"1554120959654249187","type":"received","clientOid":"17449359"},"subject":"trade.l3received","topic":"/market/level3:HOT-ETH","type":"message"}
2019.04.01 15:15:59.702 {"data":{"sequence":"1553877630289","symbol":"HOT-ETH","side":"sell","size":"3304.4886","orderId":"5ca200ff0bad453fa29663bf","price":"0.00022125000000000000","time":"1554120959654249187","type":"open","remainSize":"3304.4886"},"subject":"trade.l3open","topic":"/market/level3:HOT-ETH","type":"message"}
2019.04.01 15:15:59.756 [2] HOT-ETH book msg sequence missed 370245400 messages (1553507384872 ... 1553877630273)
2019.04.01 15:15:59.756 calibrating HOT-ETH book...
2019.04.01 15:16:01.530 HOT-ETH book successfully calibrated requested book sequence: 1553507384872
2019.04.01 15:17:31.695 {"data":{"sequence":"1553877630290","symbol":"HOT-ETH","reason":"canceled","side":"buy","size":"2719.2417","orderId":"5ca200fd054b467df58a6213","price":"0.00020873000000000000","time":"1554121051660949227","type":"done"},"subject":"trade.l3done","topic":"/market/level3:HOT-ETH","type":"message"}
2019.04.01 15:17:31.695 [3] HOT-ETH book msg sequence missed 370245417 messages (1553507384872 ... 1553877630290)
2019.04.01 15:17:31.695 calibrating HOT-ETH book...
2019.04.01 15:17:31.978 {"data":{"sequence":"1553877630291","symbol":"HOT-ETH","reason":"canceled","side":"buy","size":"2990.9502","orderId":"5ca200fe4c06872e796e00c5","price":"0.00020455000000000000","time":"1554121051947338147","type":"done"},"subject":"trade.l3done","topic":"/market/level3:HOT-ETH","type":"message"}
2019.04.01 15:17:32.284 {"data":{"sequence":"1553877630292","symbol":"HOT-ETH","reason":"canceled","side":"buy","size":"3289.8081","orderId":"5ca200fe0bad454a9ac7fc33","price":"0.00020038000000000000","time":"1554121052241744746","type":"done"},"subject":"trade.l3done","topic":"/market/level3:HOT-ETH","type":"message"}
2019.04.01 15:17:32.525 {"data":{"sequence":"1553877630293","symbol":"HOT-ETH","orderType":"limit","side":"buy","size":"2719.2417","orderId":"5ca2015c5137b95c6fb86c9f","price":"0.00020872000000000000","time":"1554121052491505126","type":"received","clientOid":"17449405"},"subject":"trade.l3received","topic":"/market/level3:HOT-ETH","type":"message"}
2019.04.01 15:17:32.526 {"data":{"sequence":"1553877630294","symbol":"HOT-ETH","side":"buy","size":"2719.2417","orderId":"5ca2015c5137b95c6fb86c9f","price":"0.00020872000000000000","time":"1554121052491505126","type":"open","remainSize":"2719.2417"},"subject":"trade.l3open","topic":"/market/level3:HOT-ETH","type":"message"}
2019.04.01 15:17:32.566 {"data":{"sequence":"1553877630295","symbol":"HOT-ETH","reason":"canceled","side":"sell","size":"2705.4864","orderId":"5ca200fe0bad453fa29663b6","price":"0.00021274000000000000","time":"1554121052531785002","type":"done"},"subject":"trade.l3done","topic":"/market/level3:HOT-ETH","type":"message"}
2019.04.01 15:17:32.848 {"data":{"sequence":"1553877630296","symbol":"HOT-ETH","reason":"canceled","side":"sell","size":"2990.0249","orderId":"5ca200ffcdaba4647d11b129","price":"0.00021700000000000000","time":"1554121052813445262","type":"done"},"subject":"trade.l3done","topic":"/market/level3:HOT-ETH","type":"message"}
2019.04.01 15:17:32.868 {"data":{"sequence":"1553877630297","symbol":"HOT-ETH","orderType":"limit","side":"buy","size":"2990.9502","orderId":"5ca2015c0bad454a9ac806d9","price":"0.00020454000000000000","time":"1554121052823977695","type":"received","clientOid":"17449406"},"subject":"trade.l3received","topic":"/market/level3:HOT-ETH","type":"message"}
2019.04.01 15:17:32.869 {"data":{"sequence":"1553877630298","symbol":"HOT-ETH","side":"buy","size":"2990.9502","orderId":"5ca2015c0bad454a9ac806d9","price":"0.00020454000000000000","time":"1554121052823977695","type":"open","remainSize":"2990.9502"},"subject":"trade.l3open","topic":"/market/level3:HOT-ETH","type":"message"}
2019.04.01 15:17:33.151 {"data":{"sequence":"1553877630299","symbol":"HOT-ETH","reason":"canceled","side":"sell","size":"3304.4886","orderId":"5ca200ff0bad453fa29663bf","price":"0.00022125000000000000","time":"1554121053115942149","type":"done"},"subject":"trade.l3done","topic":"/market/level3:HOT-ETH","type":"message"}
2019.04.01 15:17:33.233 {"data":{"sequence":"1553877630300","symbol":"HOT-ETH","orderType":"limit","side":"buy","size":"3289.8081","orderId":"5ca2015d0bad454a9ac806e4","price":"0.00020037000000000000","time":"1554121053188383275","type":"received","clientOid":"17449407"},"subject":"trade.l3received","topic":"/market/level3:HOT-ETH","type":"message"}
2019.04.01 15:17:33.233 {"data":{"sequence":"1553877630301","symbol":"HOT-ETH","side":"buy","size":"3289.8081","orderId":"5ca2015d0bad454a9ac806e4","price":"0.00020037000000000000","time":"1554121053188383275","type":"open","remainSize":"3289.8081"},"subject":"trade.l3open","topic":"/market/level3:HOT-ETH","type":"message"}
2019.04.01 15:17:33.535 [4] HOT-ETH book msg sequence missed 370245418 messages (1553507384872 ... 1553877630291)
2019.04.01 15:17:33.535 calibrating HOT-ETH book...
2019.04.01 15:17:33.576 {"data":{"sequence":"1553877630302","symbol":"HOT-ETH","orderType":"limit","side":"sell","size":"2705.4864","orderId":"5ca2015d89fc84505901c305","price":"0.00021273000000000000","time":"1554121053532754852","type":"received","clientOid":"17449408"},"subject":"trade.l3received","topic":"/market/level3:HOT-ETH","type":"message"}
2019.04.01 15:17:33.576 {"data":{"sequence":"1553877630303","symbol":"HOT-ETH","side":"sell","size":"2705.4864","orderId":"5ca2015d89fc84505901c305","price":"0.00021273000000000000","time":"1554121053532754852","type":"open","remainSize":"2705.4864"},"subject":"trade.l3open","topic":"/market/level3:HOT-ETH","type":"message"}
2019.04.01 15:17:33.900 {"data":{"sequence":"1553877630304","symbol":"HOT-ETH","orderType":"limit","side":"sell","size":"2990.0249","orderId":"5ca2015dcdaba45e0b6cccec","price":"0.00021699000000000000","time":"1554121053873805118","type":"received","clientOid":"17449409"},"subject":"trade.l3received","topic":"/market/level3:HOT-ETH","type":"message"}

future market's order doesn't work

It returns always

{'code': '400003', 'msg': 'KC-API-KEY not exists'}

In the same way, at spot market it works very well.
Even if i use your official future python package, it returns same error.

    raise Exception("{}-{}".format(response_data.status_code, response_data.text))
Exception: 401-{"code":"400003","msg":"KC-API-KEY not exists"}

Can you fix this?
If it's occurred in python packages, i could fix it but it look like api level issue.
Thank you.

Get and set "Paying fees using KCS" via API

Currently it is not possibly to see or set via API, whether one pays fees with KCS or not. Please implement this feature as it is crucial for correct fee calculation prior to the actual order placement!

Error while subscribing on Level2 Market data

I've tried to connect and subscribe to the Level2 data.But after successful connection and sending subscribe message (tried message from doc):

{
    "id": 1545910660740,                          
    "type": "subscribe",
    "topic": "/market/level2:BTC-USDT",
    "response": true                              
}

I'm getting the next error message:
{"code":400,"data":"data format is invalid","id":"Htq95uqNXc","type":"error"}

Can you fix this or my be update documentation?
Thank you!

Inner transfer error

I get the following error when I try to transfer from the trading account to the main account.

{'code': '200000', 'msg': 'The interface is offline'}

I checked permissions and even used a different account. My code to perform the transfer is

client.create_inner_transfer("trade", "main", transfer_amount))

Any ideas?

Impossible to get Order by ClientID

Currently, it's possible to get only "active" Orders by clientOid. In our situation, we need to get "done" Orders by clientOid. Is there any special reason, why this is not possible?

From time to time some situation arise, where exchangeOid, given to order by Kucoin, is not saved to DB (some Exception in between). Then it's not possible to find this order any more by clientOid (since it is done).

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.