Evaluate
Developers
Try the public demo, read the OpenAPI contract, and verify a settlement, without an issuer key. About ten minutes.
Evaluate
Try the public demo, read the OpenAPI contract, and verify a settlement, without an issuer key. About ten minutes.
No issuer key
Call the proxy demo on the API host. An unpaid GET returns HTTP 402 with the payment challenge headers. You do not unlock /app for this path.
Demo endpoint
Absolute URL on the API host. Expect 402, header PAYMENT-REQUIRED, and SLUZEN-CALL-ID.
https://api.sluzen.network/api/v1/investor-demo
curl -sI "https://api.sluzen.network/api/v1/investor-demo" | head # expect 402; inspect PAYMENT-REQUIRED, SLUZEN-CALL-ID
Trial kit
One command against the public demo. No issuer key. check spends 0 XRP and proves the 402 contract. pay spends the demo route price plus the ledger fee, then verifies the Payment on your node.
npx --package=@sluzen/sdk sluzen-handshake check # optional: npx --package=@sluzen/sdk sluzen-handshake pay # pay spends XRP; needs XRPL_NODE + wallet seed locally
Wire protocol
After the unpaid curl: decode PAYMENT-REQUIRED, sign with AgentClient, retry with PAYMENT-SIGNATURE, then read PAYMENT-RESPONSE and a stable SLUZEN-CALL-ID. Distinguish challenge 402 (has the header) from settle-fail 402 (no header).
1. Unpaid → 402 + PAYMENT-REQUIRED + SLUZEN-CALL-ID. 2. Decode → amount, destination, nonce, expiration. 3. Sign → memo sluzen/challenge-nonce. 4. Paid retry → 200 + PAYMENT-RESPONSE.
Paid path
Use @sluzen/sdk AgentClient against the same route, or run the operator demo from the monorepo. After settle, optional verifyBuyerPayment checks the Payment on your XRPL_NODE (does not trust the seller). Seeds stay on your machine. Never paste them into sluzen.network.
# monorepo, after env is set (names only; see docs/LIVE_DEMO.md) # SLUZEN_API_URL DEMO_CLIENT_SEED XRPL_NODE SEED_RECEIVE_ADDRESS npm run demo
Contract
Same public rail contract as the repo, served on this origin.
Evidence
Proof shows one allowlisted settlement with a full on-chain hash and callId. Live shows aggregate counts with redacted routes.
Published schemes
Exact XRP Payment (default), opt-in XRPL Payment Channels (XRP only), allowlisted RLUSD IOU on XRPL, and canonical USDC on Base. Prepaid platform take is always XRP drops. AgentClient accepts optional machinePolicy spend caps in XRP drops (fail-closed). The public handshake demo above stays on XRP.
Scope
| Topic | Detail |
|---|---|
| Supported | XRPL mainnet (`xrpl:1`) or testnet (`xrpl:0`) as CAIP-2 on /live. Native XRP drops (`scheme: exact`) and opt-in Payment Channels XRP (`scheme: paychan`) are published on `GET /facilitator/supported`. Allowlisted RLUSD IOU (§2.4) and canonical Base USDC on `eip155:8453` / `eip155:84532` (§2.5) are per-route product Amounts (not listed on `/facilitator/supported`). x402-style headers. |
| Not supported | Solana USDC, nano, Stellar, Stacks, arbitrary ERC-20s, IOUs outside the closed RLUSD allowlist, Operator gas wallet / EIP-3009 / Permit2, and a multi-rail drop-in. Sluzen is not the payee of the request price. |
| Notes | Default product Amount is XRP drops. Prepaid platform take (0.8% on mainnet) stays in XRP drops for every product currency. Sluzen does not convert assets for the caller and does not manage DEX auto-bridges. Discovery is an opt-in announcement on proxy routes only, and a route appears on the public list only after a settled payment or a fresh HTTP 402 probe. |
Issuers
Issuer keys are provisioned out-of-band. If you already have a key, unlock the console and set a price.
Issuers: export events by callId with GET /admin/calls (Bearer key, out of band). Proxy attempts include delivery; facilitator settle does not.