Skip to main content

LN Markets API python implementation

Project description

LN Markets Python API

A simple way to connect your Python application to LN Markets!

Install

You can install this package with pip:

pip3 install ln-markets

Use

You can import the rest class from lnmarkets

from lnmarkets import rest

And the websocket class as well

from lnmarkets import websockets

Authentication

For authentication you need your api key secret and passphrase

Without you will not bet able to authenticate

:warning: Never share your API Key, Secret or Passphrase

Websocket API

Configuration

Use the LNMarketsWebsocket and your key / passphrase to instanciate a new api connector:

options = {'key': 'your_api_key', 
           'secret': 'your_api_secret', 
           'passphrase': 'your_api_passphrase',
           'network': 'testnet'}

lnm = websockets.LNMarketsWebsocket(**options)
lnm.connect()

Check examples for more details as you'll need to extend this class most of the time.

Subscription

You can subscribe to LNM Markets public event such as futures last price ('futures:btc_usd:last-price') and index ('futures:btc_usd:index').

REST API

Configuration

Use the LNMarketsRest and your key / passphrase to instanciate a new api connector:

options = {'key': 'your_api_key', 
           'secret': 'your_api_secret', 
           'passphrase': 'your_api_passphrase',
           'network': 'testnet'}

lnm = rest.LNMarketsRest(**options)

lnm.futures_get_ticker()

REST API

futures_add_margin_position

Add more margin to an existing position.

amount:
  type: Integer
  required: true
id:
  type: String
  required: true

Example:

lnm.futures_add_margin_position({
    'amount': 20000,
    'id': '249dc818-f8a5-4713-a3a3-8fe85f2e8969'
  })

POST /futures/add-margin documentation for more details.

futures_cancel_all_positions

Cancel all opened (not running) positions for this user.

# No parameters

Example:

lnm.futures_cancel_all_positions()

DELETE /futures/all/cancel documentation for more details.

futures_close_all_posisitions

Close all running position for this user.

# No parameters

Example:

lnm.futures_close_all_positions()

DELETE /futures/all/close documentation for more details.

futures_cancel_position

Cancel a particular position for this user.

id:
  type: String
  required: true

Example:

lnm.futures_cancel_position({
    'id': 'b87eef8a-52ab-2fea-1adc-c41fba870b0f'
  })

POST /futures/cancel documentation for more details.

futures_carry_fees_history

Get carry-fees history.

from:
  type: Integer
  required: false

to:
  type: Integer
  required: false

limit:
  type: Integer
  required: false
  default: 100

Example:

lnm.futures_carry_fees_history({
    'limit': 20
  })

GET /futures/carry-fees documentation for more details.

futures_cashin_position

Retrieve a part of the general PL of a running position.

amount:
  type: Integer
  required: true
id:
  type: String
  required: true

Example:

lnm.futures_cashin_position({
    'amount': 1000,
    'id': "99c470e1-2e03-4486-a37f-1255e08178b1"
  })

POST /futures/cash-in documentation for more details.

futures_close_position

Close a particular running position for this user.

id:
  type: String
  required: true

Example:

lnm.futures_close_position({
    'id': 'a2ca6172-1078-463d-ae3f-8733f36a9b0e'
  })

DELETE /futures documentation for more details.

futures_get_positions

Retrieve all or a part of user positions.

type:
  type: String
  required: true
  enum: ['open', 'running', 'closed']
  default: 'open'

from:
  type: Integer
  required: false

to:
  type: Integer
  required: false

limit:
  type: Integer
  required: false
  default: 100

Example:

lnm.futures_get_positions({
    'type': 'running'
  })

GET /futures documentation for more details.

futures_new_position

Open a new position on the market.

type:
  type: String
  required: true
  enum: ['l', 'm']

side:
  type: String
  required: true
  enum: ['b', 's']

margin:
  type: Integer
  required: false

leverage:
  type: Float
  required: true

quantity:
  type: Integer
  required: false

takeprofit:
  type: Integer
  required: false

stoploss:
  type: Integer
  required: false

price:
  type: Float
  required: false

Example:

  lnm.futures_new_position({
    'type': 'm',
    'side': 's',
    'margin': 10000,
    'leverage': 25.5,
  })

POST /futures documentation for more details.

futures_update_position

Modify stoploss or takeprofit parameter of an existing position.

id:
  type: String
  required: true

type:
  type: String
  required: true
  enum: ['takeprofit', 'stoploss']

value:
  type: Float
  required: true

Example:

lnm.futures_update_position({
    'id': 'b87eef8a-52ab-2fea-1adc-c41fba870b0f',
    'type': 'stoploss',
    'value': 13290.5
  })

PUT /futures documentation for more details.

futures_price_history

Get Futures data over time.

from:
  type: Integer
  required: false

to:
  type: Integer
  required: false

limit: Integer
  required: false
  default: 100

Example:

lnm.futures_price_history({
    'limit': 20
  })

GET /futures/history/price documentation for more details.

futures_fixing_history

Get fixing data history.

from:
  type: Integer
  required: false

to:
  type: Integer
  required: false

limit:
  type: Integer
  required: false
  default: 100

Example:

lnm.futures_fixing_history({
    'limit': 20
  })

GET /futures/history/fixing documentation for more details.

futures_index_history

Get index history data.

from:
  type: Integer
  required: false

to:
  type: Integer
  required: false

limit:
  type: Integer
  required: false
  default: 100

Example:

lnm.futures_index_history({
    'limit': 20
  })

GET /futures/history/index documentation for more details.

futures_get_ticker

Get the futures ticker.

# No parameters

Example:

lnm.futures_get_ticker()

GET /futures/ticker documentation for more details.

options_get_expiries

Get the options expiries.

# No parameters

Example:

lnm.options_get_expiries()

GET /options/instrument/expiry documentation for more details.

options_get_configuration

Get the options configuration.

# No parameters

Example:

lnm.options_get_configuration()

GET /options/instrument documentation for more details.

options_close_all_positions

Close all of the user option trades, the PL will be calculated against the current bid or offer depending on the type of the options.

# No parameters

Example:

lnm.options_close_all_positions()

DELETE /options/vanilla/all documentation for more details.

options_close_position

Close the user option trade, the PL will be calculated against the current bid or offer depending on the type of the option.

id:
  type: String
  required: true

Example:

lnm.options_close_position({
    'id': 'a61faebc-7cc9-47e4-a22d-9d3e95c98322'
  })

DELETE /options/vanilla documentation for more details.

options_get_positions

Get user's vanilla options trades.

status:
  type: String
  enum: ['running', 'closed']
  default: running
  required: true

from:
  type: Integer
  required: false

to:
  type: Integer
  required: false

limit:
  type: Integer
  required: false

Example:

  lnm.options_get_positions({
    limit: 25,
    status: 'closed'
  })

GET /options/vanilla documentation for more details.

options_new_position

Create a new options trade

side:
  type: String
  enum: ['b']
  required: true

type:
  type: String
  enum: ['c', 'p']
  required: true

quantity:
  type: Integer
  required: true

strike:
  type: Integer
  required: true

settlement:
  type: String
  enum: ['physical', 'cash']
  required: true

Example:

  lnm.options_new_position({
    limit: 25,
    status: 'closed'
  })

POST /options/vanilla documentation for more details.

options_update_position

Allows user to update settlement parameter in running option trade.

id:
  type: String
  required: true

settlement:
  type: String
  required: true
  enum: ['physical', 'cash']

Example:

lnm.options_update_position({
    'id': 'a2ca6172-1078-463d-ae3f-8733f36a9b0e',
    'settlement': 'physical'
  })

PUT /options/vanilla documentation for more details.

options_get_volatility

Return the volatility

instrument:
  type: String
  required: false

Example:

lnm.options_get_volatility({
    'instrument': 'BTC.2016-01-14.20000.C'
  })

GET /options/volatility documentation for more details.

deposit_history

Retrieve deposit history for this user.

from:
  type: Integer
  required: false

to:
  type: Integer
  required: false

limit:
  type: Integer
  required: false

Example:

lnm.deposit_history({
    'limit': 30
  })

GET /user/deposit documentation for more details.

deposit

Add funds to your LN Markets balance.

amount:
  type: Integer
  required: true
unit:
  type: String
  required: false
  default: 'sat'

Example:

lnm.deposit({
    'amount': 25000
  })

POST /user/deposit documentation for more details.

get_user

Retrieve user informations.

# No parameters

Example:

lnm.get_user()

[`GET /user`](https://docs.lnmarkets.com/testnet/api/v2/#tag/User/paths/~1user/get) documentation for more details.

### update_user

Modifies account parameters.

```yml
show_leaderboard:
  type: boolean
  required: false
use_taproot_addresses:
  type: boolean
  required: false
username:
  type: string
  required: false
auto_withdraw_enabled:
  type: boolean
  required: false
auto_withdraw_lightning_address:
  type: string
  required: false
nostr_pubkey
  type: string
  required: false

Example:

lnm.update_user({
    'show_leaderboard': true,
    'username': 'crypto-king',
    'nostr_pubkey': 'bfef3e7ac61fa5450f80f346579234cbb06891e910d1a208b91bf0fd40ab3cc6'
  })

PUT /user documentation for more details.

get_notifications

Get notifications for a user

# No parameters

Example:

lnm.get_notifications()

GET /user/notifications documentation for more details.

mark_notifications_read

Mark notification as read

ids:
  type: 	
  array of strings 
  required: true

Example:

lnm.mark_notifications_read({"ids": 
    ['497f6eca-6276-4993-bfeb-53cbbbba6f08']
})

PUT /user/notifications documentation for more details.

mark_all_notifications_read

Mark all notifications as read

# No parameters

Example:

lnm.mark_all_notifications_read()

PUT /user/notifications documentation for more details.

withdraw_history

Retrieve user withdraw history.

from:
  type: Integer
  required: false

to:
  type: Integer
  required: false

limit:
  type: Integer
  required: false

Example:

lnm.withdraw_history({
   'limit': 25
  })

GET /user/withdraw documentation for more details.

withdraw

Move funds from LN Markets to your wallet via BOLT11 invoice.

amount:
  type: Integer
  required: true

unit:
  type: String
  required: false
  default: 'sat'

invoice:
  type: String
  required: true

Example:

lnm.withdraw({
    'amount': 1000,
    'invoice': 'lntb100u1p0jr0ykpp5ldx3un8ym6z0uwjxd083mp2rcr04d2dv0fkx729ajs62pq9pfjqqdql23jhxapdwa5hg6rywfshwttjda6hgegcqzpgxq92fjuqsp5m6q0fzynu2qr624mzjc285duurhccmkfg94mcdctc0p9s7qkrq8q9qy9qsqp862cjznpey5r76e7amhlpmhwn2c7xvke59srhv0xf75m4ksjm4hzn8y9xy0zs5ec6gxmsr8gj4q23w8ped32llscjcneyjz2afeapqpu4gamz'
  })

POST /user/withdraw documentation for more details.

swap

Swap betweem sats and synthetic assets

in_asset:
  type: String
  required: true
  enum: ['USD', 'BTC']
  
out_asset:
  type: String
  required: true
  enum: ['USD', 'BTC']

in_amount:
  type: Integer
  required: False

out_amount:
  type: Integer
  required: false

Example:

  lnm.swap({
    'in_asset': 'BTC',
    'out_asset': 'USD',
    'out_amount': 100
  })

POST /swap documentation for more details.

swap_history

Get swap history

from:
  type: Integer
  required: false
  
to:
  type: Integer
  required: false
  
limit:
  type: Integer
  required: False

Example:

  lnm.swap_history({
    'from': 1669980001000,
    'to': '1669990201000',
    'limit': 100
  })

GET /swap_history documentation for more details.

app_configuration

Retrieves the configuration of LN Markets

# No parameters

Example:

lnm.app_configuration()

GET /app/configuration documentation for more details.

app_node

Show informations about LN Markets lightning node.

# No parameters

Example:

lnm.app_node()

GET /app/node documentation for more details.

get_leaderboard

Queries the 10 users with the biggest positive PL.

# No parameters

Example:

lnm.get_leaderboard()

GET /futures/leaderboard documentation for more details.

get_oracle

Useful for oracles

from:
  type: Integer
  required: false
  
to:
  type: Integer
  required: false
  
limit:
  type: Integer
  required: False

Example:

  lnm.get_oracle({
    'from': 1669980001000,
    'to': '1669990201000',
    'limit': 100
  })

GET /oracle/index documentation for more details.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ln-markets-2.0.2.tar.gz (9.1 kB view hashes)

Uploaded Source

Built Distribution

ln_markets-2.0.2-py2.py3-none-any.whl (8.8 kB view hashes)

Uploaded Python 2 Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page