API Reference

Make your first authenticated SellApp request, then build and operate a production integration safely.

Build your own checkout, manage your catalog, or connect SellApp to the tools your business already uses. Start with a read-only request below, then follow one purchase from product setup to webhook delivery.

The base URL is https://sell.app/api. Requests operate on the real data of the store selected by X-STORE; there is no separate API sandbox.

Use API keys for your own integrations. To connect the official SellApp CLI, follow CLI installation, then run sellapp login and approve browser consent. CLI authorization explains store selection. For AI clients, Sell MCP provides a separate browser OAuth connection. MCP registration does not authorize a general-purpose REST integration.

For an account without a store, create a key in API keys and follow account discovery and first-store creation. These account calls use explicit account:read or stores:create abilities and omit X-STORE. You can also use one key for bounded reads across accessible stores.

Make a harmless request

  1. Create a secret key in API keys.
  2. Copy the store slug from its storefront URL. For launch-lab.sell.app, the slug is launch-lab.
  3. Give your key the listing ability (permission to access the catalog), replace the values below, and run this in your terminal:
List the first product
export SELLAPP_API_BASE_URL='https://sell.app/api'
export SELLAPP_API_KEY='replace-me'
export SELLAPP_STORE='launch-lab'

curl --fail-with-body --request GET \
  --url "${SELLAPP_API_BASE_URL}/v2/products?limit=1" \
  --header "Authorization: Bearer ${SELLAPP_API_KEY}" \
  --header "X-STORE: ${SELLAPP_STORE}" \
  --header 'Accept: application/json'

A successful response is 200 OK and includes an X-Request-ID response header for debugging. The data array contains your products, one page at a time. Your product names and IDs will differ from this example:

Response — abbreviated
{
  "data": [
    {
      "id": 120,
      "title": "Design course",
      "slug": "design-course",
      "visibility": "HIDDEN"
    }
  ],
  "links": {
    "first": "https://sell.app/api/v2/products?page=1",
    "last": "https://sell.app/api/v2/products?page=1",
    "prev": null,
    "next": null
  },
  "meta": {
    "current_page": 1,
    "per_page": 1,
    "total": 1
  }
}

No products yet? An empty data array still means the request worked. A 401 means the key is missing or invalid. A 403 means the key or account lacks access. A 404 after changing X-STORE usually means that slug is wrong or unavailable to the authenticated account.

Build the first sale

The usual integration path is:

Register and test webhook → create product → configure variant → create order → checkout → process events

Follow the first-request guide, then use the workflow and operating guides below before letting your integration change live data.

For agents and automation

Start with authentication and one read. Choose an SDK resource reference, or inspect one CLI operation with sellapp commands products create --json. Use the returned schema and examples before constructing inputs. Errors and retries explains recovery. Each endpoint's Markdown export includes its inputs, permissions, and examples; you do not need to load the entire OpenAPI document for one operation.

On this page