Skip to content
This repository was archived by the owner on Jan 19, 2026. It is now read-only.

Repository files navigation

Bluefin Python Client Library

Python Client for the Bluefin Exchange API and SUI Contracts. ​

Install

The package can be installed from PyPi using pip:

pip install bluefin_client_sui

Alternatively, you could run:

pip install .

The package currently supports python >=3.8. Find complete documentation on the library at https://docs.bluefin.io/.

Getting Started

When initializing the client, users must accept terms and conditions and define network object containing the following values:

{
"apiGateway": "https://dapi.api.sui-prod.bluefin.io",
"socketURL": "wss://dapi.api.sui-prod.bluefin.io",
"dmsURL": "https://dapi.api.sui-prod.bluefin.io",
"webSocketURL": "wss://notifications.api.sui-prod.bluefin.io",
"onboardingUrl": "https://trade.bluefin.io"
}

Users can import predefined networks from constants:

frombluefin_client_suiimportNetworks

For testing purposes use Networks[SUI_STAGING] and for production use Networks[SUI_PROD].

Initialization example​

fromconfigimportTEST_ACCT_KEY, TEST_NETWORKfrombluefin_client_suiimportBluefinClient, Networksfrompprintimportpprintimportasyncioasyncdefmain():
# initialize clientclient=BluefinClient(
True, # agree to terms and conditionsNetworks[TEST_NETWORK], # network to connect withTEST_ACCT_KEY, # private key of wallet
)
# on boards user on bluefin. Must be set to true for firs time useawaitclient.init(True)
print('Account address:', client.get_public_address())
# gets user account on-chain datadata=awaitclient.get_user_account_data()
# close aio http connectionawaitclient.apis.close_session()
pprint(data)
if__name__=="__main__":
loop=asyncio.new_event_loop()
loop.run_until_complete(main())
loop.close()

Read-only Initialization: Bluefin-client can also be initialized in read-only mode, below is the example:

fromconfigimportTEST_ACCT_KEY, TEST_NETWORKfrombluefin_client_suiimportBluefinClient, Networksfrompprintimportpprintimportasyncioasyncdefmain():
# initialize client without providing private_keyclient=BluefinClient(
True, # agree to terms and conditionsNetworks[TEST_NETWORK], # network to connect with
)
# Initializing client for the private key provided. The second argument api_token is optionalawaitclient.init(True,"54b0bfafc9a48728f76e52848a716e96d490263392e3959c2d44f05dea960761")
# close aio http connectionawaitclient.apis.close_session()
awaitclient.dmsApi.close_session()
pprint(data)
if__name__=="__main__":
loop=asyncio.new_event_loop()
loop.run_until_complete(main())
loop.close()

​Here is the list of APIs that can be accessed in read-only mode.

Placing Orders:

fromconfigimportTEST_ACCT_KEY, TEST_NETWORKfrombluefin_client_suiimportBluefinClient, Networks, MARKET_SYMBOLS, ORDER_SIDE, ORDER_TYPE, OrderSignatureRequestimportasyncioasyncdefmain():
# initialize clientclient=BluefinClient(
True, # agree to terms and conditionsNetworks[TEST_NETWORK], # network to connect withTEST_ACCT_KEY, # private key of wallet
)
awaitclient.init(True)
user_leverage=awaitclient.get_user_leverage(MARKET_SYMBOLS.ETH)
# creates a LIMIT order to be signedsignature_request=OrderSignatureRequest(
symbol=MARKET_SYMBOLS.ETH, # market symbolprice=1900, # price at which you want to place orderquantity=0.01, # quantityside=ORDER_SIDE.SELL,
orderType=ORDER_TYPE.LIMIT,
leverage=user_leverage
)
# create signed ordersigned_order=client.create_signed_order(signature_request)
print("Placing a limit order")
# place signed order on orderbookresp=awaitclient.post_signed_order(signed_order)
# returned order with PENDING stateprint(resp)
awaitclient.apis.close_session()
if__name__=="__main__":
loop=asyncio.new_event_loop()
loop.run_until_complete(main())
loop.close()

Listening To Events Using Socket.io:

fromconfigimportTEST_ACCT_KEY, TEST_NETWORKfrombluefin_client_suiimportBluefinClient, Networks, SOCKET_EVENTSimportasyncioimporttimedefcallback(event):
print("Event data:", event)
asyncdefmain():
# initializeclient=BluefinClient(
True, # agree to terms and conditionsNetworks[TEST_NETWORK], # network to connect withTEST_ACCT_KEY, # private key of wallet
)
awaitclient.init(True)
# make connection with bluefin exchangeawaitclient.socket.open()
# subscribe to local user eventsawaitclient.socket.subscribe_user_update_by_token()
# listen to exchange health updates and trigger callbackawaitclient.socket.listen(SOCKET_EVENTS.EXCHANGE_HEALTH.value, callback)
time.sleep(10)
# unsubscribe from user eventsawaitclient.socket.unsubscribe_user_update_by_token()
# close socket connectionawaitclient.socket.close()
if__name__=="__main__":
loop=asyncio.new_event_loop()
loop.run_until_complete(main())
loop.close()​

Look at the example directory to see more examples on how to use this library.

Listening To Events Using Web Sockets:

fromconfigimportTEST_ACCT_KEY, TEST_NETWORKfrombluefin_client_suiimportBluefinClient, Networks, SOCKET_EVENTS, MARKET_SYMBOLSimporttimeimportasynciodefcallback(event):
print("Event data:", event)
asyncdefmain():
# initializeclient=BluefinClient(
True, # agree to terms and conditionsNetworks[TEST_NETWORK], # network to connect withTEST_ACCT_KEY, # private key of wallet
)
awaitclient.init(True)
defon_open(ws):
# subscribe to global eventsresp=client.webSocketClient.subscribe_global_updates_by_symbol(symbol=MARKET_SYMBOLS.ETH)
ifresp:
print("Subscribed to global updates")
resp=client.webSocketClient.subscribe_user_update_by_token()
ifresp:
print("Subscribed to user updates")
# make connection with bluefin exchangeclient.webSocketClient.initialize_socket(on_open=on_open)
# listen to user order updates and trigger callbackclient.webSocketClient.listen(SOCKET_EVENTS.EXCHANGE_HEALTH.value, callback)
time.sleep(60)
# unsubscribe from global eventsclient.webSocketClient.unsubscribe_global_updates_by_symbol(symbol=MARKET_SYMBOLS.ETH)
client.webSocketClient.stop()
if__name__=="__main__":
loop=asyncio.new_event_loop()
loop.run_until_complete(main())
loop.close()

About

Python Client for Bluefin Exchange API and Smart Contracts for SUI

Topics

Resources

Stars

0 stars

Watchers

7 watching

Forks

Releases

Packages

Contributors

Languages