> ## Documentation Index
> Fetch the complete documentation index at: https://docs.sellauth.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Reseller API Introduction

> Public API for approved resellers of a SellAuth shop.

The Reseller API lets approved resellers of a shop browse the reseller catalog with their tier pricing, check their balance, and place orders programmatically from any platform.

New to the reseller system? Start with the [overview](/resellers/overview).

## Base URL

```
https://api.sellauth.com/v1/reseller
```

## Authentication

Authenticate with your **reseller API key**, sent as a Bearer token:

```bash theme={null}
curl https://api.sellauth.com/v1/reseller/products \
  -H "Authorization: Bearer YOUR_RESELLER_API_KEY"
```

Your reseller API key is generated on the shop's customer panel under **Reseller** (`/customer/reseller`, **Manage API key**). The key is shown once; regenerating it invalidates the old key immediately.

<Warning>Seller dashboard API keys will not work here. The Reseller API only accepts reseller keys.</Warning>

## Catalog

[List Products](/reseller-api/products/list-products) returns everything you need to render the shop's products on your own storefront: the product `description`, `image_urls` and `product_tabs` (the seller's extra content blocks, such as terms or redemption instructions), plus a `description` per variant.

Variants arrive in the order the seller arranged them, so you can display them as-is.

<Note>A variant's `stock` is `-1` when it has unlimited stock, not zero. Check for `-1` before rendering a stock count.</Note>

Products also carry an `updated_at`, as do variants. Image and content tab edits do not bump either value, so use them as a hint that something changed rather than a strict sync cursor.

## Placing orders

[Create Invoice](/reseller-api/invoices/create-invoice) charges your store balance (always in USD) at your tier price and delivers from the shop's stock **synchronously**: serial and dynamic deliverables are returned in the response itself. If an item cannot be delivered, its charge is refunded to your balance automatically.

Every item in one invoice must share the same currency. Products priced in different currencies have to be ordered as separate invoices, otherwise the request is rejected with a 422.

Send an `Idempotency-Key` header with a unique value per order and reuse it on retries. If a request times out, retrying with the same key returns the original invoice instead of charging you twice.

## Rate limits

* Read endpoints (products, balance, invoices): **60 requests per minute**
* Create Invoice: **20 requests per minute**


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.