Quickstart
Get from zero to a working signing flow in under 5 minutes.
Prerequisites
- Node.js 18+
- An XRPL Request account at xrplre.quest
Create a project
Sign in at xrplre.quest/dashboard and click New Project. Give it a name. Your API key is shown once — copy it now.
Your key looks like: xrplr_live_abc123...
Install the SDK
npm install @xrplrequest/sdkCreate your first payload
import { XRPLRequest } from '@xrplrequest/sdk';
const client = new XRPLRequest({ apiKey: 'xrplr_live_...' });
const payload = await client.payloads.create({
type: 'signAndSubmit',
transaction: {
TransactionType: 'Payment',
Destination: 'rN7n7otQDd6FczFgLdlqtyMVrn3HMfXoQT',
Amount: '1000000', // 1 XRP in drops
},
options: {
expiresIn: 300, // 5 minutes
},
});
console.log(payload.signingUrl);
// https://xrplre.quest/sign/550e8400-e29b-41d4-a716-446655440000Share the signing URL
Send payload.signingUrl to the user however your platform works — Discord message, Telegram reply, web redirect, etc. The user opens the URL, picks their wallet, and approves.
Get the result
const result = await client.payloads.poll(payload.uuid, {
timeout: 300_000, // wait up to 5 min
interval: 2_000, // check every 2s
});
if (result.status === 'signed') {
console.log('Signed! Tx hash:', result.txHash);
console.log('Signer:', result.signerAddress);
} else if (result.status === 'rejected') {
console.log('User rejected the transaction.');
} else if (result.status === 'expired') {
console.log('Request expired before signing.');
}What’s next?
- SDK reference — all methods and options
- API reference — raw HTTP if you prefer not to use the SDK
- Webhook guide — delivery, retries, and signature verification
- Discord bot example — full bot with slash commands
💡
The signing URL works in any browser on any device. Users don’t need to install anything unless they pick an extension wallet.