lumina.policies.list({ wallet? })
wallet is supported but ignored unless the API key
owns that wallet — cross-wallet listing returns 403.
lumina.policies.get(productId, policyId)
Public — no API key required.
lumina.policies.purchase({ productName, buyer, coverageAmount })
The SDK auto-resolves both the productId keccak hash AND the per-shield
asset literal from productName. Pass productName whenever you can:
productName must be one of the 6 V5.3 catalog entries:
FLASHBTC1H-001FLASHBTC24-001FLASHBTC48-001FLASHETH1H-001FLASHETH24-001FLASHETH48-001
Unknown product at the SDK boundary
before any network call is made.
Or pass productId explicitly — the SDK still auto-resolves the asset by
reverse-lookup against the canonical registry:
Premium reference (per $1k coverage)
| productName | Premium |
|---|---|
FLASHBTC1H-001 | $2.92 |
FLASHBTC24-001 | $52.60 |
FLASHBTC48-001 | $148.67 |
FLASHETH1H-001 | $1.68 |
FLASHETH24-001 | $45.80 |
FLASHETH48-001 | $123.01 |
lumina.products.quote(productId, coverageAmount) and are the authoritative source if you’re displaying a
price to a user.
Asset encoding
Theasset field is optional when productName or a registered
productId is supplied. To override, pass a symbol ('BTC' | 'ETH' | 'USDC' | 'USDT') or a 32-byte hex string:
InvalidAsset failure modes.
Idempotency
Always passidempotencyKey on retryable purchases. The header value is
forwarded as Idempotency-Key. Replays return the original response; no
double-charge.