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

# Quickstart

### Get Your API Key

<Card title="Create API Key" icon="key" href="/paymaster-&-bundler/how-to-guides/create-a-api-key">
  Get started by creating an API key from the Gelato App
</Card>

### Example for sponsored UserOperation using Gelato Account

<Steps>
  <Step title="Create Account">
    Set up the owner wallet and create a Gelato smart account:

    ```typescript theme={null}
    import { createGelatoBundlerClient, toGelatoSmartAccount } from "@gelatocloud/gasless";
    import { createPublicClient, http, type Hex } from "viem";
    import { generatePrivateKey, privateKeyToAccount } from "viem/accounts";
    import { baseSepolia } from "viem/chains";

    const owner = privateKeyToAccount((process.env.PRIVATE_KEY ?? generatePrivateKey()) as Hex);

    const client = createPublicClient({
      chain: baseSepolia,
      transport: http()
    });

    const account = await toGelatoSmartAccount({
      client,
      owner
    });
    ```
  </Step>

  <Step title="Create Bundler Client">
    Initialize the Gelato bundler client with your account and payment method:

    ```typescript theme={null}
    const bundler = await createGelatoBundlerClient({
      account,
      apiKey: process.env.GELATO_API_KEY,
      client,
      pollingInterval: 100
    });
    ```
  </Step>

  <Step title="Send UserOperation">
    Send a UserOperation and wait for the transaction receipt:

    ```typescript theme={null}
    const hash = await bundler.sendUserOperation({
      calls: [
        {
          data: '0xd09de08a',
          to: '0xE27C1359cf02B49acC6474311Bd79d1f10b1f8De'
        }
      ]
    });

    console.log(`User operation hash: ${hash}`);

    const { receipt } = await bundler.waitForUserOperationReceipt({ hash });
    console.log(`Transaction hash: ${receipt.transactionHash}`);
    ```
  </Step>
</Steps>
