Partner signup, swap & bridge embeds, Login with Riddle, and sign widgets.
Production partner APIs and drop-in widgets for dApps. Users pay with any suite wallet (Riddle, Xaman, Joey, MetaMask, Phantom) on mainnet through Riddle; you earn a share of platform fees on every attributed swap, bridge, and Cafe trade. Add Login with Riddle and sign widgets without shipping your own wallet UI.
REST APIs
Mainnet swap quotes, bridge estimate/create/status, Cafe broker quote — all with partner fee breakdown.
Embed widgets
Swap, bridge, marketplace, login, and sign — one setup path, origin allowlist.
Login with Riddle
Drop-in identity: users authenticate with a suite wallet. Session + origin allowlist for partner dApps.
Sign widgets
Request signatures for payments and messages from the same wallet matrix used by swap and bridge.
Mainnet fee ladder (platform)
fee_extra model — user pays full amount + platform fee to suite treasury.
| Product | Platform fee | Partner share (Growth) | Live app |
|---|---|---|---|
| Swap | 0.85% | 30% of fee | swap.riddlewallet.com |
| Bridge | 1.20% | 30% of fee | bridge.riddlewallet.com |
| Cafe marketplace | 1% | 30% of fee | cafe.riddlewallet.com |
Quick embed
Same snippet as setup. Replace acme with your slug.
<div id="riddle-header"></div>
<div id="riddle-swap"></div>
<div id="riddle-bridge"></div>
<div id="riddle-market"></div>
<div id="riddle-login"></div>
<div id="riddle-create"></div>
<div id="riddle-buy"></div>
<div id="riddle-custom"></div>
<script src="https://partners.riddlewallet.com/riddlepartners.js"></script>
<script>
const riddle = RiddlePartners.createClient({ partner: 'acme' })
riddle.mount('#riddle-header', { product: 'header', height: 56 })
riddle.mount('#riddle-swap', { product: 'swap', height: 560 })
riddle.mount('#riddle-bridge', { product: 'bridge', height: 760 })
riddle.mount('#riddle-market', { product: 'marketplace', height: 560 })
riddle.mount('#riddle-login', { product: 'login', height: 420 })
riddle.mount('#riddle-create', { product: 'create', height: 480 })
riddle.mount('#riddle-buy', { product: 'buy', height: 280 })
riddle.mount('#riddle-custom', { product: 'custom', height: 640 })
</script>