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

# 快速开始

> 几分钟内上手 Solana Tracker Data API——注册账号、获取 API key、发起代币、钱包与价格查询的第一个请求，并集成示例代码到你的项目。

<Info>
  本指南将帮助你完成对 Solana Tracker Data API 的第一次调用。你将学习如何鉴权、发送请求并处理响应。
</Info>

## 前置条件

开始之前，请确保你已具备：

<Card title="Solana Tracker 账户" icon="user" iconType="duotone" href="https://www.solanatracker.io/account">
  免费注册即可获取 API 密钥。
</Card>

## 第 1 步：获取 API 密钥

创建账户后，从控制台获取 API 密钥。该密钥用于通过 `x-api-key` 请求头对你的请求进行鉴权。

<Steps>
  <Step title="登录控制台">
    访问[你的账户控制台](https://www.solanatracker.io/account)。
  </Step>

  <Step title="进入 API Keys">
    在侧边栏中点击 “API Keys” 区域。
  </Step>

  <Step title="复制你的 API 密钥">
    点击 API 密钥旁的复制按钮。

    <Warning>
      请妥善保管你的 API 密钥，切勿将其提交到公共仓库。
    </Warning>
  </Step>
</Steps>

## 第 2 步：发起第一次 API 调用

我们先使用 `/price` 端点获取 SOL 的当前价格。

<CodeGroup>
  ```bash cURL theme={null}
  curl -X GET "https://data.solanatracker.io/price?token=So11111111111111111111111111111111111111112" \
    -H "x-api-key: YOUR_API_KEY"
  ```

  ```javascript JavaScript theme={null}
  const apiKey = 'YOUR_API_KEY';
  const solMint = 'So11111111111111111111111111111111111111112';

  fetch(`https://data.solanatracker.io/price?token=${solMint}`, {
    headers: {
      'x-api-key': apiKey
    }
  })
  .then(response => response.json())
  .then(data => console.log('SOL Price:', data.price));
  ```

  ```python Python theme={null}
  import requests

  api_key = 'YOUR_API_KEY'
  sol_mint = 'So11111111111111111111111111111111111111112'

  response = requests.get(
      f'https://data.solanatracker.io/price?token={sol_mint}',
      headers={
          'x-api-key': api_key
      }
  )

  data = response.json()
  print(f"SOL Price: ${data['price']}")
  ```
</CodeGroup>

<ResponseExample>
  ```json Success Response theme={null}
  {
    "price": 175.42,
    "priceQuote": 175.42,
    "liquidity": 14187570.69,
    "marketCap": 99213713748.19,
    "lastUpdated": 1760274132867
  }
  ```
</ResponseExample>

## 第 3 步：连接到 RPC 节点

Solana Tracker 同时提供 RPC 节点，可直接发起区块链调用。RPC 使用的 URL 与鉴权方式与 Data API 不同：

| 产品       | 用途                        | 鉴权方式                 |
| -------- | ------------------------- | -------------------- |
| Data API | 代币价格、钱包、交易和分析数据           | `x-api-key` 请求头      |
| RPC      | 直接调用 Solana 方法，如余额查询和账户更新 | RPC URL 中的 `api_key` |

<CodeGroup>
  ```javascript @solana/web3.js theme={null}
  import { Connection, PublicKey } from '@solana/web3.js';

  const connection = new Connection(
    'https://rpc-mainnet.solanatracker.io?api_key=YOUR_API_KEY',
    {
      commitment: 'confirmed',
      wsEndpoint: 'wss://rpc-mainnet.solanatracker.io?api_key=YOUR_API_KEY'
    }
  );

  // 获取账户余额
  const publicKey = new PublicKey('YOUR_WALLET_ADDRESS');
  const balance = await connection.getBalance(publicKey);
  console.log(`Balance: ${balance / 1e9} SOL`);

  // 订阅账户变更
  connection.onAccountChange(
    publicKey,
    (accountInfo) => {
      console.log('Account updated:', accountInfo);
    }
  );
  ```

  ```python solana.py theme={null}
  from solana.rpc.api import Client
  from solders.pubkey import Pubkey

  # 连接到 RPC
  client = Client("https://rpc-mainnet.solanatracker.io?api_key=YOUR_API_KEY")

  # 获取账户余额
  pubkey = Pubkey.from_string("YOUR_WALLET_ADDRESS")
  response = client.get_balance(pubkey)
  balance = response.value / 1e9
  print(f"Balance: {balance} SOL")

  # 获取最近的 blockhash
  blockhash = client.get_latest_blockhash()
  print(f"Recent blockhash: {blockhash.value.blockhash}")
  ```
</CodeGroup>

## 第 4 步：探索常见用例

<AccordionGroup>
  <Accordion title="跟踪代币价格" icon="chart-line" iconType="duotone">
    使用 `/price` 端点监控任何 SPL 代币的实时价格变化。

    ```javascript theme={null}
    const apiKey = 'YOUR_API_KEY';

    const trackPrice = async (mint) => {
      const response = await fetch(
        `https://data.solanatracker.io/price?token=${mint}`,
        { headers: { 'x-api-key': apiKey } }
      );
      
      const data = await response.json();
      console.log(`Price: $${data.price}`);
    };

    // 每 5 秒查询一次价格
    setInterval(() => trackPrice('YOUR_TOKEN_MINT'), 5000);
    ```
  </Accordion>

  <Accordion title="发现新代币" icon="water" iconType="duotone">
    使用 `/tokens/latest` 端点发现新创建的代币。返回结果按最新代币优先排序。

    ```javascript theme={null}
    const apiKey = 'YOUR_API_KEY';

    const findNewTokens = async () => {
      const response = await fetch(
        'https://data.solanatracker.io/tokens/latest',
        { headers: { 'x-api-key': apiKey } }
      );
      
      const result = await response.json();
      result.data.forEach(token => {
        console.log(`New token: ${token.token.symbol} on ${token.pools[0].market}`);
        console.log(`Liquidity: $${token.pools[0].liquidity.usd}`);
      });
    };
    ```
  </Accordion>

  <Accordion title="监控钱包持仓" icon="wallet" iconType="duotone">
    跟踪任意钱包的代币持仓和投资组合总值。

    ```javascript theme={null}
    const apiKey = 'YOUR_API_KEY';

    const getWalletTokens = async (walletAddress) => {
      const response = await fetch(
        `https://data.solanatracker.io/wallet/${walletAddress}`,
        { headers: { 'x-api-key': apiKey } }
      );
      
      const portfolio = await response.json();
      console.log(`Total Portfolio Value: $${portfolio.total}`);
      portfolio.tokens.forEach(holding => {
        const tokenInfo = holding.token;
        console.log(`${tokenInfo.symbol}: ${holding.balance} ($${holding.value.toFixed(2)})`);
      });
    };
    ```
  </Accordion>
</AccordionGroup>

## 错误处理

请始终在你的应用中实现完善的错误处理。

<CodeGroup>
  ```javascript JavaScript theme={null}
  const apiKey = 'YOUR_API_KEY';

  try {
    const response = await fetch('https://data.solanatracker.io/price?token=INVALID_TOKEN_ADDRESS', {
      headers: { 'x-api-key': apiKey }
    });

    if (!response.ok) {
      const error = await response.json();
      console.error(`API Error: ${error.message || response.statusText}`);

      // 处理具体的错误码
      switch (response.status) {
        case 401:
          console.error('Invalid API key');
          break;
        case 429:
          console.error('Rate limit exceeded');
          break;
        case 500:
          console.error('Server error - please retry');
          break;
      }

    } else {
      const data = await response.json();
      // 处理成功的响应
    }
  } catch (error) {
    console.error('Network error:', error);
  }
  ```

  ```python Python theme={null}
  import requests
  from time import sleep

  def api_call_with_retry(url, headers, max_retries=3):
      for attempt in range(max_retries):
          try:
              response = requests.get(url, headers=headers)
              
              if response.status_code == 200:
                  return response.json()
              elif response.status_code == 429:
                  # 触发限流——等待后重试
                  print(f"Rate limit exceeded. Retrying in {2 ** attempt}s...")
                  sleep(2 ** attempt)  # 指数退避
              elif response.status_code == 401:
                  raise Exception("Invalid API key")
              else:
                  print(f"Error {response.status_code}: {response.text}")
                  break
                  
          except requests.RequestException as e:
              print(f"Network error: {e}")
              if attempt < max_retries - 1:
                  sleep(1)
              else:
                  raise
      
      return None
  ```
</CodeGroup>

<Note>
  **需要帮助？** 欢迎加入我们的 [Discord 社区](https://discord.gg/JH2e9rR9fc) 或发送邮件至 [support@solanatracker.io](mailto:support@solanatracker.io)。
</Note>
