> ## 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.

# Products

> Issue digital products — tickets, vouchers, perks, and NFT collectibles

The Products API lets you create digital products and distribute them to your users. Products cover everything from event admission tickets to drink vouchers, VIP perks, and NFT-backed collectibles — with full lifecycle management for issuance, redemption, transfer, and sales tracking.

## How Products Work

```
Create Product → Issue Items to Users → Redeem at Event → (Optional) Transfer Between Users
```

Every product belongs to an **event** and has a **type** that defines its purpose:

| Type        | Use Case            | Example                                        |
| ----------- | ------------------- | ---------------------------------------------- |
| `admission` | Entry tickets       | General admission, VIP pass                    |
| `presale`   | Early access offers | Presale tickets, early bird deals              |
| `perks`     | Vouchers and extras | Drink coupons, merch credits, backstage access |

## Product Items

A **product item** is a single instance of a product issued to a user. Think of a product as the template (e.g., "General Admission Ticket") and items as individual copies given to specific users.

Items support:

* **Sequential IDs** — Each item gets a unique `item_id` (also used as NFT ID if minted)
* **Multi-use redemption** — Configure `redemption_quantity` for items valid for multiple uses (e.g., a voucher for 3 drinks)
* **Transfers** — Allow users to send items to other users (when `is_transferable` is enabled)
* **Batch issuance** — Issue to up to **550 users** per request

## Configuration Options

Products offer fine-grained control over distribution:

| Field                 | What it does                                      | Default   |
| --------------------- | ------------------------------------------------- | --------- |
| `stock`               | Total available inventory (`null` = unlimited)    | Unlimited |
| `max_per_account`     | Max items per user (`null` = unlimited)           | Unlimited |
| `redemption_quantity` | Times each item can be redeemed                   | 1         |
| `is_transferable`     | Allow transfers between users                     | `false`   |
| `is_claimable`        | Allow claiming via direct URL                     | `false`   |
| `price`               | Product price as decimal string (e.g., `"49.99"`) | —         |
| `active`              | Whether items can currently be issued             | `true`    |

## NFT Minting

Products can optionally mint an NFT on the Polkadot network for each issued item. When enabled:

* Set `mint_nft: true` when creating the product
* Provide a `metadata_uri` pointing to a JSON file with `name`, `image`, and `description`
* Choose a `chain`: `AssetHub` (mainnet) or `WestendAssetHub` (testnet)
* Your project wallet needs at least **2 DOT** (or 2 WND on testnet) for on-chain fees
* Each item's sequential `item_id` becomes its on-chain NFT ID

## Quick Example

Create a ticket and issue it:

<CodeGroup>
  ```bash cURL theme={null}
  # Create a product
  curl -X POST https://api.mufi.app/v1/products \
    -H "Authorization: Bearer $MUFI_API_KEY" \
    -H "Content-Type: application/json" \
    -d '{
      "type": "admission",
      "name": "General Admission",
      "price": "49.99",
      "stock": 500,
      "is_transferable": true,
      "event_id": "EVENT_ID"
    }'

  # Issue items to users
  curl -X POST https://api.mufi.app/v1/products/PRODUCT_ID/items \
    -H "Authorization: Bearer $MUFI_API_KEY" \
    -H "Content-Type: application/json" \
    -d '{
      "product_id": "PRODUCT_ID",
      "emails": ["fan1@example.com", "fan2@example.com"]
    }'

  # Redeem an item
  curl -X POST https://api.mufi.app/v1/products/PRODUCT_ID/items/redeem \
    -H "Authorization: Bearer $MUFI_API_KEY" \
    -H "Content-Type: application/json" \
    -d '{ "product_item_id": "ITEM_ID" }'
  ```
</CodeGroup>

## Learn More

<CardGroup cols={2}>
  <Card title="Products API Reference" icon="box" href="/docs/products/introduction">
    Full API documentation with all endpoints, parameters, and response schemas.
  </Card>

  <Card title="Events Overview" icon="calendar" href="/docs/events-overview">
    Learn how events and products work together.
  </Card>
</CardGroup>
