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

# Introduction

> Create products, issue items, and manage redemptions and transfers

The Products API lets you create digital products — tickets, vouchers, perks, and NFT-backed collectibles — and distribute them to your users. Products are associated with events and support a full item lifecycle: creation, issuance, redemption, transfer, and sales tracking.

## Key Concepts

### Product Types

Every product has a `type` that defines its purpose:

| Type        | Description                                                    |
| ----------- | -------------------------------------------------------------- |
| `admission` | Entry tickets for events (e.g., general admission, VIP)        |
| `presale`   | Early access or presale offers                                 |
| `perks`     | Vouchers and extras (e.g., drink coupons, merchandise credits) |

### Product Configuration

Products offer fine-grained control over distribution and usage:

| Field                 | Description                                                            | Default   |
| --------------------- | ---------------------------------------------------------------------- | --------- |
| `stock`               | Total available inventory. `null` for unlimited.                       | Unlimited |
| `max_per_account`     | Maximum items a single user can hold. `null` for unlimited.            | Unlimited |
| `redemption_quantity` | Number of times each item can be redeemed before it is fully consumed. | 1         |
| `is_transferable`     | Whether items can be transferred between users.                        | `false`   |
| `is_claimable`        | Whether items can be claimed via a direct URL.                         | `false`   |
| `min_rep_balance`     | Minimum reputation balance required to receive an item.                | 0         |
| `max_items`           | Maximum items in the collection. `null` for unlimited.                 | Unlimited |
| `active`              | Whether the product is currently active and items can be issued.       | `true`    |

### Product Items

A **product item** is a single instance of a product issued to a user. Each item has:

* A unique sequential `item_id` (also used as the NFT ID if minted)
* A `redemption_count` tracking how many times it has been redeemed
* An `is_fully_redeemed` flag indicating whether all redemptions have been used
* Owner information (user ID, email, name)

Items can be issued in bulk — up to **550 users per request** — by providing user IDs, email addresses, or a mix of both.

### Redemption

Redeeming an item increments its `redemption_count`. Once the count reaches the product's `redemption_quantity`, the item is marked as fully redeemed and cannot be redeemed again. This supports both single-use items (e.g., event tickets) and multi-use items (e.g., a voucher valid for 3 drinks).

### Transfers

When a product has `is_transferable` set to `true`, items can be transferred between users. Transfers are subject to the following rules:

* The sender must be the current owner of the item
* The item must not be fully redeemed
* The recipient must be a user in your project
* Self-transfers are not allowed
* The recipient must not exceed the product's `max_per_account` limit

### NFT Minting

Products can optionally mint an NFT for each issued item by setting `mint_nft` to `true`. When enabled:

* A `metadata_uri` is required — a URL pointing to a JSON file with `name`, `image`, and `description` fields
* A `chain` must be specified: `AssetHub` (Polkadot) or `WestendAssetHub` (testnet)
* Your project wallet must hold at least **2 DOT** (AssetHub) or **2 WND** (WestendAssetHub) to cover on-chain fees
* Each item's sequential `item_id` is used as the on-chain NFT ID

### Pricing and Sales

Products support optional pricing via the `price` field (a decimal string, e.g., `"9.99"`). When products are sold, the Sales endpoint provides paginated access to order history including order numbers, quantities, unit prices, and buyer details.

## Available Endpoints

<CardGroup cols={2}>
  <Card title="Create Product" icon="box" href="/docs/endpoint/engagement/create-product">
    Create a new product with type, pricing, stock limits, and optional NFT minting.
  </Card>

  <Card title="List Products" icon="boxes-stacked" href="/docs/endpoint/engagement/list-products">
    Fetch all products for your project with pagination.
  </Card>

  <Card title="Get Product" icon="magnifying-glass" href="/docs/endpoint/engagement/get-product">
    Retrieve a single product by ID with full configuration details.
  </Card>

  <Card title="Create Product Items" icon="plus" href="/docs/endpoint/engagement/create-product-items">
    Issue items to up to 550 users per request by user ID or email.
  </Card>

  <Card title="Redeem Product Item" icon="check" href="/docs/endpoint/engagement/redeem-product-item">
    Redeem an item, incrementing its redemption count.
  </Card>

  <Card title="Transfer Product Item" icon="arrow-right-arrow-left" href="/docs/endpoint/engagement/transfer-product-item">
    Transfer an item from one user to another.
  </Card>

  <Card title="List Product Sales" icon="receipt" href="/docs/endpoint/engagement/list-product-sales">
    Fetch paginated sales history for a product.
  </Card>
</CardGroup>
