Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

node-kraken-api

Package Overview
Dependencies
Maintainers
1
Versions
15
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

node-kraken-api

a typed REST/WS Node.JS client for the Kraken cryptocurrency exchange

  • 1.0.0
  • Source
  • npm
  • Socket score

Version published
Weekly downloads
1.3K
increased by7.88%
Maintainers
1
Weekly downloads
 
Created
Source

node-kraken-api

NPM

About

node-kraken-api is a typed REST/WS Node.JS client for the Kraken cryptocurrency exchange.
This is an unofficial API. Please refer to the official documentation for up-to-date information.

REST API Docs: kraken.com/features/api
WebSocket API Docs: docs.kraken.com/websockets

Features

  • Fully typed REST and WS responses and options.
    • REST methods/comments are generated from the official OpenAPI specifications file.
    • WS methods/comments are sourced from the official WebSockets 1.8.3 documentation.
    • Note:
      • All named response properties are optional and nullable unless explicitly marked required in the documentation.
  • RetrieveExport (binary endpoint); see the example.
  • Full WS orderbook mirroring and checksum validation.

MIGRATION NOTICE 0.4.1 -> 1.0.0 [BREAKING]:

The entire project has been completely rewritten using TypeScript and many features have changed.

Added
  • Complete WS 1.8.3 functionality
  • Typings
  • New REST methods
Removed
  • Custom response parsing
  • Ratelimiting
  • REST syncing
  • Method name settings
  • Direct construction using module.exports()
Changed
  • .call(): renamed to .request().
  • .setOTP(): removed; OTP is now provided using a user-supplied generator.

Synopsis

Methods

Properties

Classes

Usage

Integration

npm i --save node-kraken-api
import { Kraken } from "node-kraken-api";

Settings

{
  /** REST API key. */
  key?: string;
  /** REST API secret. */
  secret?: string;
  /** REST API OTP generator. */
  genotp?: () => string;
  /** Nonce generator (the default is ms time with an incrementation guarantee). */
  gennonce?: () => number;
  /** Connection timeout. */
  timeout?: number;
}

REST API

Public
const kraken = new Kraken();

const { unixtime } = await kraken.time();
const { XXBT }     = await kraken.assets();
const ticker       = await kraken.ticker({ pair: "XXBTZUSD" })
Private
const kraken = new Kraken({ key: "...", secret: "..." });

const { txid } = await kraken.addOrder({
  pair:      "XXBTZUSD",
  type:      "buy",
  ordertype: "limit",
  price:     "65432.1",
  volume:    "1",
});

If your key requires an OTP, provide a generator:

const kraken = new Kraken({ key: "...", secret: "...", genotp: () => "..." });

RetrieveExport is the only method that promises a buffer:

const kraken = new Kraken({ key: "...", secret: "..." });

const buf = await kraken.retrieveExport({ id: "FOOB" })
fs.writeFileSync("report.zip", buf)

WebSockets

  • All WebSocket subscriptions and requests are located within .ws.
    • .ws.pub and .ws.priv provides ping, heartbeat, systemStatus, and general error monitoring.
  • Automatically connects to the socket when server data is requested.
    • See Kraken.WS.Connection.open() and Kraken.WS.Connection.close() for manual connection management.
  • Subscription methods return a Kraken.Subscriber object that manages subscriptions for a given name and options.
Public
const kraken = new Kraken();

const trade = await kraken.ws.trade()
  .on('update', (update, pair)  => console.log(update, pair))
  .on('status', (status)        => console.log(status))
  .on('error',  (error, pair)   => console.log(error, pair))
  // .subscribe() never rejects! rely on the 'error' and 'status' events
  .subscribe('XBT/USD')

const book100 = await kraken.ws.book({depth: 100})
  // live book construction from "snapshot", "ask", and "bid" events.
  .on("mirror", (mirror, pair) => console.log(mirror, pair))
  .on("error",  (error,  pair) => console.log(error,  pair))
  // resubscribes if there is a checksum validation issue (emits statuses).
  .on("status", (status)       => console.log(status)
  .subscribe("XBT/USD", "ETH/USD"); // subscribe to multiple pairs at once

// unsubscribe from one or more subscriptions
// .unsubscribe() never rejects! rely on the 'error' and 'status' events
await book100.unsubscribe('XBT/ETH');

Private
const kraken = new Kraken({ key: "...", secret: "..." });

const { token } = await kraken.getWebSocketsToken();

const orders = kraken.ws.openOrders({ token: token! })
  .on("update", (update, sequence) => console.log(update, sequence))
  .subscribe();

await orders.unsubscribe();

// The token does not expire while the subscription is active, but if you wish
// to resubscribe after unsubscribing you may need to call .ws.openOrders() again.

Testing

Testing is performed by @jpcx/testts.

To run tests:

  • Save an auth.json file with your key and secret: { key: string, secret: string }
    • Please ensure that this key has readonly permissions.
  • Run npm test in the main directory.

Development

Contribution is welcome! Given the amount of typings in this project, there may be discrepancies so please raise an issue or create a pull request.

Also, I am US-based and can't access the futures API; if you have access and want to contribute let me know!

Author

Justin Collier - jpcx

BTCLTCETHXMR

 bitcoin:bc1qnkturlnv4yufkc40k4ysxz4maak5mug7l820my
litecoin:ltc1q9jnvesyffgysel7h4cttg7fscenaje2ka08qvc
ethereum:0xD03c9c3027C6bBDDad31d183Ba07DA9db34ee641
  monero:49UydqpjBjfPcYEV26jrruQwkCkW9VVFxXdmBwmarAVUPz6FSK2nLsRCdtQTMrFZ3NBy9aGrgGGhKZKCpApy5xBWA3GiBsn

Inspired by npm-kraken-api (nothingisdead).

License

This project is licensed under the MIT License - see the LICENSE file for details

Keywords

FAQs

Package last updated on 14 Sep 2021

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc