Skip to main content

Python SDK for the LaserSell API

Project description

lasersell-sdk (Python)

Python SDK for the LaserSell API.

Modules:

  • exit_api: build unsigned buy/sell transactions.
  • stream: websocket client, protocol types, and session helpers.
  • tx: sign/encode/send Solana transactions.
  • retry: shared retry helpers.

Install

Published package:

pip install lasersell-sdk[full]

From this repository:

cd lasersell-sdk/python
python -m pip install -e '.[full]'

Install only what you need:

  • lasersell-sdk[stream] for websocket stream support (websockets)
  • lasersell-sdk[tx] for Solana transaction signing support (solders)

Package layout

  • lasersell_sdk.exit_api: build unsigned buy/sell transactions.
  • lasersell_sdk.stream.client: websocket transport and command sender.
  • lasersell_sdk.stream.session: higher-level stream session with position tracking.
  • lasersell_sdk.stream.proto: protocol types and JSON encode/decode helpers.
  • lasersell_sdk.tx: sign/encode/send Solana transactions.
  • lasersell_sdk.retry: retry/backoff and timeout helpers.

Build a sell transaction

import asyncio

from lasersell_sdk.exit_api import BuildSellTxRequest, ExitApiClient, SellOutput


async def main() -> None:
    client = ExitApiClient.with_api_key("REPLACE_WITH_API_KEY")

    request = BuildSellTxRequest(
        mint="REPLACE_WITH_MINT",
        user_pubkey="REPLACE_WITH_WALLET_PUBKEY",
        amount_tokens=1_000_000,
        slippage_bps=2_000,
        output=SellOutput.SOL,
    )

    response = await client.build_sell_tx(request)
    print(response.tx)


asyncio.run(main())

Notes:

  • amount_tokens is in token atomic units (smallest unit for the mint).
  • slippage_bps is basis points (100 = 1%, 2000 = 20%).
  • Use client.with_base_url("https://api-dev.example") to target a custom base URL.

Stream + auto-sell flow

import asyncio

from solders.keypair import Keypair

from lasersell_sdk.stream.client import (
    StreamClient,
    single_wallet_stream_configure_optional,
)
from lasersell_sdk.stream.session import StreamSession
from lasersell_sdk.tx import SendTargetHeliusSender, send_transaction, sign_unsigned_tx


async def main() -> None:
    signer = Keypair()
    client = StreamClient("REPLACE_WITH_API_KEY")
    session = await StreamSession.connect(
        client,
        single_wallet_stream_configure_optional(
            "REPLACE_WITH_WALLET_PUBKEY",
            deadline_timeout_sec=45,  # timeout-only strategy is valid
        ),
    )

    while True:
        event = await session.recv()
        if event is None:
            break

        if event.type == "exit_signal_with_tx" and event.message.get("type") == "exit_signal_with_tx":
            signed_tx = sign_unsigned_tx(event.message["unsigned_tx_b64"], signer)
            signature = await send_transaction(SendTargetHeliusSender(), signed_tx)
            print(signature)


asyncio.run(main())

deadline_timeout_sec is enforced client-side by StreamSession timers and is not sent as part of wire strategy. Use session.update_strategy(...) when changing strategy so local deadline timers stay in sync (pass deadline_timeout_sec= to change local deadline timing). Use single_wallet_stream_configure_optional(...) / strategy_config_from_optional(...) to omit TP/SL fields; at least one of take profit, stop loss, or timeout must be enabled.

Notes:

  • Use client.with_endpoint("wss://stream-dev.example/v1/ws") to target a custom stream endpoint.
  • unsigned_tx_b64 from stream events can be signed with lasersell_sdk.tx.sign_unsigned_tx.

Examples

See examples/README.md for setup and script-by-script instructions.

Quick run commands (from lasersell-sdk/python):

python examples/build_buy.py
python examples/build_sell.py
python examples/build_and_send_sell.py
python examples/auto_sell.py

Scripts:

  • build_buy.py
  • build_sell.py
  • build_and_send_sell.py
  • auto_sell.py

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

lasersell_sdk-0.1.0.tar.gz (21.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

lasersell_sdk-0.1.0-py3-none-any.whl (22.5 kB view details)

Uploaded Python 3

File details

Details for the file lasersell_sdk-0.1.0.tar.gz.

File metadata

  • Download URL: lasersell_sdk-0.1.0.tar.gz
  • Upload date:
  • Size: 21.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for lasersell_sdk-0.1.0.tar.gz
Algorithm Hash digest
SHA256 ec155d8878f715eabc765988fea7f969c773dcab310367a0ce45c77722f76a7b
MD5 d4c2e07a7939502208a852663f09fd9c
BLAKE2b-256 6f9eddd62dfe6031dd38f0ab8f479fff9a1657cab31d05e21dd7ed2074f738dc

See more details on using hashes here.

Provenance

The following attestation bundles were made for lasersell_sdk-0.1.0.tar.gz:

Publisher: publish.yml on lasersell/lasersell-sdk

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file lasersell_sdk-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: lasersell_sdk-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 22.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for lasersell_sdk-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 256df114e85d5511f3f3ff8778724985b57e21892cd901292bee4503e370830f
MD5 5e7eb00810208f497a4fed9f68b9031b
BLAKE2b-256 ed66e551c393c336f2527fa008afb9db5447e605ea188133680ed22cfdd6d28a

See more details on using hashes here.

Provenance

The following attestation bundles were made for lasersell_sdk-0.1.0-py3-none-any.whl:

Publisher: publish.yml on lasersell/lasersell-sdk

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

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