Skip to main content

SellApp Python SDK

Put your SellApp store to work from Python. Read your catalog, work with orders, or connect customers to your own tools. The SDK turns Python method calls into API requests and returns objects whose fields you can use straight away.

We'll start with one product and print its title. A small script is enough to find out whether your store and your code are on speaking terms. Already building an integration? Jump to configuration, async, or the method index.

Installation

Requires Python 3.10 or newer. Use a currently supported Python release for new integrations. Create a virtual environment to keep this project's packages together:

python -m venv .venv
. .venv/bin/activate
python -m pip install sellapp-sdk

On Windows, activate with .venv\Scripts\Activate.ps1. The distribution name is sellapp-sdk; the import is sellapp_sdk. Find releases on PyPI and the source repository. If you are working from an unpublished checkout, install that local copy with python -m pip install . instead.

First request

Your API key identifies your account; the store slug selects the store. For launch-lab.sell.app, the slug is launch-lab. This request needs the key's listing ability, which grants catalog access. Follow the authentication guide for key setup and permissions, and keep the secret key on your server.

Set these environment variables in a Bash-compatible terminal, replacing both placeholders. Your script can read these settings without keeping credentials in its source:

export SELLAPP_API_KEY="your-api-key"
export SELLAPP_STORE="your-store"
export SELLAPP_API_BASE_URL="https://sell.app/api"

The address above connects to your real store. This first request only reads data. The SDK sends the key as Authorization: Bearer and the slug as X-STORE. The API site's curl examples use SELLAPP_STORE; the Python SDK reads SELLAPP_STORE.

The examples require an explicit base URL: you choose where they connect. SELLAPP_API_BASE_URL is an example convention, read by the scripts and passed to base_url; the SDK itself does not read it.

Save this as first_request.py and run python first_request.py, or use the copy in the checkout with python examples/first_request.py:

import os

from sellapp_sdk import SellAppClient

base_url = os.environ["SELLAPP_API_BASE_URL"]
if not base_url.strip():
    raise ValueError("Set a nonempty SELLAPP_API_BASE_URL before running this example")

with SellAppClient(base_url=base_url) as client:
    page = client.products.list(limit=1)
    for product in page.data:
        print(product.id, product.title)
    if not page.data:
        print("No products yet. Your connection is ready.")

The result is a page, or one batch of products. limit=1 asks for at most one; page.data holds the returned product objects. The script prints each product's ID and title. An empty store still proves the connection works, and the script says so. The with block closes the client's HTTP connections when it finishes.

Prefer async?

If your app already uses asyncio, use AsyncSellAppClient and await each request. It comes in the same package; there's nothing extra to install. For a simple script, the synchronous example above is all you need. Run python examples/async_first_request.py:

import asyncio
import os

from sellapp_sdk import AsyncSellAppClient

base_url = os.environ["SELLAPP_API_BASE_URL"]
if not base_url.strip():
    raise ValueError("Set a nonempty SELLAPP_API_BASE_URL before running this example")


async def main():
    async with AsyncSellAppClient(base_url=base_url) as client:
        page = await client.products.list(limit=1)
        for product in page.data:
            print(product.id, product.title)
        if not page.data:
            print("No products yet. Your connection is ready.")


asyncio.run(main())

Account access and first-store setup

Create a user-owned key in API keys, even before you have a store. Enable account:read for identity, store discovery and permission inspection, and stores:create separately for store creation. Identity, discovery, store detail by ID and creation omit X-STORE; permission inspection and business requests select a store explicitly.

An unrestricted key covers current and future accessible stores. A selected-store key covers only its fixed list; an empty list covers none. Membership and role changes still apply. Selected-store keys cannot create stores. Existing keys do not gain abilities automatically; * satisfies the new abilities while retaining membership, role and restriction checks.

The account guide shows first-store creation, required idempotency keys, and bounded reads across several stores with partial failures. Creation returns an ID and slug; use the slug for subsequent product requests. Find your language's methods in the resource reference. CLI and MCP connections retain browser OAuth.

If the request fails

Result Next step
Empty product list The read succeeded. Create a product when you are ready.
401 Check the selected credential and whether it has expired or been revoked.
403 Check the key's listing ability, selected-store restrictions and the account's current store permissions. Official CLI OAuth also requires its active grant.
400 with a missing-store message Set SELLAPP_STORE to an authorized store slug.
429 Follow Retry-After and the SDK's documented retry behavior.

Keep the request ID when reporting an API failure. Never include credentials.

Three useful next actions

  1. Create and edit a product: exact signatures and complete examples.
  2. Read orders or create a checkout: inspect permissions and effects before changing a purchase.
  3. Read more than one page: pagination, request controls, errors, and retry behavior.

Reference and examples

Support and releases

Find available packages and installation instructions in the SDK guide. Report an SDK issue. Include the SDK version, runtime version, and a redacted reproduction. Licensed under MIT; see third-party notices.

Metadata

Release files for sellapp-sdk 0.1.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for sellapp-sdk 0.1.1
File Size Uploaded
sellapp_sdk-0.1.1.tar.gz 860.3 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for sellapp-sdk 0.1.1
File Interpreter ABI Platform
sellapp_sdk-0.1.1-py3-none-any.whl Python 3 none any Details

Total release size: 3.6 MB

Release files / sellapp_sdk-0.1.1.tar.gz

Download URL sellapp_sdk-0.1.1.tar.gz
Size 860.3 kB
Tags Source
SHA-256 checksum
How to use checksums
ed4b40822ca7b9d62acfb7dd35e93dcbe7f6a6ae1a67116a5ab706cf152d4324
BLAKE2b-256 checksum
How to use checksums
00d54029c80644ae2a2f60c7292526fcfb62b815c7d556e8dbbbd9f12f0159bf
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 19, 2026.

Transparency log

Release files / sellapp_sdk-0.1.1-py3-none-any.whl

Download URL sellapp_sdk-0.1.1-py3-none-any.whl
Size 2.8 MB
Tags Python 3
SHA-256 checksum
How to use checksums
69c4881e62b42d4652a729f988c7236ef0318879c7ee8850bf70da57f3ae5a7f
BLAKE2b-256 checksum
How to use checksums
e76cc4e041a48bc211653daec2aa667dee6e51d545aea04e5bd7d8140a29a1c5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 19, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.1.1 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page