> ## 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 Rate Limits

> Umfassender Leitfaden zu Helius Rate Limits für alle Pläne und Produkte.

## Was sind Rate Limits?

Rate Limits steuern, wie viele Anfragen Sie pro Sekunde stellen können. Wenn die Rate Limits überschritten werden, erhalten Sie eine HTTP 429 Antwort. Für Hinweise zu Vorgehensweisen, wenn Sie eine 429 oder einen anderen vorübergehenden Fehler erhalten, siehe [Wiederholungen und Fehlerbehandlung](#wiederholungen-und-fehlerbehandlung) unten.

## Standard-Rate-Limits

Ihr Plan hat zwei Standard-Rate-Limit-Gruppen: eine für RPC-Anfragen und eine für DAS API-Anfragen. Hier sind die Basis-Rate-Limits für jeden Helius-Plan:

<table>
  <thead align="left">
    <tr>
      <th width="200">Plan</th>
      <th width="260">RPC-Rate-Limit</th>
      <th width="260">DAS & Enhanced APIs</th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td><strong>Kostenlos</strong></td>
      <td>10 Anfragen/s</td>
      <td>2 Anfragen/s</td>
    </tr>

    <tr>
      <td><strong>Entwickler</strong></td>
      <td>50 Anfragen/s</td>
      <td>10 Anfragen/s</td>
    </tr>

    <tr>
      <td><strong>Business</strong></td>
      <td>200 Anfragen/s</td>
      <td>50 Anfragen/s</td>
    </tr>

    <tr>
      <td><strong>Professionell</strong></td>
      <td>500 Anfragen/s</td>
      <td>100 Anfragen/s</td>
    </tr>

    <tr>
      <td><strong>Enterprise</strong></td>
      <td>Kundenspezifisch</td>
      <td>Kundenspezifisch</td>
    </tr>
  </tbody>
</table>

### Erhöhung der Rate Limits

Teams mit professionellen Plänen können zusätzlich 100 RPS für \$100/Monat erwerben.

Wenn Sie kundenspezifische Rate Limits vor Markteinführungen benötigen, [kontaktieren Sie unser Vertriebsteam](https://www.helius.dev/contact). Wenn Sie sich im Entwickler- oder Geschäftstarif befinden, aktualisieren Sie bitte Ihren Plan, um Ihre Rate Limits zu erhöhen.

## Besondere Rate Limits

Einige Endpunkte und spezialisierte Helius-Produkte haben aufgrund ihrer Rechenanforderungen spezielle Rate Limits.

### Transaktionen senden

<table>
  <thead align="left">
    <tr>
      <th width="200">Endpunkt</th>
      <th width="100">Kostenlos</th>
      <th width="100">Entwickler</th>
      <th width="100">Business</th>
      <th width="100">Professionell</th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td><code>Sender</code></td>
      <td>50/sec</td>
      <td>50/sec</td>
      <td>50/sec</td>
      <td>50/sec</td>
    </tr>

    <tr>
      <td><code>sendTransaction</code></td>
      <td>1/sec</td>
      <td>5/sec</td>
      <td>50/sec</td>
      <td>100/sec</td>
    </tr>

    <tr>
      <td><code>sendBundle</code></td>
      <td>—</td>
      <td>—</td>
      <td>5/sec</td>
      <td>5/sec</td>
    </tr>

    <tr>
      <td><code>simulateBundle</code></td>
      <td>10/sec</td>
      <td>50/sec</td>
      <td>200/sec</td>
      <td>500/sec</td>
    </tr>
  </tbody>
</table>

Wenn Sie einen professionellen Plan haben und Ihre `sendTransaction`-Rate-Limits erhöhen müssen, [kontaktieren Sie unser Vertriebsteam](https://www.helius.dev/contact).

Nutzer des professionellen Plans können auch [Anfragen](https://www.helius.dev/contact) zur Erhöhung der Rate Limits und kundenspezifische TIP-Vereinbarungen für den Sender stellen, um Handelsanwendungen mit höherem Durchsatz zu unterstützen.

### Komplexe RPC-Anrufe

<table>
  <thead align="left">
    <tr>
      <th width="200">Endpunkt</th>
      <th width="100">Kostenlos</th>
      <th width="100">Entwickler</th>
      <th width="100">Business</th>
      <th width="100">Professionell</th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td><code>getProgramAccounts</code></td>
      <td>5/sec</td>
      <td>25/sec</td>
      <td>50/sec</td>
      <td>75/sec</td>
    </tr>
  </tbody>
</table>

### Historische Daten

Bei Batch-Anfragen für historische Datenmethoden gelten die folgenden Limits:

<table>
  <thead align="left">
    <tr>
      <th style={{width: '300px'}}>Methode</th>
      <th style={{width: '300px'}}>Max. Batch-Größe</th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td><code>getTransaction</code></td>
      <td>100 Elemente pro Anfrage</td>
    </tr>

    <tr>
      <td><code>getTransactionsForAddress</code></td>
      <td>Keine Batch-Anfragen erlaubt</td>
    </tr>

    <tr>
      <td><code>getTransfersByAddress</code></td>
      <td>Keine Batch-Anfragen erlaubt</td>
    </tr>

    <tr>
      <td>Alle anderen historischen Methoden</td>
      <td>10 Elemente pro Anfrage</td>
    </tr>
  </tbody>
</table>

<Warning>
  Das Überschreiten der Batch-Limits führt zu einer Fehlermeldung. Für `getTransactionsForAddress` und `getTransfersByAddress` muss jede Adresse in einer separaten Anfrage abgefragt werden.
</Warning>

### LaserStream

<table>
  <thead align="left">
    <tr>
      <th width="200">Ressource</th>
      <th width="50">Kostenlos</th>
      <th width="100">Entwickler</th>
      <th width="100">Business</th>
      <th width="150">Professionell</th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td>Netzwerke</td>
      <td>—</td>
      <td>Devnet</td>
      <td>Devnet, Mainnet</td>
      <td>Devnet, Mainnet</td>
    </tr>

    <tr>
      <td>Max. Public Keys</td>
      <td>—</td>
      <td>10M</td>
      <td>10M</td>
      <td>10M</td>
    </tr>

    <tr>
      <td>Aktive Verbindungen</td>
      <td>—</td>
      <td>—</td>
      <td>10</td>
      <td>100</td>
    </tr>
  </tbody>
</table>

### Wallet API

Die [Wallet API](/docs/de/api-reference/wallet-api) folgt den gleichen Rate Limits wie DAS & Enhanced APIs. Alle Endpunkte teilen sich diese Limits:

<table>
  <thead align="left">
    <tr>
      <th width="200">Endpunkt</th>
      <th width="100">Kostenlos</th>
      <th width="100">Entwickler</th>
      <th width="100">Business</th>
      <th width="100">Professionell</th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td>Alle Wallet API-Endpunkte</td>
      <td>2/sec</td>
      <td>10/sec</td>
      <td>50/sec</td>
      <td>100/sec</td>
    </tr>
  </tbody>
</table>

Dies umfasst Identitätssuchen, Salden, Verlauf, Überweisungen und Endpunkte der Finanzierungsquelle. Erfahren Sie mehr in unserer [Wallet API-Dokumentation](/docs/de/wallet-api/overview).

### LaserStream WebSocket

<table>
  <thead align="left">
    <tr>
      <th width="200">Ressource</th>
      <th width="100">Kostenlos</th>
      <th width="100">Entwickler</th>
      <th width="100">Business</th>
      <th width="100">Professionell</th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td>Gleichzeitige Verbindungen</td>
      <td>5</td>
      <td>150</td>
      <td>250</td>
      <td>1,000</td>
    </tr>

    <tr>
      <td>Abonnements pro Verbindung</td>
      <td>1,000</td>
      <td>1,000</td>
      <td>1,000</td>
      <td>1,000</td>
    </tr>

    <tr>
      <td>WebSocket-Typen</td>
      <td>Standard</td>
      <td>Standard, Enhanced</td>
      <td>Standard, Enhanced</td>
      <td>Standard, Enhanced</td>
    </tr>
  </tbody>
</table>

### Webhooks

<table>
  <thead align="left">
    <tr>
      <th width="200">Ressource</th>
      <th width="100">Kostenlos</th>
      <th width="100">Entwickler</th>
      <th width="100">Business</th>
      <th width="100">Professionell</th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td>Max. Webhooks</td>
      <td>5</td>
      <td>50</td>
      <td>50</td>
      <td>50</td>
    </tr>

    <tr>
      <td>Adressen pro Webhook</td>
      <td>100k</td>
      <td>100k</td>
      <td>100k</td>
      <td>100k</td>
    </tr>
  </tbody>
</table>

### ZK-Kompression

<table>
  <thead align="left">
    <tr>
      <th width="200">Service</th>
      <th width="100">Kostenlos</th>
      <th width="100">Entwickler</th>
      <th width="100">Business</th>
      <th width="100">Professionell</th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td>Photon APIs</td>
      <td>2/sec</td>
      <td>10/sec</td>
      <td>50/sec</td>
      <td>100/sec</td>
    </tr>

    <tr>
      <td><code>getValidityProof</code></td>
      <td>1/sec</td>
      <td>5/sec</td>
      <td>10/sec</td>
      <td>20/sec</td>
    </tr>
  </tbody>
</table>

## Wiederholungen und Fehlerbehandlung

Wenn Ihre Anwendung eine `429 Too Many Requests`, `503 Service Unavailable` oder vorübergehende `5xx`-Antwort erhält, warten Sie einen Moment und versuchen Sie es erneut — versuchen Sie es nicht sofort erneut. Sofortige Wiederholungen sammeln Anfragen an und machen die Wiederherstellung nach den Rate-Limits langsamer, nicht schneller.

### Empfohlene Strategie

* Warten Sie etwa **1 Sekunde**, bevor Sie es zum ersten Mal erneut versuchen.
* **Verdoppeln Sie die Wartezeit** jedes Mal, wenn Sie es erneut versuchen, bis zu einem Maximum von **30 Sekunden**.
* Fügen Sie jeder Wartezeit eine kleine zufällige Variation von **±25%** hinzu, damit nicht alle Anwendungen gleichzeitig erneut versuchen.
* Geben Sie nach **5 Versuchen** auf und geben Sie den Fehler an den aufrufenden Code zurück.

### Welche Fehler wiederholen

| Status                     | Wiederholen? | Grund                                                               |
| -------------------------- | ------------ | ------------------------------------------------------------------- |
| `400`, `401`, `403`, `404` | Nein         | Client-Fehler — Wiederholungen ändern das Ergebnis nicht.           |
| `408`                      | Ja           | Anfrage-Timeout.                                                    |
| `409`                      | Nein         | Konflikt — beim Anrufer lösen.                                      |
| `422`                      | Nein         | Validierungsfehler.                                                 |
| `429`                      | Ja           | Rate Limit überschritten — warten und mit Backoff erneut versuchen. |
| `500`, `502`               | Ja           | Vorübergehender Serverfehler.                                       |
| `503`                      | Ja           | Dienst nicht verfügbar — warten und mit Backoff erneut versuchen.   |
| `504`                      | Ja           | Gateway-Timeout.                                                    |
| Netzwerkfehler             | Ja           | Verbindungsreset, DNS-Fehler oder Socket-Timeout.                   |

### Beispiel

<CodeGroup>
  ```ts TypeScript theme={"system"}
  const RETRYABLE = new Set([408, 429, 500, 502, 503, 504]);

  export async function callWithRetry<T>(
    request: () => Promise<Response>,
    maxAttempts = 5,
  ): Promise<T> {
    let delay = 1000;
    for (let attempt = 1; attempt <= maxAttempts; attempt++) {
      const res = await request();
      if (res.ok) return (await res.json()) as T;

      if (!RETRYABLE.has(res.status) || attempt === maxAttempts) {
        throw new Error(`${res.status} after ${attempt} attempt(s): ${await res.text()}`);
      }

      const jitterMs = delay * (0.75 + Math.random() * 0.5);
      await new Promise((r) => setTimeout(r, jitterMs));
      delay = Math.min(delay * 2, 30_000);
    }
    throw new Error("unreachable");
  }
  ```

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

  RETRYABLE = {408, 429, 500, 502, 503, 504}

  def call_with_retry(request, max_attempts: int = 5):
      delay = 1.0
      for attempt in range(1, max_attempts + 1):
          response = request()
          if response.ok:
              return response.json()

          if response.status_code not in RETRYABLE or attempt == max_attempts:
              response.raise_for_status()

          time.sleep(delay * random.uniform(0.75, 1.25))
          delay = min(delay * 2, 30.0)
  ```

  ```bash Shell theme={"system"}
  call_with_retry() {
    local attempt=1 delay=1 body status
    while [ "$attempt" -le 5 ]; do
      response=$(curl -sS -w "\n%{http_code}" "$@")
      body=$(printf '%s\n' "$response" | sed '$d')
      status=$(printf '%s\n' "$response" | tail -n1)
      case "$status" in
        2*) printf '%s\n' "$body"; return 0 ;;
        408|429|500|502|503|504) ;;  # fall through and retry
        *) printf '%s\n' "$body" >&2; return 1 ;;
      esac
      # ~delay seconds with 25% jitter
      sleep "$(awk -v d="$delay" 'BEGIN { srand(); print d * (0.75 + rand() * 0.5) }')"
      delay=$(( delay * 2 > 30 ? 30 : delay * 2 ))
      attempt=$(( attempt + 1 ))
    done
    return 1
  }
  ```
</CodeGroup>

### Fehlerantwortformat

Alle Helius APIs geben bei Fehlern einen strukturierten JSON-Body zurück. JSON-RPC-Endpunkte (Solana RPC, DAS, Sender, Priority Fee, ZK-Kompression) geben das standardmäßige JSON-RPC 2.0-Envelope zurück:

```json theme={"system"}
{
  "jsonrpc": "2.0",
  "error": { "code": -32005, "message": "Too many requests" },
  "id": "1"
}
```

REST-Endpunkte (Wallet API, Admin API) geben zurück:

```json theme={"system"}
{
  "error": "RATE_LIMIT_EXCEEDED",
  "code": 429,
  "details": "Too many requests. Retry after 2 seconds."
}
```

Siehe [Allgemeine Fehlercodes](/docs/de/api-reference/common-error-codes) für die vollständige Liste der Fehlercodes und deren Bedeutung.
