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

# Getting Data Quickstart

> Make your first Solana data query in minutes. Copy-paste examples for getTransactionsForAddress, getTransfersByAddress, the DAS API, and the Wallet API.

## Quick setup

Every example below needs only your Helius API key from [dashboard.helius.dev](https://dashboard.helius.dev). Replace `YOUR_API_KEY`, then pick the path that matches what you're fetching:

| You want                                   | Use this                         | Returns                                        |
| ------------------------------------------ | -------------------------------- | ---------------------------------------------- |
| An address's full transaction history      | **getTransactionsForAddress**    | Decoded transactions for one address           |
| An address's full transfers history        | **getTransfersByAddress**        | Token and native SOL transfers for one address |
| Tokens, NFTs, and assets owned by a wallet | **DAS API** — `getAssetsByOwner` | Assets with metadata, ownership, and balances  |
| Wallet balances with USD values over REST  | **Wallet API** — `/balances`     | Token and NFT balances with USD pricing        |

## Option 1: Backfill transaction history (getTransactionsForAddress)

`getTransactionsForAddress` returns the full, decoded transaction history for an address in a single method — the fastest way to backfill data for indexing. Pass the address first, then an options object with optional filters.

<CodeGroup>
  ```typescript TypeScript theme={"system"}
  const response = await fetch(`https://mainnet.helius-rpc.com/?api-key=YOUR_API_KEY`, {
    method: 'POST',
    headers: { 'Content-Type': 'application/json' },
    body: JSON.stringify({
      jsonrpc: '2.0',
      id: 1,
      method: 'getTransactionsForAddress',
      params: [
        '86xCnPeV69n6t3DnyGvkKobf9FdN2H9oiVDdaMpo2MMY',
        {
          transactionDetails: 'full',
          sortOrder: 'desc',
          limit: 100,
        },
      ],
    }),
  });

  const { result } = await response.json();
  console.log(`Fetched ${result.data.length} transactions`);
  ```

  ```python Python theme={"system"}
  import requests

  url = "https://mainnet.helius-rpc.com/?api-key=YOUR_API_KEY"
  payload = {
      "jsonrpc": "2.0",
      "id": 1,
      "method": "getTransactionsForAddress",
      "params": [
          "86xCnPeV69n6t3DnyGvkKobf9FdN2H9oiVDdaMpo2MMY",
          {"transactionDetails": "full", "sortOrder": "desc", "limit": 100},
      ],
  }
  result = requests.post(url, json=payload).json()["result"]
  print(f"Fetched {len(result['data'])} transactions")
  ```

  ```bash cURL theme={"system"}
  curl https://mainnet.helius-rpc.com/?api-key=YOUR_API_KEY \
    -X POST \
    -H "Content-Type: application/json" \
    -d '{
      "jsonrpc": "2.0",
      "id": 1,
      "method": "getTransactionsForAddress",
      "params": [
        "86xCnPeV69n6t3DnyGvkKobf9FdN2H9oiVDdaMpo2MMY",
        { "transactionDetails": "full", "sortOrder": "desc", "limit": 100 }
      ]
    }'
  ```
</CodeGroup>

<CardGroup cols={2}>
  <Card title="getTransactionsForAddress guide" icon="clock-rotate-left" href="/rpc/gettransactionsforaddress">
    Filters, pagination, response format, and best practices.
  </Card>

  <Card title="Indexing guide" icon="layer-group" href="/rpc/how-to-index-solana-data">
    Build, backfill, and keep a Solana index up to date.
  </Card>
</CardGroup>

## Option 2: Get transfer history (getTransfersByAddress)

`getTransfersByAddress` returns parsed token and native SOL transfer history for an address — at the transfer level rather than the transaction level, ready for reconciliation. Pass the address; add an options object for filters.

<CodeGroup>
  ```typescript TypeScript theme={"system"}
  const response = await fetch(`https://mainnet.helius-rpc.com/?api-key=YOUR_API_KEY`, {
    method: 'POST',
    headers: { 'Content-Type': 'application/json' },
    body: JSON.stringify({
      jsonrpc: '2.0',
      id: 1,
      method: 'getTransfersByAddress',
      params: ['86xCnPeV69n6t3DnyGvkKobf9FdN2H9oiVDdaMpo2MMY'],
    }),
  });

  const { result } = await response.json();
  console.log(`Fetched ${result.data.length} transfers`);
  ```

  ```python Python theme={"system"}
  import requests

  url = "https://mainnet.helius-rpc.com/?api-key=YOUR_API_KEY"
  payload = {
      "jsonrpc": "2.0",
      "id": 1,
      "method": "getTransfersByAddress",
      "params": ["86xCnPeV69n6t3DnyGvkKobf9FdN2H9oiVDdaMpo2MMY"],
  }
  result = requests.post(url, json=payload).json()["result"]
  print(f"Fetched {len(result['data'])} transfers")
  ```

  ```bash cURL theme={"system"}
  curl https://mainnet.helius-rpc.com/?api-key=YOUR_API_KEY \
    -X POST \
    -H "Content-Type: application/json" \
    -d '{
      "jsonrpc": "2.0",
      "id": 1,
      "method": "getTransfersByAddress",
      "params": ["86xCnPeV69n6t3DnyGvkKobf9FdN2H9oiVDdaMpo2MMY"]
    }'
  ```
</CodeGroup>

<CardGroup cols={2}>
  <Card title="getTransfersByAddress guide" icon="arrow-right-arrow-left" href="/rpc/gettransfersbyaddress">
    Transfer types, filters, reconciliation, and response format.
  </Card>

  <Card title="getTransfersByAddress reference" icon="code" href="/api-reference/rpc/http/gettransfersbyaddress">
    Full parameters and response schema.
  </Card>
</CardGroup>

## Option 3: Get a wallet's assets (DAS API)

The DAS API returns the NFTs, fungible tokens, and compressed assets a wallet owns in a single call — the most common starting point for wallets, portfolio views, and analytics.

<CodeGroup>
  ```typescript TypeScript theme={"system"}
  const response = await fetch(`https://mainnet.helius-rpc.com/?api-key=YOUR_API_KEY`, {
    method: 'POST',
    headers: { 'Content-Type': 'application/json' },
    body: JSON.stringify({
      jsonrpc: '2.0',
      id: '1',
      method: 'getAssetsByOwner',
      params: {
        ownerAddress: '86xCnPeV69n6t3DnyGvkKobf9FdN2H9oiVDdaMpo2MMY',
        page: 1,
        limit: 1000,
        options: {
          showFungible: true,
          showNativeBalance: true,
        },
      },
    }),
  });

  const { result } = await response.json();
  console.log(`Found ${result.total} assets`);
  ```

  ```python Python theme={"system"}
  import requests

  url = "https://mainnet.helius-rpc.com/?api-key=YOUR_API_KEY"
  payload = {
      "jsonrpc": "2.0",
      "id": "1",
      "method": "getAssetsByOwner",
      "params": {
          "ownerAddress": "86xCnPeV69n6t3DnyGvkKobf9FdN2H9oiVDdaMpo2MMY",
          "page": 1,
          "limit": 1000,
          "options": {
              "showFungible": True,
              "showNativeBalance": True,
          },
      },
  }
  result = requests.post(url, json=payload).json()["result"]
  print(f"Found {result['total']} assets")
  ```

  ```bash cURL theme={"system"}
  curl https://mainnet.helius-rpc.com/?api-key=YOUR_API_KEY \
    -X POST \
    -H "Content-Type: application/json" \
    -d '{
      "jsonrpc": "2.0",
      "id": "1",
      "method": "getAssetsByOwner",
      "params": {
        "ownerAddress": "86xCnPeV69n6t3DnyGvkKobf9FdN2H9oiVDdaMpo2MMY",
        "page": 1,
        "limit": 1000,
        "options": {
          "showFungible": true,
          "showNativeBalance": true
        }
      }
    }'
  ```
</CodeGroup>

<CardGroup cols={2}>
  <Card title="DAS API overview" icon="gem" href="/das-api">
    All asset methods, special asset types, and best practices.
  </Card>

  <Card title="getAssetsByOwner reference" icon="code" href="/api-reference/das/getassetsbyowner">
    Full parameters and response schema.
  </Card>
</CardGroup>

## Option 4: Get wallet balances over REST (Wallet API)

The [Wallet API](/wallet-api/overview) is a high-level REST API. The balances endpoint returns a wallet's token and NFT holdings with USD values — no JSON-RPC envelope required.

<CodeGroup>
  ```typescript TypeScript theme={"system"}
  const address = '86xCnPeV69n6t3DnyGvkKobf9FdN2H9oiVDdaMpo2MMY';
  const response = await fetch(
    `https://api.helius.xyz/v1/wallet/${address}/balances?api-key=YOUR_API_KEY`,
  );

  const data = await response.json();
  console.log(`Current page value: $${data.totalUsdValue}`);
  ```

  ```python Python theme={"system"}
  import requests

  address = "86xCnPeV69n6t3DnyGvkKobf9FdN2H9oiVDdaMpo2MMY"
  url = f"https://api.helius.xyz/v1/wallet/{address}/balances"
  data = requests.get(url, headers={"X-Api-Key": "YOUR_API_KEY"}).json()
  print(f"Current page value: ${data['totalUsdValue']}")
  ```

  ```bash cURL theme={"system"}
  curl "https://api.helius.xyz/v1/wallet/86xCnPeV69n6t3DnyGvkKobf9FdN2H9oiVDdaMpo2MMY/balances?api-key=YOUR_API_KEY"
  ```
</CodeGroup>

<CardGroup cols={2}>
  <Card title="Wallet API overview" icon="wallet" href="/wallet-api/overview">
    All wallet endpoints, authentication, and units.
  </Card>

  <Card title="Wallet Balances reference" icon="code" href="/api-reference/wallet-api/balances">
    Query parameters and full response schema.
  </Card>
</CardGroup>

## Next steps

<CardGroup cols={2}>
  <Card title="Getting Data overview" icon="database" href="/getting-data">
    Compare every data API and choose the right one for your use case.
  </Card>

  <Card title="API Reference" icon="code" href="/api-reference">
    Complete method and endpoint documentation.
  </Card>
</CardGroup>

**Need help?** Join our [Discord](https://discord.com/invite/6GXdee3gBj) or see the [support docs](/support).
