> ## 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.

```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 }
    ]
  }'
```

> [card] [getTransactionsForAddress guide](https://www.helius.dev/docs/rpc/gettransactionsforaddress.md)
>
> Filters, pagination, response format, and best practices.

> [card] [Indexing guide](https://www.helius.dev/docs/rpc/how-to-index-solana-data.md)
>
> Build, backfill, and keep a Solana index up to date.

## 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.

```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"]
  }'
```

> [card] [getTransfersByAddress guide](https://www.helius.dev/docs/rpc/gettransfersbyaddress.md)
>
> Transfer types, filters, reconciliation, and response format.

> [card] [getTransfersByAddress reference](https://www.helius.dev/docs/api-reference/rpc/http/gettransfersbyaddress.md)
>
> Full parameters and response schema.

## 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.

```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
      }
    }
  }'
```

> [card] [DAS API overview](https://www.helius.dev/docs/das-api.md)
>
> All asset methods, special asset types, and best practices.

> [card] [getAssetsByOwner reference](https://www.helius.dev/docs/api-reference/das/getassetsbyowner.md)
>
> Full parameters and response schema.

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

The [Wallet API](https://www.helius.dev/docs/wallet-api/overview.md) 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.

```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"
```

> [card] [Wallet API overview](https://www.helius.dev/docs/wallet-api/overview.md)
>
> All wallet endpoints, authentication, and units.

> [card] [Wallet Balances reference](https://www.helius.dev/docs/api-reference/wallet-api/balances.md)
>
> Query parameters and full response schema.

## Next steps

> [card] [Getting Data overview](https://www.helius.dev/docs/getting-data.md)
>
> Compare every data API and choose the right one for your use case.

> [card] [API Reference](https://www.helius.dev/docs/api-reference.md)
>
> Complete method and endpoint documentation.

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


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.