diff --git a/sdk_examples/swap-api/simple-quote-and-swap/main.py b/sdk_examples/swap-api/simple-quote-and-swap/main.py deleted file mode 100644 index b4a9a97..0000000 --- a/sdk_examples/swap-api/simple-quote-and-swap/main.py +++ /dev/null @@ -1,31 +0,0 @@ -from dotenv import load_dotenv -from jup_ag_sdk.clients.swap_api_client import SwapApiClient -from jup_ag_sdk.models.swap_api.quote_request_model import QuoteRequest -from jup_ag_sdk.models.swap_api.swap_request_model import SwapRequest - -load_dotenv() -client = SwapApiClient() - -quote_request = QuoteRequest( - input_mint="So11111111111111111111111111111111111111112", # WSOL - output_mint="EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v", # USDC - amount=10000000, # 0.01 WSOL -) - -try: - quote_response = client.quote(quote_request) - print("Quote response:", quote_response) - - swap_request = SwapRequest( - user_public_key=client._get_public_key(), - quote_response=quote_response, - ) - - rpc_response = client.swap_and_execute(swap_request) - signature = str(rpc_response.value) - assert signature is not None, "Transaction signature is missing or invalid." - print(f"Transaction sent successfully! View transaction on Solscan: https://solscan.io/tx/{signature}") -except Exception as e: - print("Error occurred while processing the swap:", str(e)) -finally: - client.close() \ No newline at end of file diff --git a/sdk_examples/swap-api/simple-quote-and-swap/requirements.txt b/sdk_examples/swap-api/simple-quote-and-swap/requirements.txt deleted file mode 100644 index 901d779..0000000 --- a/sdk_examples/swap-api/simple-quote-and-swap/requirements.txt +++ /dev/null @@ -1,2 +0,0 @@ -jup-ag-sdk==0.1.0 -python-dotenv==1.0.1 diff --git a/sdk_examples/ultra-api/balances/main.py b/sdk_examples/ultra-api/balances/main.py new file mode 100644 index 0000000..497b2b4 --- /dev/null +++ b/sdk_examples/ultra-api/balances/main.py @@ -0,0 +1,23 @@ +from dotenv import load_dotenv +from jup_python_sdk.clients.ultra_api_client import UltraApiClient + +load_dotenv() +client = UltraApiClient() + +address = client._get_public_key() + +try: + balances_response = client.balances(str(address)) + + print("Balances API Response:") + for token, details in balances_response.items(): + print(f"Token: {token}") + print(f" - Amount: {details['amount']}") + print(f" UI Amount: {details['uiAmount']}") + print(f" Slot: {details['slot']}") + print(f" Is Frozen: {details['isFrozen']}") + +except Exception as e: + print("Error occurred while fetching balances:", str(e)) +finally: + client.close() diff --git a/sdk_examples/ultra-api/balances/requirements.txt b/sdk_examples/ultra-api/balances/requirements.txt new file mode 100644 index 0000000..2e746d5 --- /dev/null +++ b/sdk_examples/ultra-api/balances/requirements.txt @@ -0,0 +1,2 @@ +jup-python-sdk==1.1.0 +python-dotenv==1.1.0 diff --git a/sdk_examples/ultra-api/order-and-execute/main.py b/sdk_examples/ultra-api/order-and-execute/main.py index 7a73d79..10aa6f1 100644 --- a/sdk_examples/ultra-api/order-and-execute/main.py +++ b/sdk_examples/ultra-api/order-and-execute/main.py @@ -1,6 +1,6 @@ from dotenv import load_dotenv -from jup_ag_sdk.clients.ultra_api_client import UltraApiClient -from jup_ag_sdk.models.ultra_api.ultra_order_request_model import UltraOrderRequest +from jup_python_sdk.clients.ultra_api_client import UltraApiClient +from jup_python_sdk.models.ultra_api.ultra_order_request_model import UltraOrderRequest load_dotenv() client = UltraApiClient() @@ -9,15 +9,23 @@ input_mint="So11111111111111111111111111111111111111112", # WSOL output_mint="EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v", # USDC amount=10000000, # 0.01 WSOL - taker=client._get_public_key() + taker=client._get_public_key(), ) try: - rpc_response = client.order_and_execute(order_request) - signature = str(rpc_response["signature"]) - assert signature is not None, "Transaction signature is missing or invalid." - print(f"Transaction sent successfully! View transaction on Solscan: https://solscan.io/tx/{signature}") + client_response = client.order_and_execute(order_request) + signature = str(client_response["signature"]) + + print("Order and Execute API Response:") + print(f" - Status: {client_response.get('status')}") + if client_response.get("status") == "Failed": + print(f" - Code: {client_response.get('code')}") + print(f" - Error: {client_response.get('error')}") + + print(f" - Transaction Signature: {signature}") + print(f" - View on Solscan: https://solscan.io/tx/{signature}") + except Exception as e: print("Error occurred while processing the swap:", str(e)) finally: - client.close() \ No newline at end of file + client.close() diff --git a/sdk_examples/ultra-api/order-and-execute/requirements.txt b/sdk_examples/ultra-api/order-and-execute/requirements.txt index 901d779..2e746d5 100644 --- a/sdk_examples/ultra-api/order-and-execute/requirements.txt +++ b/sdk_examples/ultra-api/order-and-execute/requirements.txt @@ -1,2 +1,2 @@ -jup-ag-sdk==0.1.0 -python-dotenv==1.0.1 +jup-python-sdk==1.1.0 +python-dotenv==1.1.0 diff --git a/sdk_examples/ultra-api/shield/main.py b/sdk_examples/ultra-api/shield/main.py new file mode 100644 index 0000000..640ce5e --- /dev/null +++ b/sdk_examples/ultra-api/shield/main.py @@ -0,0 +1,25 @@ +from jup_python_sdk.clients.ultra_api_client import UltraApiClient + +client = UltraApiClient() + +# WSOL and USDC mints +wsol_mint = "So11111111111111111111111111111111111111112" +usdc_mint = "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v" + +try: + shield_response = client.shield(mints=[wsol_mint, usdc_mint]) + + print("Shield API Response:") + if shield_response["warnings"]: + for mint, warnings in shield_response["warnings"].items(): + print(f"Mint: {mint}") + for warning in warnings: + print(f" - Type: {warning.get('type')}") + print(f" Message: {warning.get('message')}") + else: + print("No warnings returned for provided mints") + +except Exception as e: + print("Error occurred while fetching shield information:", str(e)) +finally: + client.close() diff --git a/sdk_examples/ultra-api/shield/requirements.txt b/sdk_examples/ultra-api/shield/requirements.txt new file mode 100644 index 0000000..2e746d5 --- /dev/null +++ b/sdk_examples/ultra-api/shield/requirements.txt @@ -0,0 +1,2 @@ +jup-python-sdk==1.1.0 +python-dotenv==1.1.0 diff --git a/standalone_script_examples/recurring-api/cancel-order/main.py b/standalone_script_examples/recurring-api/cancel-order/main.py index f658638..bedfc7a 100644 --- a/standalone_script_examples/recurring-api/cancel-order/main.py +++ b/standalone_script_examples/recurring-api/cancel-order/main.py @@ -30,11 +30,13 @@ cancel_order_request = { "order": "", # The order to cancel "recurringType": "", # The recurring type of the order - "user": str(wallet.pubkey()) + "user": str(wallet.pubkey()), } cancel_order_endpoint = f"{API_BASE_URL}/recurring/v1/cancelOrder" -cancel_order_response = requests.post(cancel_order_endpoint, json=cancel_order_request) +cancel_order_response = requests.post( + cancel_order_endpoint, json=cancel_order_request, headers=headers +) if cancel_order_response.status_code != 200: try: @@ -61,7 +63,9 @@ signers[wallet_index] = wallet signed_transaction = VersionedTransaction(raw_transaction.message, signers) -serialized_signed_transaction = base64.b64encode(bytes(signed_transaction)).decode("utf-8") +serialized_signed_transaction = base64.b64encode(bytes(signed_transaction)).decode( + "utf-8" +) # Execute the order transaction execute_request = { @@ -70,7 +74,9 @@ } execute_endpoint = f"{API_BASE_URL}/recurring/v1/execute" -execute_response = requests.post(execute_endpoint, json=execute_request) +execute_response = requests.post( + execute_endpoint, json=execute_request, headers=headers +) if execute_response.status_code == 200: error_data = execute_response.json() diff --git a/standalone_script_examples/recurring-api/cancel-order/requirements.txt b/standalone_script_examples/recurring-api/cancel-order/requirements.txt index c596567..9c30289 100644 --- a/standalone_script_examples/recurring-api/cancel-order/requirements.txt +++ b/standalone_script_examples/recurring-api/cancel-order/requirements.txt @@ -1,4 +1,4 @@ -requests==2.32.3 +requests==2.32.4 base58==2.1.1 solders==0.26.0 -python-dotenv==1.0.1 \ No newline at end of file +python-dotenv==1.1.0 diff --git a/standalone_script_examples/recurring-api/simple-create-order-and-execute/main.py b/standalone_script_examples/recurring-api/simple-create-order-and-execute/main.py index 9968e6a..8a21fcf 100644 --- a/standalone_script_examples/recurring-api/simple-create-order-and-execute/main.py +++ b/standalone_script_examples/recurring-api/simple-create-order-and-execute/main.py @@ -34,14 +34,14 @@ "time": { "inAmount": 100000000, # 0.1 WSOL "interval": 3600, # Every hour - "numberOfOrders": 3 + "numberOfOrders": 3, } }, - "user": str(wallet.pubkey()) + "user": str(wallet.pubkey()), } order_endpoint = f"{API_BASE_URL}/recurring/v1/createOrder" -order_response = requests.post(order_endpoint, json=order_request) +order_response = requests.post(order_endpoint, json=order_request, headers=headers) if order_response.status_code != 200: try: @@ -68,7 +68,9 @@ signers[wallet_index] = wallet signed_transaction = VersionedTransaction(raw_transaction.message, signers) -serialized_signed_transaction = base64.b64encode(bytes(signed_transaction)).decode("utf-8") +serialized_signed_transaction = base64.b64encode(bytes(signed_transaction)).decode( + "utf-8" +) # Execute the order transaction execute_request = { @@ -77,7 +79,9 @@ } execute_endpoint = f"{API_BASE_URL}/recurring/v1/execute" -execute_response = requests.post(execute_endpoint, json=execute_request) +execute_response = requests.post( + execute_endpoint, json=execute_request, headers=headers +) if execute_response.status_code == 200: error_data = execute_response.json() diff --git a/standalone_script_examples/recurring-api/simple-create-order-and-execute/requirements.txt b/standalone_script_examples/recurring-api/simple-create-order-and-execute/requirements.txt index c596567..9c30289 100644 --- a/standalone_script_examples/recurring-api/simple-create-order-and-execute/requirements.txt +++ b/standalone_script_examples/recurring-api/simple-create-order-and-execute/requirements.txt @@ -1,4 +1,4 @@ -requests==2.32.3 +requests==2.32.4 base58==2.1.1 solders==0.26.0 -python-dotenv==1.0.1 \ No newline at end of file +python-dotenv==1.1.0 diff --git a/standalone_script_examples/swap-api/simple-quote-and-swap-instructions/main.py b/standalone_script_examples/swap-api/simple-quote-and-swap-instructions/main.py index c2fafe5..8fc9ca7 100644 --- a/standalone_script_examples/swap-api/simple-quote-and-swap-instructions/main.py +++ b/standalone_script_examples/swap-api/simple-quote-and-swap-instructions/main.py @@ -7,8 +7,15 @@ from requests import JSONDecodeError from solana.rpc.api import Client from solana.rpc.core import RPCException -from solders.solders import Keypair, VersionedTransaction, Instruction, Pubkey, AccountMeta, AddressLookupTableAccount, \ - MessageV0 +from solders.solders import ( + Keypair, + VersionedTransaction, + Instruction, + Pubkey, + AccountMeta, + AddressLookupTableAccount, + MessageV0, +) # Load .env file and read environment variables load_dotenv() @@ -26,6 +33,7 @@ print("Error: PRIVATE_KEY and RPC_URL must be set in your .env file") exit() + def deserialize_instruction(instruction): return Instruction( accounts=[ @@ -40,6 +48,7 @@ def deserialize_instruction(instruction): program_id=Pubkey.from_string(instruction["programId"]), ) + def fetch_alt_accounts(keys): alt_accounts = [] address_lookup_table_accounts = [] @@ -49,13 +58,16 @@ def fetch_alt_accounts(keys): key=Pubkey.from_string(key), addresses=[ Pubkey.from_string(address) - for address in rpc.get_account_info_json_parsed(Pubkey.from_string(key)).value.data.parsed["info"]["addresses"] - ] + for address in rpc.get_account_info_json_parsed( + Pubkey.from_string(key) + ).value.data.parsed["info"]["addresses"] + ], ) ) return alt_accounts + # Initialize the Solana RPC client rpc = Client(RPC_URL) @@ -71,7 +83,7 @@ def fetch_alt_accounts(keys): } quote_endpoint = f"{API_BASE_URL}/swap/v1/quote" -quote_response = requests.get(quote_endpoint, params=quote_params) +quote_response = requests.get(quote_endpoint, params=quote_params, headers=headers) if quote_response.status_code != 200: try: @@ -89,16 +101,24 @@ def fetch_alt_accounts(keys): swap_instructions_request = { "userPublicKey": str(wallet.pubkey()), "quoteResponse": quote_data, + "dynamicComputeUnitLimit": True, + "dynamicSlippage": True, } swap_instructions_endpoint = f"{API_BASE_URL}/swap/v1/swap-instructions" -swap_instructions_response = requests.post(swap_instructions_endpoint, json=swap_instructions_request) +swap_instructions_response = requests.post( + swap_instructions_endpoint, json=swap_instructions_request, headers=headers +) if swap_instructions_response.status_code != 200: try: - print(f"Error performing swap instructions: {swap_instructions_response.json()}") + print( + f"Error performing swap instructions: {swap_instructions_response.json()}" + ) except JSONDecodeError as e: - print(f"Error performing swap instructions: {swap_instructions_response.json()}") + print( + f"Error performing swap instructions: {swap_instructions_response.json()}" + ) finally: exit() @@ -111,12 +131,14 @@ def fetch_alt_accounts(keys): # Compute budget Instructions instructions.extend( - deserialize_instruction(instr) for instr in swap_instructions_data["computeBudgetInstructions"] + deserialize_instruction(instr) + for instr in swap_instructions_data["computeBudgetInstructions"] ) # Setup Instructions instructions.extend( - deserialize_instruction(instr) for instr in swap_instructions_data["setupInstructions"] + deserialize_instruction(instr) + for instr in swap_instructions_data["setupInstructions"] ) # Swap Instructions @@ -130,7 +152,9 @@ def fetch_alt_accounts(keys): # Get address lookup table accounts address_lookup_table_accounts = [] if "addressLookupTableAddresses" in swap_instructions_data: - address_lookup_table_accounts = fetch_alt_accounts(swap_instructions_data["addressLookupTableAddresses"]) + address_lookup_table_accounts = fetch_alt_accounts( + swap_instructions_data["addressLookupTableAddresses"] + ) # Fetch the latest blockhash blockhash = rpc.get_latest_blockhash().value.blockhash @@ -143,7 +167,7 @@ def fetch_alt_accounts(keys): address_lookup_table_accounts, blockhash, ), - keypairs=[wallet] + keypairs=[wallet], ) # Sign Transaction @@ -166,4 +190,4 @@ def fetch_alt_accounts(keys): error_message = e.args[0] print("Transaction failed!") print(f"Custom Program Error Code: {error_message.data.err.err.code}") - print(f"Message: {error_message.message}") \ No newline at end of file + print(f"Message: {error_message.message}") diff --git a/standalone_script_examples/swap-api/simple-quote-and-swap-instructions/requirements.txt b/standalone_script_examples/swap-api/simple-quote-and-swap-instructions/requirements.txt index c191fcd..9ae18fd 100644 --- a/standalone_script_examples/swap-api/simple-quote-and-swap-instructions/requirements.txt +++ b/standalone_script_examples/swap-api/simple-quote-and-swap-instructions/requirements.txt @@ -1,5 +1,5 @@ -requests==2.32.3 +requests==2.32.4 base58==2.1.1 solders==0.26.0 -python-dotenv==1.0.1 -solana==0.36.6 \ No newline at end of file +python-dotenv==1.1.0 +solana==0.36.7 diff --git a/standalone_script_examples/swap-api/simple-quote-and-swap/main.py b/standalone_script_examples/swap-api/simple-quote-and-swap/main.py index 181b607..0fa902c 100644 --- a/standalone_script_examples/swap-api/simple-quote-and-swap/main.py +++ b/standalone_script_examples/swap-api/simple-quote-and-swap/main.py @@ -7,6 +7,7 @@ from requests import JSONDecodeError from solana.rpc.api import Client from solana.rpc.core import RPCException +from solana.rpc.types import TxOpts from solders.solders import Keypair, VersionedTransaction # Load .env file and read environment variables @@ -58,6 +59,8 @@ swap_request = { "userPublicKey": str(wallet.pubkey()), "quoteResponse": quote_data, + "dynamicComputeUnitLimit": True, + "dynamicSlippage": True, } swap_endpoint = f"{API_BASE_URL}/swap/v1/swap" @@ -91,7 +94,7 @@ # Send the signed transaction to the RPC client try: - rpc_response = rpc.send_transaction(signed_transaction) + rpc_response = rpc.send_transaction(signed_transaction, opts=TxOpts(skip_preflight=True)) signature = str(rpc_response.value) print(f"Transaction sent successfully! Signature: {signature}") @@ -99,5 +102,5 @@ except RPCException as e: error_message = e.args[0] print("Transaction failed!") - print(f"Custom Program Error Code: {error_message.data.err.err.code}") + print(f"Custom Program Error Code: {error_message.data}") print(f"Message: {error_message.message}") diff --git a/standalone_script_examples/swap-api/simple-quote-and-swap/requirements.txt b/standalone_script_examples/swap-api/simple-quote-and-swap/requirements.txt index c191fcd..9ae18fd 100644 --- a/standalone_script_examples/swap-api/simple-quote-and-swap/requirements.txt +++ b/standalone_script_examples/swap-api/simple-quote-and-swap/requirements.txt @@ -1,5 +1,5 @@ -requests==2.32.3 +requests==2.32.4 base58==2.1.1 solders==0.26.0 -python-dotenv==1.0.1 -solana==0.36.6 \ No newline at end of file +python-dotenv==1.1.0 +solana==0.36.7 diff --git a/standalone_script_examples/trigger-api/simple-create-order-and-execute/main.py b/standalone_script_examples/trigger-api/simple-create-order-and-execute/main.py index 88049c9..929ba2d 100644 --- a/standalone_script_examples/trigger-api/simple-create-order-and-execute/main.py +++ b/standalone_script_examples/trigger-api/simple-create-order-and-execute/main.py @@ -35,11 +35,11 @@ "params": { "makingAmount": "100000000", # 0.1 WSOL "takingAmount": "100000000", # 100 USDC - } + }, } order_endpoint = f"{API_BASE_URL}/trigger/v1/createOrder" -order_response = requests.post(order_endpoint, json=order_request) +order_response = requests.post(order_endpoint, json=order_request, headers=headers) if order_response.status_code != 200: try: @@ -66,7 +66,9 @@ signers[wallet_index] = wallet signed_transaction = VersionedTransaction(raw_transaction.message, signers) -serialized_signed_transaction = base64.b64encode(bytes(signed_transaction)).decode("utf-8") +serialized_signed_transaction = base64.b64encode(bytes(signed_transaction)).decode( + "utf-8" +) # Execute the order transaction execute_request = { @@ -75,7 +77,9 @@ } execute_endpoint = f"{API_BASE_URL}/trigger/v1/execute" -execute_response = requests.post(execute_endpoint, json=execute_request) +execute_response = requests.post( + execute_endpoint, json=execute_request, headers=headers +) if execute_response.status_code == 200: error_data = execute_response.json() diff --git a/standalone_script_examples/trigger-api/simple-create-order-and-execute/requirements.txt b/standalone_script_examples/trigger-api/simple-create-order-and-execute/requirements.txt index c596567..9c30289 100644 --- a/standalone_script_examples/trigger-api/simple-create-order-and-execute/requirements.txt +++ b/standalone_script_examples/trigger-api/simple-create-order-and-execute/requirements.txt @@ -1,4 +1,4 @@ -requests==2.32.3 +requests==2.32.4 base58==2.1.1 solders==0.26.0 -python-dotenv==1.0.1 \ No newline at end of file +python-dotenv==1.1.0 diff --git a/standalone_script_examples/ultra-api/order-and-execute/main.py b/standalone_script_examples/ultra-api/order-and-execute/main.py index 6ae8d9a..a7b2701 100644 --- a/standalone_script_examples/ultra-api/order-and-execute/main.py +++ b/standalone_script_examples/ultra-api/order-and-execute/main.py @@ -27,7 +27,9 @@ "taker": str(wallet.pubkey()), # Wallet public key } -order_response = requests.get("https://lite-api.jup.ag/ultra/v1/order", params=order_params) +order_response = requests.get( + "https://lite-api.jup.ag/ultra/v1/order", params=order_params +) if order_response.status_code != 200: try: @@ -51,10 +53,14 @@ wallet_index = account_keys.index(wallet.pubkey()) signers = list(raw_transaction.signatures) -signers[wallet_index] = wallet -signed_transaction = VersionedTransaction(raw_transaction.message, signers) -serialized_signed_transaction = base64.b64encode(bytes(signed_transaction)).decode("utf-8") +message_bytes = bytes(raw_transaction.message) +your_signature = wallet.sign_message(message_bytes) +signers[wallet_index] = your_signature +signed_transaction = VersionedTransaction.populate(raw_transaction.message, signers) +serialized_signed_transaction = base64.b64encode(bytes(signed_transaction)).decode( + "utf-8" +) # Execute the order transaction execute_request = { @@ -62,7 +68,9 @@ "requestId": order_data["requestId"], } -execute_response = requests.post("https://lite-api.jup.ag/ultra/v1/execute", json=execute_request) +execute_response = requests.post( + "https://lite-api.jup.ag/ultra/v1/execute", json=execute_request +) if execute_response.status_code == 200: error_data = execute_response.json() diff --git a/standalone_script_examples/ultra-api/order-and-execute/requirements.txt b/standalone_script_examples/ultra-api/order-and-execute/requirements.txt index c596567..ca8267e 100644 --- a/standalone_script_examples/ultra-api/order-and-execute/requirements.txt +++ b/standalone_script_examples/ultra-api/order-and-execute/requirements.txt @@ -1,4 +1,4 @@ -requests==2.32.3 +requests==2.32.4 base58==2.1.1 -solders==0.26.0 -python-dotenv==1.0.1 \ No newline at end of file +solders==0.27.0 +python-dotenv==1.1.0 diff --git a/standalone_script_examples/ultra-api/sell-everything-back-to-sol/main.py b/standalone_script_examples/ultra-api/sell-everything-back-to-sol/main.py index 793cb43..38aa670 100644 --- a/standalone_script_examples/ultra-api/sell-everything-back-to-sol/main.py +++ b/standalone_script_examples/ultra-api/sell-everything-back-to-sol/main.py @@ -19,7 +19,9 @@ private_key_bytes = base58.b58decode(PRIVATE_KEY) wallet = Keypair.from_bytes(private_key_bytes) -balances_response = requests.get(f"https://lite-api.jup.ag/ultra/v1/balances/{str(wallet.pubkey())}") +balances_response = requests.get( + f"https://lite-api.jup.ag/ultra/v1/balances/{str(wallet.pubkey())}" +) if balances_response.status_code != 200: try: @@ -42,7 +44,9 @@ "taker": str(wallet.pubkey()), # Wallet public key } - order_response = requests.get("https://lite-api.jup.ag/ultra/v1/order", params=order_params) + order_response = requests.get( + "https://lite-api.jup.ag/ultra/v1/order", params=order_params + ) if order_response.status_code != 200: try: @@ -69,7 +73,9 @@ signers[wallet_index] = wallet signed_transaction = VersionedTransaction(raw_transaction.message, signers) - serialized_signed_transaction = base64.b64encode(bytes(signed_transaction)).decode("utf-8") + serialized_signed_transaction = base64.b64encode( + bytes(signed_transaction) + ).decode("utf-8") # Execute the order transaction execute_request = { @@ -77,7 +83,9 @@ "requestId": order_data["requestId"], } - execute_response = requests.post("https://lite-api.jup.ag/ultra/v1/execute", json=execute_request) + execute_response = requests.post( + "https://lite-api.jup.ag/ultra/v1/execute", json=execute_request + ) if execute_response.status_code == 200: error_data = execute_response.json() diff --git a/standalone_script_examples/ultra-api/sell-everything-back-to-sol/requirements.txt b/standalone_script_examples/ultra-api/sell-everything-back-to-sol/requirements.txt index c596567..9c30289 100644 --- a/standalone_script_examples/ultra-api/sell-everything-back-to-sol/requirements.txt +++ b/standalone_script_examples/ultra-api/sell-everything-back-to-sol/requirements.txt @@ -1,4 +1,4 @@ -requests==2.32.3 +requests==2.32.4 base58==2.1.1 solders==0.26.0 -python-dotenv==1.0.1 \ No newline at end of file +python-dotenv==1.1.0