Thank you for your support and usage of this SDK. We want to inform you that this project is no longer actively maintained or updated.
To ensure you have access to the latest features, improvements, and support, we recommend transitioning to our new SDK: KuCoin Universal SDK.
The KuCoin Universal SDK offers:
- A unified architecture across multiple programming languages.
- Enhanced performance and stability.
- Continued support and updates.
👉 New SDK Repository: https://github.com/Kucoin/kucoin-universal-sdk
We appreciate your understanding and encourage you to migrate to the new SDK for a better development experience. Should you have any questions or require assistance, feel free to reach out to us.
The detailed document https://docs.kucoin.com, in order to receive the latest API change notifications, please
Watchthis repository.
go get github.com/Kucoin/kucoin-go-sdk| Environment | BaseUri |
|---|---|
| Production | https://api.kucoin.com(DEFAULT) https://api.kucoin.cc |
| Sandbox | https://openapi-sandbox.kucoin.com |
To reinforce the security of the APIS, KuCoin upgraded the API key to version 2.0, the validation logic has also been changed. It is recommended to create(https://www.kucoin.com/account/api) and update your API key to version 2.0. The API key of version 1.0 will be still valid until May 1, 2021.
// API key version 2.0
s := kucoin.NewApiService(
// kucoin.ApiBaseURIOption("https://api.kucoin.com"),
kucoin.ApiKeyOption("key"),
kucoin.ApiSecretOption("secret"),
kucoin.ApiPassPhraseOption("passphrase"),
kucoin.ApiKeyVersionOption(ApiKeyVersionV2)
)
// API key version 1.0
s := kucoin.NewApiService(
// kucoin.ApiBaseURIOption("https://api.kucoin.com"),
kucoin.ApiKeyOption("key"),
kucoin.ApiSecretOption("secret"),
kucoin.ApiPassPhraseOption("passphrase"),
)
// Or add these options into the environmental variable
// Bash:
// export API_BASE_URI=https://api.kucoin.com
// export API_KEY=key
// export API_SECRET=secret
// export API_PASSPHRASE=passphrase
// export API_KEY_VERSION=2
// s := NewApiServiceFromEnv()// Require package github.com/sirupsen/logrus
// Debug mode will record the logs of API and WebSocket to files.
// Default values: LogLevel=logrus.DebugLevel, LogDirectory="/tmp"
kucoin.DebugMode = true
// Or export API_DEBUG_MODE=1
// Logging in your code
// kucoin.SetLoggerDirectory("/tmp")
// logrus.SetLevel(logrus.DebugLevel)
logrus.Debugln("I'm a debug message")See the test case for more examples.
rsp, err := s.ServerTime()
if err != nil {
log.Printf("Error: %s", err.Error())
// Handle error
return
}
var ts int64
if err := rsp.ReadData(&ts); err != nil {
// Handle error
return
}
log.Printf("The server time: %d", ts)// Without pagination
rsp, err := s.Accounts("", "")
if err != nil {
// Handle error
return
}
as := kucoin.AccountsModel{}
if err := rsp.ReadData(&as); err != nil {
// Handle error
return
}
for _, a := range as {
log.Printf("Available balance: %s %s => %s", a.Type, a.Currency, a.Available)
}// Handle pagination
rsp, err := s.Orders(map[string]string{}, &kucoin.PaginationParam{CurrentPage: 1, PageSize: 10})
if err != nil {
// Handle error
return
}
os := kucoin.OrdersModel{}
pa, err := rsp.ReadPaginationData(&os)
if err != nil {
// Handle error
return
}
log.Printf("Total num: %d, total page: %d", pa.TotalNum, pa.TotalPage)
for _, o := range os {
log.Printf("Order: %s, %s, %s", o.Id, o.Type, o.Price)
}Require package gorilla/websocket
go get github.com/gorilla/websocket github.com/pkg/errorsrsp, err := s.WebSocketPublicToken()
if err != nil {
// Handle error
return
}
tk := &kucoin.WebSocketTokenModel{}
if err := rsp.ReadData(tk); err != nil {
// Handle error
return
}
c := s.NewWebSocketClient(tk)
mc, ec, err := c.Connect()
if err != nil {
// Handle error
return
}
ch1 := kucoin.NewSubscribeMessage("/market/ticker:KCS-BTC", false)
ch2 := kucoin.NewSubscribeMessage("/market/ticker:ETH-BTC", false)
uch := kucoin.NewUnsubscribeMessage("/market/ticker:ETH-BTC", false)
if err := c.Subscribe(ch1, ch2); err != nil {
// Handle error
return
}
var i = 0
for {
select {
case err := <-ec:
c.Stop() // Stop subscribing the WebSocket feed
log.Printf("Error: %s", err.Error())
// Handle error
return
case msg := <-mc:
// log.Printf("Received: %s", kucoin.ToJsonString(m))
t := &kucoin.TickerLevel1Model{}
if err := msg.ReadData(t); err != nil {
log.Printf("Failure to read: %s", err.Error())
return
}
log.Printf("Ticker: %s, %s, %s, %s", msg.Topic, t.Sequence, t.Price, t.Size)
i++
if i == 5 {
log.Println("Unsubscribe ETH-BTC")
if err = c.Unsubscribe(uch); err != nil {
log.Printf("Error: %s", err.Error())
// Handle error
return
}
}
if i == 10 {
log.Println("Subscribe ETH-BTC")
if err = c.Subscribe(ch2); err != nil {
log.Printf("Error: %s", err.Error())
// Handle error
return
}
}
if i == 15 {
log.Println("Exit subscription")
c.Stop() // Stop subscribing the WebSocket feed
return
}
}
}Trade Fee
| API | Authentication | Description |
|---|---|---|
| ApiService.BaseFee() | YES | https://docs.kucoin.com/#basic-user-fee |
| ApiService.ActualFee() | YES | https://docs.kucoin.com/#actual-fee-rate-of-the-trading-pair |
Stop Order
| API | Authentication | Description |
|---|---|---|
| ApiService.CreateStopOrder() | YES | https://docs.kucoin.com/#place-a-new-order-2 |
| ApiService.CancelStopOrder() | YES | https://docs.kucoin.com/#cancel-an-order-2 |
| ApiService.CancelStopOrderBy() | YES | https://docs.kucoin.com/#cancel-orders |
| ApiService.StopOrder() | YES | https://docs.kucoin.com/#get-single-order-info |
| ApiService.StopOrders() | YES | https://docs.kucoin.com/#list-stop-orders |
| ApiService.StopOrderByClient() | YES | https://docs.kucoin.com/#get-single-order-by-clientoid |
| ApiService.CancelStopOrderByClient() | YES | https://docs.kucoin.com/#cancel-single-order-by-clientoid-2 |
Account
Deposit
| API | Authentication | Description |
|---|---|---|
| ApiService.CreateDepositAddress() | YES | https://docs.kucoin.com/#create-deposit-address |
| ApiService.DepositAddresses() | YES | https://docs.kucoin.com/#get-deposit-address |
| ApiService.V1Deposits() | YES | https://docs.kucoin.com/#get-v1-historical-deposits-list |
| ApiService.Deposits() | YES | https://docs.kucoin.com/#get-deposit-list |
Fill
| API | Authentication | Description |
|---|---|---|
| ApiService.Fills() | YES | https://docs.kucoin.com/#list-fills |
| ApiService.RecentFills() | YES | https://docs.kucoin.com/#recent-fills |
Order
| API | Authentication | Description |
|---|---|---|
| ApiService.CreateOrder() | YES | https://docs.kucoin.com/#place-a-new-order |
| ApiService.CreateMultiOrder() | YES | https://docs.kucoin.com/#place-bulk-orders |
| ApiService.CancelOrder() | YES | https://docs.kucoin.com/#cancel-an-order |
| ApiService.CancelOrders() | YES | https://docs.kucoin.com/#cancel-all-orders |
| ApiService.V1Orders() | YES | https://docs.kucoin.com/#get-v1-historical-orders-list |
| ApiService.Orders() | YES | https://docs.kucoin.com/#list-orders |
| ApiService.Order() | YES | https://docs.kucoin.com/#get-an-order |
| ApiService.RecentOrders() | YES | https://docs.kucoin.com/#recent-orders |
| ApiService.CreateMarginOrder() | YES | https://docs.kucoin.com/#place-a-margin-order |
| ApiService.CancelOrderByClient() | YES | https://docs.kucoin.com/#cancel-single-order-by-clientoid |
| ApiService.OrderByClient() | YES | https://docs.kucoin.com/#get-single-active-order-by-clientoid |
WebSocket Feed
| API | Authentication | Description |
|---|---|---|
| ApiService.WebSocketPublicToken() | NO | https://docs.kucoin.com/#apply-connect-token |
| ApiService.WebSocketPrivateToken() | YES | https://docs.kucoin.com/#apply-connect-token |
| ApiService.NewWebSocketClient() | - | https://docs.kucoin.com/#websocket-feed |
Withdrawal
| API | Authentication | Description |
|---|---|---|
| ApiService.WithdrawalQuotas() | YES | https://docs.kucoin.com/#get-withdrawal-quotas |
| ApiService.V1Withdrawals() | YES | https://docs.kucoin.com/#get-v1-historical-withdrawals-list |
| ApiService.Withdrawals() | YES | https://docs.kucoin.com/#get-withdrawals-list |
| ApiService.ApplyWithdrawal() | YES | https://docs.kucoin.com/#apply-withdraw |
| ApiService.CancelWithdrawal() | YES | https://docs.kucoin.com/#cancel-withdrawal |
Currency
| API | Authentication | Description |
|---|---|---|
| ApiService.Currencies() | NO | https://docs.kucoin.com/#get-currencies |
| ApiService.Currency() | NO | https://docs.kucoin.com/#get-currency-detail |
| ApiService.Prices() | NO | https://docs.kucoin.com/#get-fiat-price |
Symbol
| API | Authentication | Description |
|---|---|---|
| ApiService.Symbols() | NO | https://docs.kucoin.com/#get-symbols-list |
| ApiService.TickerLevel1() | NO | https://docs.kucoin.com/#get-ticker |
| ApiService.Tickers() | NO | https://docs.kucoin.com/#get-all-tickers |
| ApiService.AggregatedPartOrderBook() | NO | https://docs.kucoin.com/#get-part-order-book-aggregated |
| ApiService.AggregatedFullOrderBook() | NO | https://docs.kucoin.com/#get-full-order-book-aggregated |
| ApiService.AtomicFullOrderBook() | NO | https://docs.kucoin.com/#get-full-order-book-atomic |
| ApiService.TradeHistories() | NO | https://docs.kucoin.com/#get-trade-histories |
| ApiService.KLines() | NO | https://docs.kucoin.com/#get-klines |
| ApiService.Stats24hr() | NO | https://docs.kucoin.com/#get-24hr-stats |
| ApiService.Markets() | NO | https://docs.kucoin.com/#get-market-list |
Time
| API | Authentication | Description |
|---|---|---|
| ApiService.ServerTime() | NO | https://docs.kucoin.com/#server-time |
Service Status
| API | Authentication | Description |
|---|---|---|
| ApiService.ServiceStatus() | NO | https://docs.kucoin.com/#service-status |
# Add your API configuration items into the environmental variable first
export API_BASE_URI=https://api.kucoin.com
export API_KEY=key
export API_SECRET=secret
export API_PASSPHRASE=passphrase
export API_KEY_VERSION=2
# Run tests
go test -v