← All docs

Quickstart

Get from zero to your first test sale in about ten minutes. Everything below can be done from the dashboard; the API equivalents are shown for sellers who want to automate.

1. Create your seller account

Sign up with an email and a password of at least 12 characters. You land on your dashboard, logged in.

API equivalent
curl -c cookies.txt -X POST https://YOUR_HOST/api/auth/register \
  -H 'Content-Type: application/json' \
  -d '{"email":"you@example.com","password":"a-strong-password-here"}'
# -> 201 { "seller": { "id": "...", "email": "you@example.com", ... } }

Registration logs you in immediately: the session cookie is stored in cookies.txt above. Sign in later with POST /api/auth/login (same body), sign out with POST /api/auth/logout.

2. Connect your Stripe account

Payments run on your Stripe account. On your dashboard, click Connect with Stripe and complete Stripe’s sign-up; you come back to your dashboard when it’s done. There are no keys to copy and no webhooks to register. Details in Stripe setup.

3. Create a product

In Sell something new, give the product a name and a price, attach the file (up to 500 MB), choose a download limit (1–25) and link expiry (1–30 days), and optionally turn on license keys. On the Pro plan you can also pick Unlimited downloads and Never expires.

API equivalent
curl -b cookies.txt -X POST https://YOUR_HOST/api/products \
  -H 'Content-Type: application/json' \
  -d '{
    "name": "My Ebook",
    "description": "A great read.",
    "price_cents": 1900,
    "license_enabled": false,
    "download_limit": 5,
    "expiry_days": 7
  }'
# -> 201 { "product": { "id": "...", "slug": "3f9a1c2e7b8d4e01", ... } }

curl -b cookies.txt -X POST https://YOUR_HOST/api/products/PRODUCT_ID/file \
  -F 'file=@/path/to/ebook.pdf'
# -> 200 { "product": { "has_file": true, "file_name": "ebook.pdf", ... } }

price_cents is an integer in cents. download_limit is 1–25 (default 5); expiry_days is 1–30 (default 7). On Pro you may pass null for either field (unlimited / never expires); null on Free is rejected. Replacing a file deletes the previous version from storage.

4. Share your buy link

Every product gets a public page at https://YOUR_HOST/buy/<slug>. The slug is a random 16-character id, so product names never have to be unique. Use Copy link in your products table and put it anywhere — your site, a newsletter, a social bio. Buyers enter their email, pay via Stripe Checkout, and get their download link by email.

5. Run a test purchase

Open your buy link, pay with one of Stripe’s test cards if this deployment runs in Stripe test mode, and check that the download email arrives. Then refund the payment from your Stripe Dashboard: the download link stops working.

Useful endpoints