npm package
@riddlewallet/partners
Production SDK for third-party sites. One package: @riddlewallet/partners. Browser inject.js / riddlepartners.js are generated from it. Suite apps import the same helpers via @riddle/suite-connect. Platform fees use the suite free-tier ladder (swap 0.85%, bridge 1.20%, cafe 1%). Mainnet only.
Putting widgets on a site (origins, iframe, login/sign): Setup each app. inject.js is the same generated file as riddlepartners.js (legacy URL).
npm install @riddlewallet/partners # same package as a tarball (works before the npm name is live) npm install https://partners.riddlewallet.com/sdk/riddlepartners-sdk.tgz
Bundler
import { createClient } from '@riddlewallet/partners'
const riddle = createClient({ partner: 'acme' })
riddle.mount('#header', { product: 'header' })
riddle.mount('#swap', { product: 'swap' })
riddle.mount('#bridge', { product: 'bridge' })
riddle.mount('#cafe', { product: 'marketplace' })
riddle.mount('#login', { product: 'login' })
riddle.mount('#create', { product: 'create' })
riddle.mount('#buy', { product: 'buy', to: 'r…', amount: '1', chain: 'xrpl' })
riddle.connectWallet()
riddle.createWallet()Live demo partner riddle-demo: demo.riddlewallet.com
REST (API key)
Create a live key in Dashboard → API keys. Never put live keys in public frontend bundles.
const riddle = createClient({ partner: 'acme', apiKey: process.env.RIDDLE_PARTNER_KEY })
await riddle.api.swapPrepare({ chain: 'xrpl', amountMinor: '1000000' })
const session = await riddle.api.createSignSession({ chain: 'xrpl', txjson })
riddle.mount('#sign', { partner: 'acme', product: 'sign', session: session.id, et: session.embedToken })Fees
See fee model and dashboard Fee control. Surcharge is 0–50 bps.
riddle.fee({ product: 'swap', amountMinor: '1000000', tier: 'starter', partnerSurchargeBps: 10 })Riddle Wallet is never an iframe. Login and sign open a popup to wallet.riddlewallet.com. Allowlist your site origin in the dashboard.