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

# 认证

> 了解如何安全高效地认证您的 Helius API 请求

Helius API 使用 API 密钥进行请求认证。每个 API 请求必须包含您的 API 密钥以验证您的身份和权限。

<Warning>
  您的 API 密钥是敏感信息，可以访问您的 Helius 账户。切勿在客户端代码、公共代码库或浏览器可访问的区域中暴露它。
</Warning>

## 入门指南

### 1. 创建您的 API 密钥

<Steps>
  <Step title="注册或登录">
    在 [Helius 控制台](https://dashboard.helius.dev)上创建一个账户或登录到已有账户。
  </Step>

  <Step title="导航到 API 密钥">
    转到控制台侧边栏中的 **API 密钥** 部分。
  </Step>

  <Step title="生成新密钥">
    点击 **创建新 API 密钥** 并为您的项目提供一个描述性名称（例如，“生产应用程序”，“开发环境”）。
  </Step>

  <Step title="复制并安全存储您的密钥">
    立即复制您的 API 密钥并安全存储。一旦导航离开，您将无法再次查看它。
  </Step>
</Steps>

### 2. 使用您的 API 密钥

在所有请求中包含您的 API 密钥作为查询参数：

<CodeGroup>
  ```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":"getAccountInfo","params":["ACCOUNT_ADDRESS"]}'
  ```

  ```javascript JavaScript theme={"system"}
  const url = `https://mainnet.helius-rpc.com/?api-key=${YOUR_API_KEY}`;
  const response = await fetch(url, {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json',
    },
    body: JSON.stringify({
      jsonrpc: '2.0',
      id: 1,
      method: 'getAccountInfo',
      params: ['ACCOUNT_ADDRESS']
    })
  });
  ```

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

  url = f"https://mainnet.helius-rpc.com/?api-key={YOUR_API_KEY}"
  payload = {
      "jsonrpc": "2.0",
      "id": 1,
      "method": "getAccountInfo",
      "params": ["ACCOUNT_ADDRESS"]
  }
  response = requests.post(url, json=payload)
  ```
</CodeGroup>

## 入门指南（针对代理）

代理可以通过编程方式注册Helius账户、创建项目，并使用[Helius CLI](/zh/agents/cli)生成API密钥。

完整说明请参阅：[https://dashboard.helius.dev/agents.md](https://dashboard.helius.dev/agents.md)

### 安装 Helius CLI

<CodeGroup>
  ```bash theme={"system"}
  npm install -g helius-cli
  ```
</CodeGroup>

### 生成密钥对

<CodeGroup>
  ```bash theme={"system"}
  helius keygen
  ```
</CodeGroup>

### 为生成的钱包提供资金（仅限自动支付）

如果通过托管支付链接支付，请跳过此步骤（`--pay` / `--resume`）。对于自动支付，请向步骤2中提供的钱包地址发送1 USDC和0.001 SOL。

### 注册并获取API密钥

<CodeGroup>
  ```bash theme={"system"}
  helius signup --email you@example.com --first-name Jane --last-name Doe --json
  ```
</CodeGroup>

## 安全最佳实践

<CardGroup cols={2}>
  <Card title="环境变量" icon="shield-check">
    将您的API密钥存储在环境变量中，而不是源代码中。

    ```bash theme={"system"}
    export HELIUS_API_KEY="YOUR_API_KEY"
    ```
  </Card>

  <Card title="IP限制" icon="globe">
    在仪表板中为您的API密钥设置IP限制，以限制特定IP地址或范围的访问。
  </Card>

  <Card title="分开密钥" icon="key">
    为开发、登台和生产环境使用不同的API密钥，以隔离使用并提高安全性。
  </Card>

  <Card title="监控使用情况" icon="chart-line">
    定期检查仪表板中的API使用情况，以检测异常模式或潜在的安全问题。
  </Card>
</CardGroup>

### 密钥管理

<Tabs>
  <Tab title="Node.js">
    ```javascript theme={"system"}
    // Use environment variables
    const apiKey = process.env.HELIUS_API_KEY;

    // Or use a secrets manager
    const { SecretManagerServiceClient } = require('@google-cloud/secret-manager');
    const client = new SecretManagerServiceClient();

    async function getApiKey() {
      const [version] = await client.accessSecretVersion({
        name: 'projects/PROJECT_ID/secrets/helius-api-key/versions/latest',
      });
      return version.payload.data.toString();
    }
    ```
  </Tab>

  <Tab title="Python">
    ```python theme={"system"}
    import os
    from dotenv import load_dotenv

    # Load environment variables
    load_dotenv()
    api_key = os.getenv('HELIUS_API_KEY')

    # Or use AWS Secrets Manager
    import boto3

    def get_secret():
        client = boto3.client('secretsmanager')
        response = client.get_secret_value(SecretId='helius-api-key')
        return response['SecretString']
    ```
  </Tab>

  <Tab title="Docker">
    ```dockerfile theme={"system"}
    # In your Dockerfile
    ENV HELIUS_API_KEY=""

    # Or use Docker secrets
    RUN --mount=type=secret,id=helius_key \
        cat /run/secrets/helius_key > /app/api_key.txt
    ```
  </Tab>
</Tabs>

## 速率限制与使用

<Note>
  速率限制因订阅计划而异。在[Helius Dashboard](https://dashboard.helius.dev)监控您的使用情况，以确保您不超出分配的限制。
</Note>

### 理解速率限制

* **每秒请求数**：根据您的订阅层级
* **每月请求配额**：每个计费周期允许的总请求数
* **突发允许**：短期内高于基本速率限制的峰值

### 处理速率限制

<CodeGroup>
  ```javascript JavaScript theme={"system"}
  async function makeRequest(url, data) {
    try {
      const response = await fetch(url, {
        method: 'POST',
        headers: { 'Content-Type': 'application/json' },
        body: JSON.stringify(data)
      });
      
      if (response.status === 429) {
        const retryAfter = response.headers.get('Retry-After');
        console.log(`Rate limited. Retry after ${retryAfter} seconds`);
        await new Promise(resolve => setTimeout(resolve, retryAfter * 1000));
        return makeRequest(url, data); // Retry
      }
      
      return response.json();
    } catch (error) {
      console.error('Request failed:', error);
      throw error;
    }
  }
  ```

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

  def make_request(url, data):
      try:
          response = requests.post(url, json=data)
          
          if response.status_code == 429:
              retry_after = int(response.headers.get('Retry-After', 60))
              print(f"Rate limited. Waiting {retry_after} seconds...")
              time.sleep(retry_after)
              return make_request(url, data)  # Retry
          
          response.raise_for_status()
          return response.json()
      except requests.exceptions.RequestException as e:
          print(f"Request failed: {e}")
          raise
  ```
</CodeGroup>

## 故障排除

<AccordionGroup>
  <Accordion title="无效API密钥错误">
    **症状**: 401 Unauthorized或“无效API密钥”错误

    **解决方案**:

    * 验证您的API密钥是否正确且未被重新生成
    * 检查您是否将API密钥作为查询参数包含: `?api-key=YOUR_KEY`
    * 确保API密钥中没有多余的空格或字符
    * 确认您的API密钥没有过期或被撤销
  </Accordion>

  <Accordion title="超出速率限制">
    **症状**: 429 Too Many Requests错误

    **解决方案**:

    * 在控制面板中检查您当前的使用情况
    * 在重试逻辑中实施指数退避
    * 考虑升级计划以获得更高的限制
    * 优化请求以减少不必要的调用
  </Accordion>

  <Accordion title="禁止访问">
    **症状**: 403 Forbidden错误

    **解决方案**:

    * 验证IP限制是否未阻止您的请求
    * 检查您的订阅是否包括对该端点的访问
    * 确保您的API密钥具有必要的权限
  </Accordion>
</AccordionGroup>

## 下一步

<CardGroup cols={2}> <Card title="快速入门指南" icon="rocket" href="/zh/quickstart"> 开始使用Helius进行您的第一个API调用 </Card> <Card title="API参考" icon="book" href="/zh/api-reference"> 探索所有可用的端点和方法 </Card> <Card title="速率限制" icon="credit-card" href="/zh/billing/rate-limits"> 了解速率限制和升级选项 </Card> <Card title="仪表板" icon="chart-line" href="https://dashboard.helius.dev"> 监控您的API使用并管理密钥 </Card> </CardGroup>

## 支持

需要帮助进行身份验证或有关于API密钥的问题？

<CardGroup cols={2}> <Card title="Discord社区" icon="discord" href="https://discord.com/invite/6GXdee3gBj"> 加入我们的Discord以获得实时帮助和社区支持 </Card> <Card title="电子邮件支持" icon="envelope" href="mailto:support@helius.xyz"> 直接联系我们的支持团队 </Card> </CardGroup>
