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
futures_cancel_all_positions
futures_close_all_positions
futures_cancel_position
futures_carry_fees_history
futures_cashin_position
futures_close_position
futures_get_positions
futures_new_position
futures_update_position
futures_price_history
futures_fixing_history
futures_index_history
futures_get_ticker
options_get_expiries
options_get_configuration
options_close_all_positions
options_close_position
options_get_positions
options_new_position
options_update_position
options_get_volatility
deposit_history
deposit
get_user
update_user
get_notifications
mark_notifications_read
mark_all_notifications_read
withdraw_history
withdraw
swap
swap_history
app_configuration
app_node
get_leaderboard
get_oracle
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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for ln_markets-2.0.2-py2.py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1d6720b10189dd0a5ef6419f1460af48f7bed3753842f4f2d335eb07fd7d5e22 |
|
MD5 | 82695071b9d37526a1038ab385ed7ddd |
|
BLAKE2b-256 | 74358072872adf2e36c373c20161e1592070441aac413a726234b191a1f3a247 |