Ads
Ad inventory is served by Riddle Dev. Hub and Wallet never invent third-party sponsors.
Endpoint
GET https://dev.riddlewallet.com/api/ads/active?slot=ADS_BASE defaults to https://dev.riddlewallet.com (URLS.dev). Apps may override with NEXT_PUBLIC_ADS_API_BASE.
| Query | Behavior |
|---|---|
| (omitted) | Inventory list — every registered slot |
slot={id} | Single creative (house fill if no paid booking) |
CORS: GET, OPTIONS; Access-Control-Allow-Origin: *.
Slot ids (examples)
Wallet: wallet.home.banner, wallet.swap.banner, wallet.send.banner, wallet.nft.banner, …
Dev / other apps use their own {app}.{surface}.{placement} ids. Unknown slots return 400 UNKNOWN_SLOT with the known list.
Response (slot query)
{
"ok": true,
"slot": "wallet.home.banner",
"active": true,
"source": "house",
"creative": {
"id": "ad-wallet.home.banner",
"title": "…",
"imageUrl": "https://…",
"clickUrl": "https://…",
"href": "https://…",
"url": "https://…"
}
}House creatives are first-party suite promos (label Riddle Suite / Featured, never fake “Sponsored”). Paid auctions bid in XRP on Dev.
Rules
- Do not block wallet unlock / sign on a slow ads fetch.
- Do not mix ads click URLs with SSO
return=without allow-listing. - Creatives must not promise financial returns. See brand.