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

# Autentikasi

> Pelajari cara mengautentikasi permintaan API Helius Anda dengan aman dan efisien

Helius API menggunakan kunci API untuk mengautentikasi permintaan. Setiap permintaan API harus menyertakan kunci API Anda untuk memverifikasi identitas dan izin Anda.

<Warning>
  Kunci API Anda adalah informasi sensitif yang memberikan akses ke akun Helius Anda. Jangan pernah mengeksposnya dalam kode sisi klien, repositori publik, atau area yang dapat diakses melalui browser.
</Warning>

## Memulai

### 1. Buat Kunci API Anda

<Steps>
  <Step title="Sign up or log in">
    Buat akun di [Dasbor Helius](https://dashboard.helius.dev) atau masuk ke akun Anda yang sudah ada.
  </Step>

  <Step title="Navigate to API Keys">
    Buka bagian **Kunci API** di bilah sisi dasbor Anda.
  </Step>

  <Step title="Generate a new key">
    Klik **Buat Kunci API Baru** dan berikan nama deskriptif untuk proyek Anda (misalnya, "Aplikasi Produksi", "Lingkungan Pengembangan").
  </Step>

  <Step title="Copy and secure your key">
    Segera salin kunci API Anda dan simpan dengan aman. Anda tidak akan dapat melihatnya lagi setelah meninggalkan halaman tersebut.
  </Step>
</Steps>

### 2. Menggunakan Kunci API Anda

Sertakan kunci API Anda sebagai parameter kueri dalam semua permintaan:

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

## Memulai (Untuk Agen)

Agen dapat mendaftar akun Helius, membuat proyek, dan menghasilkan kunci API secara terprogram menggunakan [Helius CLI](/docs/id/agents/cli).

Untuk petunjuk lengkap, baca: [https://dashboard.helius.dev/agents.md](https://dashboard.helius.dev/agents.md)

### Instal Helius CLI

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

### Buat Pasangan Kunci

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

### Isi Saldo Dompet yang Dihasilkan (Hanya Pembayaran Otomatis)

Lewati langkah ini jika membayar melalui tautan pembayaran yang dihosting (mode pendaftaran default, diselesaikan dengan `helius signup --resume`). Pembayaran otomatis (`--pay`) membayar dari pasangan kunci lokal: kirim 1 USDC dan 0,001 SOL ke alamat dompet yang diberikan pada Langkah 2.

### Daftar dan Dapatkan Kunci API

<CodeGroup>
  ```bash theme={"system"}
  # Default: prints a hosted payment link — pay with any wallet in the browser
  helius signup --email you@example.com --first-name Jane --last-name Doe --json

  # After paying via the link, finalize the account
  helius signup --resume --json

  # Or autopay from the funded local keypair
  helius signup --plan agent --pay --email you@example.com --first-name Jane --last-name Doe --json
  ```
</CodeGroup>

## Praktik Terbaik Keamanan

<CardGroup cols={2}>
  <Card title="Environment Variables" icon="shield-check">
    Simpan kunci API Anda dalam variabel lingkungan, bukan dalam kode sumber Anda.

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

  <Card title="IP Restrictions" icon="globe">
    Atur pembatasan IP untuk kunci API Anda di dasbor guna membatasi akses ke alamat atau rentang IP tertentu.
  </Card>

  <Card title="Separate Keys" icon="key">
    Gunakan kunci API yang berbeda untuk lingkungan pengembangan, staging, dan produksi guna mengisolasi penggunaan dan meningkatkan keamanan.
  </Card>

  <Card title="Monitor Usage" icon="chart-line">
    Periksa penggunaan API Anda secara berkala di dasbor untuk mendeteksi pola yang tidak biasa atau potensi masalah keamanan.
  </Card>
</CardGroup>

### Pengelolaan Rahasia

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

## Batas Laju & Penggunaan

<Note>
  Batas laju bervariasi berdasarkan paket langganan. Pantau penggunaan Anda di [Dasbor Helius](https://dashboard.helius.dev) untuk memastikan penggunaan tetap berada dalam batas yang dialokasikan.
</Note>

### Memahami Batas Laju

* **Permintaan per detik**: Berdasarkan tingkat langganan Anda
* **Kuota permintaan bulanan**: Total permintaan yang diizinkan per siklus penagihan
* **Toleransi lonjakan**: Lonjakan jangka pendek di atas batas laju dasar Anda

### Menangani Batas Laju

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

## Pemecahan Masalah

<AccordionGroup>
  <Accordion title="Invalid API Key Error">
    **Gejala**: Error 401 Unauthorized atau "Invalid API Key"

    **Solusi**:

    * Pastikan kunci API Anda benar dan belum dibuat ulang
    * Pastikan Anda menyertakan kunci API sebagai parameter kueri: `?api-key=YOUR_KEY`
    * Pastikan tidak ada spasi atau karakter tambahan dalam kunci API Anda
    * Pastikan kunci API Anda belum kedaluwarsa atau dicabut
  </Accordion>

  <Accordion title="Rate Limit Exceeded">
    **Gejala**: Error 429 Too Many Requests

    **Solusi**:

    * Periksa penggunaan Anda saat ini di dasbor
    * Terapkan exponential backoff dalam logika percobaan ulang Anda
    * Pertimbangkan untuk meningkatkan paket Anda agar mendapatkan batas yang lebih tinggi
    * Optimalkan permintaan Anda untuk mengurangi panggilan yang tidak diperlukan
  </Accordion>

  <Accordion title="Forbidden Access">
    **Gejala**: Error 403 Forbidden

    **Solusi**:

    * Pastikan pembatasan IP tidak memblokir permintaan Anda
    * Pastikan langganan Anda mencakup akses ke endpoint tersebut
    * Pastikan kunci API Anda memiliki izin yang diperlukan
  </Accordion>
</AccordionGroup>

## Langkah Berikutnya

<CardGroup cols={2}>
  <Card title="Quickstart Guide" icon="rocket" href="/docs/id/quickstart">
    Mulai lakukan panggilan API pertama Anda dengan Helius
  </Card>

  <Card title="API Reference" icon="book" href="/docs/id/api-reference">
    Jelajahi semua endpoint dan metode yang tersedia
  </Card>

  <Card title="Rate Limits" icon="credit-card" href="/docs/id/billing/rate-limits">
    Pahami batas laju dan opsi peningkatan paket
  </Card>

  <Card title="Dashboard" icon="chart-line" href="https://dashboard.helius.dev">
    Pantau penggunaan API Anda dan kelola kunci
  </Card>
</CardGroup>

## Dukungan

Perlu bantuan terkait autentikasi atau memiliki pertanyaan tentang kunci API?

<CardGroup cols={2}>
  <Card title="Discord Community" icon="discord" href="https://discord.com/invite/6GXdee3gBj">
    Bergabunglah dengan Discord kami untuk mendapatkan bantuan secara langsung dan dukungan komunitas
  </Card>

  <Card title="Email Support" icon="envelope" href="mailto:support@helius.xyz">
    Hubungi tim dukungan kami secara langsung
  </Card>
</CardGroup>
