A set of wrappers to easily communicate with LN Markets API !
npm install @ln-markets/api@ln-markets/api is a simple way to connect your Node JS application to LN Markets !
You can install this package with npm or yarn:
``shell`
$> npm install @ln-markets/api
`shell`
$> pnpm install @ln-markets/api
`shell`
$> yarn add @ln-markets/api
Then go to on your LN Markets account under the API section of the Profile to generate an API Key with the right permissions to fit your needs.
You can import either use websocket or rest api from @ln-markets/api
:warning: This module does not work in the browser
:warning: This package only work with ES Modules
`javascript`
import { createRestClient, createWebsocketClient } from '@ln-markets/api'
Create a new client with the createRestClient function
`javascript`
import { createRestClient } from '@ln-markets/api'
const client = createRestClient()
All these functions are wrappers for documented public endpoints from LN Markets API v2. See specification here.
You can use the client.request for routes that are not implemented yet.
You can pass the network and version to the builder function
By default the package will connect to the mainnet api.
#### Authentication
> For authentication you need your api key secret and passphrase
Without you will not bet able to authenticate and use routes that require authentication
> :warning: Never share your API Key, Secret or Passphrase
- As a js variable
`javascript
import { createRestClient } from '@ln-markets/api'
const key =
const secret =
const passphrase =
const client = new createRestClient({ key, secret, passphrase })
const trades = await client.futuresGetTrades()
console.log(trades)
`
- As env variable
`javascript
// process.env.LNM_API_KEY =
// process.env.LNM_API_SECRET =
// process.env.LNM_API_PASSPHRASE =
const client = new createRestClient({ key, secret })
const trades = await client.futuresGetTrades()
console.log(trades)
`
#### Network
`javascript`
import { createRestClient } from '@ln-markets/api'
const client = createRestClient({ network: 'testnet' })
- Pass LNM_API_NETWORK env var to your app
`javascript`
// process.env.LNM_API_NETWORK = 'testnet'
import { createRestClient } from '@ln-markets/api'
const client = createRestClient()
#### Version
`javascript`
import { createRestClient } from '@ln-markets/api'
const client = createRestClient({ version: 'v42' })
- Pass LNM_API_VERSION env var to your app
`javascript`
// process.env.LNM_API_VERSION = 'v42'
import { createRestClient } from '@ln-markets/api'
const client = createRestClient()
#### Headers
Add custom headers to your requests
`javascript`
import { createRestClient } from '@ln-markets/api'
const client = createRestClient({
headers: {
'X-My-Header': 'My value',
},
})
> :warning: Websocket API only support subscription
Websocket API is limited now for price and index update.
The message format is using JSON-RPC spec.
`javascript
import { createWebsocketClient } from '@ln-markets/api'
// Need to be async
const client = await createWebsocketClient()
await client.publicSubscribe([
'futures:btc_usd:last-price',
'futures:btc_usd:index',
])
// Event on all response
client.on('response', console.log)
// Event emitter on subscribed channels
client.on('futures:btc_usd:last-price', console.log)
client.on('futures:btc_usd:index', console.log)
// Handle websocket error here
client.ws.on('error', console.error)
`
#### Network
- Testnet with constructor params
`javascript`
import { createWebsocketClient } from '@ln-markets/api'
const client = createWebsocketClient({ network: 'testnet' })
- Pass LNM_API_NETWORK env var to your app
`javascript`
// process.env.LNM_API_NETWORK = 'testnet'
import { createWebsocketClient } from '@ln-markets/api'
const client = createWebsocketClient()
#### Version
`javascript`
import { createWebsocketClient } from '@ln-markets/api'
const client = createWebsocketClient({ version: 'v42' })
- Pass LNM_API_VERSION env var to your app
`javascript`
// process.env.LNM_API_VERSION = 'v42'
import { createWebsocketClient } from '@ln-markets/api'
const client = createWebsocketClient()
#### HearthBeat
Default to true will send a ping every 5s to the server to keep the connection alive.
`javascript``
import { createWebsocketClient } from '@ln-markets/api'
const client = createWebsocketClient({ heartbeat: false })