How the integration works
Privy and Gas Station operate on separate layers:
Your app builds a transaction using the fee payer returned by
GET /api/transaction/config. Privy signs it. Gas Station relays it. The user never pays gas.
Privy loads as an iframe inside your app and handles authentication and signing in that context. From the relay perspective, your app is the origin.
Demo
The Privy demo is a working React application that walks through the full gasless transaction flow:altude-privy-gas-station-demo
Clone the demo to run a complete Privy + Gas Station integration on Solana devnet.
- Authentication — Privy handles email, SMS, and social login with its embedded auth modal
- Wallet provisioning — Users get a Solana wallet automatically on first sign-in
- Transaction building —
SystemProgram.createAccountwith Altude as fee payer - Gasless relay — Signed transactions submitted through
POST /api/Account/createandPOST /api/Transaction/send - Transaction history — Persistent history with Solscan explorer links
- Mock fallback — Runs without an Altude API key, simulating the full flow
Quick setup
1. Get your credentials
You need two things before running the demo:- Privy App ID — from dashboard.privy.io. Create an app and copy the App ID.
- Altude API key — from app.altude.so. Create an application and copy the devnet key.
2. Clone and configure
.env and set your credentials:
3. Run
Adapter pattern
The demo isolates the Privy integration insrc/wallet/privy.tsx. The rest of the app — including Gas Station relay — is provider-agnostic. To see how the adapter interface works, or to adapt this for a different provider, see the integration overview.
Related
Integration overview
Architecture, custody model, and how Gas Station fits alongside any wallet provider.
Gas Station API reference
Full reference for
/api/Account/create, /api/Transaction/send, and other endpoints.