Key Concepts
Product Types
Every product has atype 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_counttracking how many times it has been redeemed - An
is_fully_redeemedflag indicating whether all redemptions have been used - Owner information (user ID, email, name)
Redemption
Redeeming an item increments itsredemption_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 hasis_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_accountlimit
NFT Minting
Products can optionally mint an NFT for each issued item by settingmint_nft to true. When enabled:
- A
metadata_uriis required — a URL pointing to a JSON file withname,image, anddescriptionfields - A
chainmust be specified:AssetHub(Polkadot) orWestendAssetHub(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_idis used as the on-chain NFT ID
Pricing and Sales
Products support optional pricing via theprice 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
Create Product
Create a new product with type, pricing, stock limits, and optional NFT minting.
List Products
Fetch all products for your project with pagination.
Get Product
Retrieve a single product by ID with full configuration details.
Create Product Items
Issue items to up to 550 users per request by user ID or email.
Redeem Product Item
Redeem an item, incrementing its redemption count.
Transfer Product Item
Transfer an item from one user to another.
List Product Sales
Fetch paginated sales history for a product.