API Kraken | WebSockets Public API

Connection

URL: wss://ws.kraken.com

 

Once the socket is open you can subscribe to a public channel by sending a subscribe request message.

 

General Considerations

 

Supported Pairs

ADA/CAD, ADA/ETH, ADA/EUR, ADA/USD, ADA/XBT, ATOM/CAD, ATOM/ETH, ATOM/EUR, ATOM/USD, ATOM/XBT, BCH/EUR, BCH/USD, BCH/XBT, DASH/EUR, DASH/USD, DASH/XBT, EOS/ETH, EOS/EUR, EOS/USD, EOS/XBT, GNO/ETH, GNO/EUR, GNO/USD, GNO/XBT, QTUM/CAD, QTUM/ETH, QTUM/EUR, QTUM/USD, QTUM/XBT, USDT/USD, ETC/ETH, ETC/XBT, ETC/EUR, ETC/USD, ETH/XBT, ETH/CAD, ETH/EUR, ETH/GBP, ETH/JPY, ETH/USD, LTC/XBT, LTC/EUR, LTC/USD, MLN/ETH, MLN/XBT, REP/ETH, REP/XBT, REP/EUR, REP/USD, STR/EUR, STR/USD, XBT/CAD, XBT/EUR, XBT/GBP, XBT/JPY, XBT/USD, BTC/CAD, BTC/EUR, BTC/GBP, BTC/JPY, BTC/USD, XDG/XBT, XLM/XBT, DOGE/XBT, STR/XBT, XLM/EUR, XLM/USD, XMR/XBT, XMR/EUR, XMR/USD, XRP/XBT, XRP/CAD, XRP/EUR, XRP/JPY, XRP/USD, ZEC/XBT, ZEC/EUR, ZEC/JPY, ZEC/USD, XTZ/CAD, XTZ/ETH, XTZ/EUR, XTZ/USD, XTZ/XBT

 

Methods

Ping

Client can ping server to determine whether connection is alive, server responds with pong.

This is an application level ping as opposed to default ping in WebSockets standard which is server initiated

Ticker

Ticker information includes best ask and best bid prices, 24hr volume, last trade price, volume weighted average price, etc for a given currency pair. A ticker message is published every time a trade or a group of trade happens.

Subscribe to a ticker calling SubscribeTicker method:


SubscribeTicker([L"XBT/USD"]);

If subscription is successful, OnKrakenSubscribed event will be called:


void OnKrakenSubscribed(TObject *Sender, int ChannelId, string Pair, string Subscription, string ChannelName, 
  int ReqID)
{
  DoLog("#subscribed: " + Subscription + " " + Pair + " " + ChannelName);
}

UnSubscribe calling UnSubscribeTicker method:


UnSubscribeTicker(ARRAYOFCONST((L"XBT/USD")));

If unsubscription is successful, OnKrakenUnSubscribed event will be called:


void OnKrakenUnSubscribed(TObject *Sender, int ChannelId, string Pair, string Subscription, 
  int ReqID)
{
  DoLog("#unsubscribed: " + Subscription + " " + Pair);
}

If there is an error while trying to subscribe / unsubscribe, OnKrakenSubscriptionError event will be called.


void OnKrakenSubscriptionError(TObject *Sender, string ErrorMessage, string Pair, string Subscription, 
  int ReqID)
{
  DoLog("#subscription error: " + ErrorMessage);
}

Ticker updates will be notified in OnKrakenData event.

 
[
  0,
  {
    "a": [
      "5525.40000",
      1,
      "1.000"
    ],
    "b": [
      "5525.10000",
      1,
      "1.000"
    ],
    "c": [
      "5525.10000",
      "0.00398963"
    ],
    "v": [
      "2634.11501494",
      "3591.17907851"
    ],
    "p": [
      "5631.44067",
      "5653.78939"
    ],
    "t": [
      11493,
      16267
    ],
    "l": [
      "5505.00000",
      "5505.00000"
    ],
    "h": [
      "5783.00000",
      "5783.00000"
    ],
    "o": [
      "5760.70000",
      "5763.40000"
    ]
  },
  "ticker",
  "XBT/USD"
]

OHLC

When subscribed for OHLC, a snapshot of the last valid candle (irrespective of the endtime) will be sent, followed by updates to the running candle. For example, if a subscription is made to 1 min candle and there have been no trades for 5 mins, a snapshot of the last 1 min candle from 5 mins ago will be published. The endtime can be used to determine that it is an old candle.

Subscribe to a OHLC calling SubscribeOHLC method, you must pass pair and interval.


SubscribeOHLC(ARRAYOFCONST((L"XBT/USD")), kin1min);

If subscription is successful, OnKrakenSubscribed event will be called:


void OnKrakenSubscribed(TObject *Sender, int ChannelId, string Pair, string Subscription, string ChannelName, 
  int ReqID)
{
  DoLog("#subscribed: " + Subscription + " " + Pair + " " + ChannelName);
}

UnSubscribe calling UnSubscribeOHLC method:


UnSubscribeOHLC(ARRAYOFCONST(("XBT/USD")), kin1min);

If unsubscription is successful, OnKrakenUnSubscribed event will be called:


void OnKrakenUnSubscribed(TObject *Sender, int ChannelId, string Pair, string Subscription, 
  int ReqID)
{
  DoLog("#unsubscribed: " + Subscription + " " + Pair);
}

If there is an error while trying to subscribe / unsubscribe, OnKrakenSubscriptionError event will be called.


void OnKrakenSubscriptionError(TObject *Sender, string ErrorMessage, string Pair, string Subscription, 
  int ReqID)
{
  DoLog("#subscription error: " + ErrorMessage);
}

OHLC updates will be notified in OnKrakenData event.


[
  42,
  [
    "1542057314.748456",
    "1542057360.435743",
    "3586.70000",
    "3586.70000",
    "3586.60000",
    "3586.60000",
    "3586.68894",
    "0.03373000",
    2
  ],
  "ohlc-5",
  "XBT/USD"
]

Trade

Trade feed for a currency pair.

Subscribe to Trade feed calling SubscribeTrade method.


SubscribeTrade(ARRAYOFCONST((L"XBT/USD")));

If subscription is successful, OnKrakenSubscribed event will be called:


void OnKrakenSubscribed(TObject *Sender, int ChannelId, string Pair, string Subscription, 
  string ChannelName, int ReqID)
{
  DoLog("#subscribed: " + Subscription + " " + Pair + " " + ChannelName);
}

UnSubscribe calling UnSubscribeTrade method:


UnSubscribeTrade(ARRAYOFCONST((L"XBT/USD")));

If unsubscription is successful, OnKrakenUnSubscribed event will be called:


void OnrakenUnSubscribed(TObject *Sender, int ChannelId, string Pair, string Subscription, 
  int ReqID)
{
  DoLog("#unsubscribed: " + Subscription + " " + Pair);
}

If there is an error while trying to subscribe / unsubscribe, OnKrakenSubscriptionError event will be called.


void OnKrakenSubscriptionError(TObject *Sender, string ErrorMessage, string Pair, string Subscription, 
  int ReqID)
{
  DoLog("#subscription error: " + ErrorMessage);
}

Trade updates will be notified in OnKrakenData event.


[
  0,
  [
    [
      "5541.20000",
      "0.15850568",
      "1534614057.321597",
      "s",
      "l",
      ""
    ],
    [
      "6060.00000",
      "0.02455000",
      "1534614057.324998",
      "b",
      "l",
      ""
    ]
  ],
  "trade",
  "XBT/USD"
]

Book

Order book levels. On subscription, a snapshot will be published at the specified depth, following the snapshot, level updates will be published.

Subscribe to a Book calling SubscribeBook method, you must pass pair and depth.


SubscribeBook(ARRAYOFCONST((L"XBT/USD")), kde10);

If subscription is successful, OnKrakenSubscribed event will be called:


void OnKrakenSubscribed(TObject *Sender, int ChannelId, string Pair, string Subscription, string ChannelName, 
  int ReqID)
{
  DoLog("#subscribed: " + Subscription + " " + Pair + " " + ChannelName);
}

UnSubscribe calling UnSubscribeBook method:


UnSubscribeBook(ARRAYOFCONST((L"XBT/USD")), kde10);

If unsubscription is successful, OnKrakenUnSubscribed event will be called:


void OnKrakenUnSubscribed(TObject *Sender, int ChannelId, string Pair, string Subscription, 
  int ReqID)
{
  DoLog("#unsubscribed: " + Subscription + " " + Pair);
}

If there is an error while trying to subscribe / unsubscribe, OnKrakenSubscriptionError event will be called.


void OnKrakenSubscriptionError(TObject *Sender, string ErrorMessage, string Pair, string Subscription, 
  int ReqID)
{
  DoLog("#subscription error: " + ErrorMessage);
}

Book updates will be notified in OnKrakenData event.

 
[
  0,
  {
    "as": [
      [
          "5541.30000",
          "2.50700000",
          "1534614248.123678"
      ],
      [
          "5541.80000",
          "0.33000000",
          "1534614098.345543"
      ],
      [
          "5542.70000",
          "0.64700000",
          "1534614244.654432"
      ]
    ],
    "bs": [
      [
          "5541.20000",
          "1.52900000",
          "1534614248.765567"
      ],
      [
          "5539.90000",
          "0.30000000",
          "1534614241.769870"
      ],
      [
          "5539.50000",
          "5.00000000",
          "1534613831.243486"
      ]
    ]
  },
  "book-100",
  "XBT/USD"
]

Spread

Spread feed to show best bid and ask price for subscribed asset pair. Bid volume and ask volume is part of the message too.

Subscribe to Spread feed calling SubscribeSpread method.


SubscribeSpread(ARRAYOFCONST(("XBT/USD")));

If subscription is successful, OnKrakenSubscribed event will be called:


void OnKrakenSubscribed(TObject *Sender, int ChannelId, string Pair, string Subscription, string ChannelName, 
  int ReqID)
{
  DoLog("#subscribed: " + Subscription + " " + Pair + " " + ChannelName);
}

UnSubscribe calling UnSubscribeSpread method:


UnSubscribeSpread(ARRAYOFCONST((L"XBT/USD")));

If unsubscription is successful, OnKrakenUnSubscribed event will be called:


void OnrakenUnSubscribed(TObject *Sender, int ChannelId, string Pair, string Subscription, 
  int ReqID)
{
  DoLog("#unsubscribed: " + Subscription + " " + Pair);
}

If there is an error while trying to subscribe / unsubscribe, OnKrakenSubscriptionError event will be called.


void OnKrakenSubscriptionError(TObject *Sender, string ErrorMessage, string Pair, string Subscription, 
  int ReqID)
{
  DoLog("#subscription error: " + ErrorMessage);
}

Spread updates will be notified in OnKrakenData event.

 
[
  0,
  [
    "5698.40000",
    "5700.00000",
    "1542057299.545897",
    "1.01234567",
    "0.98765432"
  ],
  "spread",
  "XBT/USD"
]

Other Methods

You can subscribe / unsubscribe to all channels with one method:


SubscribeAll(ARRAYOFCONST((L"XBT/USD")));
 
UnSubscribeAll(ARRAYOFCONST((L"XBT/USD")));

OHLC interval value is 1 if all channels subscribed.

 

 

 

Events

OnConnect: when websocket client is connected to client.

OnKrakenConnect: called after successful websocket connection and when server send system status.

OnKrakenSystemStatus: called when system status changes.

OnKrakenSubscribed: called after a successful subscription to a channel.

OnKrakenUnSubscribed: called after a successful unsubscription from a channel.

OnKranSubscriptionError: called if there is an error trying to subscribe / unsubscribe.

OnKrakenData: called every time a channel subscription has an update.