How the integration works
Turnkey and Gas Station operate on separate layers:
Your app builds a transaction using the fee payer returned by
GET /api/transaction/config. Turnkey signs it. Gas Station relays it. The user never pays gas.
Turnkey 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 Turnkey demo is a working React application that walks through the full gasless transaction flow:altude-turnkey-gas-station-demo
Clone the demo to run a complete Turnkey + Gas Station integration on Solana devnet.
- Authentication — Turnkey’s built-in modal handles passkeys, email OTP, SMS, and social login
- 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:- Turnkey Organization ID and Auth Proxy Config ID — from app.turnkey.com. Follow the Turnkey Getting Started guide to set up your organization and auth proxy.
- 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 Turnkey integration insrc/wallet/turnkey.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.