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.
Make a harmless request
- Create a secret key in your store developer settings.
- Copy the store slug from its storefront URL. For
launch-lab.sell.app, the slug islaunch-lab. - Give your key the
listingability (permission to access the catalog), replace the values below, and run this in your terminal:
export SELLAPP_API_BASE_URL='https://sell.app/api'
export SELLAPP_API_KEY='replace-me'
export SELLAPP_STORE_SLUG='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_SLUG}" \
--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:
{
"data": [
{
"id": 120,
"title": "Founder memo circle",
"slug": "founder-memo-circle",
"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 invoice → checkout → process eventsFollow the complete subscription quickstart, then use the workflow and operating guides below before letting your integration change live data.
Complete subscription quickstart
Carry real response IDs from webhook setup through subscription checkout.
Testing safely
Keep test data separate and check how your app handles failures.
Sell a product
Create a hidden product and its first purchasable variant.
Create a checkout
Create an invoice and turn it into a customer checkout URL.
Errors and retries
Understand what went wrong and when it is safe to try again.
Webhooks
Verify incoming events and handle repeated deliveries safely.