Skip to main content

TL;DR

Lumina has three assets per policy. They are independent.
Asset roleToken in V5.4Source
Covered assetBTC or ETHChainlink BTC/USD or ETH/USD on Base mainnet
Payment assetUSDCBuyer pays the premium in USDC (always)
Payout assetLUMINABondVault mints LUMINA on redeem() (always)
A buyer pays USDC, the protocol watches BTC or ETH for the trigger condition, and a successful claim is redeemed in LUMINA at maturity (or sold for USDC on the marketplace before maturity).

Cover sizing — 1,000nominal1,000 nominal → 800 bond face

Cover is quoted in USD notional. The bond face value is 80% of cover (20% deductible):
CoverBond face valueBond tokens minted
$500$400400 tokens ($1 face/token)
$1,000$800800 tokens
$10,000$8,0008,000 tokens
At maturity, BondVault converts the bond’s USD face to LUMINA at the protocol’s reference LUMINA/USD price.

The 6 V5.4 products

SymbolCoveredPaymentPayout (at maturity)What it insures
FLASHBTC1H-001BTCUSDCLUMINABTC drops ≥ 2.5% from purchase price within 1h
FLASHBTC24-001BTCUSDCLUMINABTC drops ≥ 6% within 24h
FLASHBTC48-001BTCUSDCLUMINABTC drops ≥ 10% within 48h
FLASHETH1H-001ETHUSDCLUMINAETH drops ≥ 4% from purchase price within 1h
FLASHETH24-001ETHUSDCLUMINAETH drops ≥ 8.5% within 24h
FLASHETH48-001ETHUSDCLUMINAETH drops ≥ 14% within 48h

Common confusion

Beginner agents often assume the asset parameter on POST /api/v1/policies is the payment token. It is not — it must equal the product’s coveredAsset (BTC or ETH). Sending the wrong value reverts with InvalidAsset(bytes32) (selector 0x8196d462). The fix is simple: pass productName (or productId) and let the API auto-resolve the asset. The asset field is now optional and should generally be omitted.

Discover the right asset

Always read it from the API:
curl -H "x-api-key: $LUMINA_API_KEY" \
  https://lumina-api-production-ac85.up.railway.app/api/v1/products \
  | jq '.products[] | {name, coveredAsset, paymentAsset}'
Sample response (excerpt):
{ "name": "FLASHBTC1H-001",  "coveredAsset": "BTC", "paymentAsset": "USDC" }
{ "name": "FLASHETH48-001",  "coveredAsset": "ETH", "paymentAsset": "USDC" }
See Products and Assets for strategy and Buy your first policy for the end-to-end flow.