> ## Documentation Index
> Fetch the complete documentation index at: https://docs.altude.so/llms.txt
> Use this file to discover all available pages before exploring further.

# Privy

> Pair Privy's embedded wallet platform with Altude Gas Station to deliver gasless Solana transactions.

[Privy](https://privy.io) provides embedded wallets with email, SMS, and social authentication. Users sign in and get a wallet provisioned automatically — no browser extension, no seed phrase. Gas Station handles fee sponsorship and relay on the other side of the sign: the user's wallet signs locally, and Gas Station submits the transaction without charging gas.

***

## How the integration works

Privy and Gas Station operate on separate layers:

| What Privy handles                           | What Gas Station handles                 |
| -------------------------------------------- | ---------------------------------------- |
| User authentication (email, SMS, social)     | Fetching the sponsored fee payer address |
| Embedded wallet provisioning                 | Validating the signed transaction        |
| Prompting the user to sign a transaction     | Relaying the transaction to Solana       |
| Returning the signed transaction to your app | Sponsoring the Solana transaction fee    |

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.

```mermaid theme={null}
%%{init: {'theme': 'base', 'themeVariables': {'fontFamily': 'Inter, ui-sans-serif, sans-serif', 'fontSize': '13px', 'primaryColor': '#0d2233', 'primaryTextColor': '#e2e8f0', 'primaryBorderColor': '#3DBFF2', 'lineColor': '#3DBFF2', 'edgeLabelBackground': 'transparent', 'clusterBkg': 'transparent'}}}%%
flowchart LR
    A([Your App]) -->|sign| B([Gas Station API])
    B -->|relay + fee| C([Solana Network])

    style A fill:#0d2233,color:#e2e8f0,stroke:#3DBFF2,stroke-width:1.5px
    style B fill:#3DBFF2,color:#071922,stroke:#049DD9,stroke-width:1.5px
    style C fill:#049DD9,color:#ffffff,stroke:#037dac,stroke-width:1.5px
    linkStyle default stroke:#3DBFF2,stroke-width:1.5px,fill:none
```

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:

<Card title="altude-privy-gas-station-demo" icon="github" href="https://github.com/AltudePlatform/altude-privy-gas-station-demo">
  Clone the demo to run a complete Privy + Gas Station integration on Solana devnet.
</Card>

The demo covers:

* **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.createAccount` with Altude as fee payer
* **Gasless relay** — Signed transactions submitted through `POST /api/Account/create` and `POST /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](https://dashboard.privy.io). Create an app and copy the App ID.
* **Altude API key** — from [app.altude.so](https://app.altude.so). Create an application and copy the devnet key.

### 2. Clone and configure

```bash theme={null}
git clone https://github.com/AltudePlatform/altude-privy-gas-station-demo.git
cd altude-privy-gas-station-demo
npm install
cp .env.example .env
```

Open `.env` and set your credentials:

```bash theme={null}
# Altude — https://app.altude.so
VITE_ALTUDE_API_KEY_DEVNET=your-devnet-key-here

# Privy — https://dashboard.privy.io
VITE_PRIVY_APP_ID=your-app-id-here
```

### 3. Run

```bash theme={null}
npm run dev
```

Open [http://localhost:5000](http://localhost:5000). Sign in with Privy, create a transaction, and watch Gas Station relay it without the user paying gas.

***

## Adapter pattern

The demo isolates the Privy integration in `src/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](/integrations/overview#integration-patterns).

***

## Related

<CardGroup cols={2}>
  <Card title="Integration overview" icon="book" href="/integrations/overview">
    Architecture, custody model, and how Gas Station fits alongside any wallet provider.
  </Card>

  <Card title="Gas Station API reference" icon="code" href="/api-reference/introduction">
    Full reference for `/api/Account/create`, `/api/Transaction/send`, and other endpoints.
  </Card>
</CardGroup>
