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

# Limites de Taux Helius

> Guide complet des limites de taux Helius pour tous les plans et produits.

## Qu'est-ce que les limites de taux ?

Les limites de taux contrôlent combien de requêtes vous pouvez faire par seconde. Lorsque les limites de taux sont dépassées, vous recevrez une réponse HTTP 429. Pour savoir quoi faire lorsque vous atteignez un 429 ou une autre défaillance transitoire, consultez [Reprises et gestion des erreurs](#reprises-et-gestion-des-erreurs) ci-dessous.

## Limites de Taux Standard

Votre plan dispose de deux groupes de limites de taux standard : un pour les requêtes RPC et un pour les requêtes API DAS. Voici les limites de taux de base pour chaque plan Helius :

<table>
  <thead align="left">
    <tr>
      <th width="200">Plan</th>
      <th width="260">Limite de Taux RPC</th>
      <th width="260">DAS & Enhanced APIs</th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td><strong>Gratuit</strong></td>
      <td>10 requêtes/s</td>
      <td>2 requêtes/s</td>
    </tr>

    <tr>
      <td><strong>Développeur</strong></td>
      <td>50 requêtes/s</td>
      <td>10 requêtes/s</td>
    </tr>

    <tr>
      <td><strong>Entreprise</strong></td>
      <td>200 requêtes/s</td>
      <td>50 requêtes/s</td>
    </tr>

    <tr>
      <td><strong>Professionnel</strong></td>
      <td>500 requêtes/s</td>
      <td>100 requêtes/s</td>
    </tr>

    <tr>
      <td><strong>Entreprise</strong></td>
      <td>Personnalisé</td>
      <td>Personnalisé</td>
    </tr>
  </tbody>
</table>

### Augmenter les Limites de Taux

Les équipes sur les plans Professionnel peuvent acheter 100 RPS supplémentaires pour 100 \$/mois.

Si vous avez besoin de limites de taux personnalisées avant les lancements, [contactez notre équipe commerciale](https://www.helius.dev/contact). Si vous êtes sur le niveau Développeur ou Entreprise, veuillez mettre à niveau votre plan pour augmenter vos limites de taux.

## Limites de Taux Spéciales

Certains points de terminaison et produits spécialisés Helius ont des limites de taux spéciales en raison de leurs exigences computationnelles.

### Envoi de Transactions

<table>
  <thead align="left">
    <tr>
      <th width="200">Point de terminaison</th>
      <th width="100">Gratuit</th>
      <th width="100">Développeur</th>
      <th width="100">Entreprise</th>
      <th width="100">Professionnel</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>

Si vous êtes sur un plan Professionnel et avez besoin d'augmenter vos limites de taux `sendTransaction`, [contactez notre équipe commerciale](https://www.helius.dev/contact).

Les utilisateurs du plan Professionnel peuvent également [demander](https://www.helius.dev/contact) des augmentations de limites de taux et des arrangements de pourboires personnalisés pour Sender afin de soutenir les applications de trading à haut débit.

### Appels RPC Complexes

<table>
  <thead align="left">
    <tr>
      <th width="200">Point de terminaison</th>
      <th width="100">Gratuit</th>
      <th width="100">Développeur</th>
      <th width="100">Entreprise</th>
      <th width="100">Professionnel</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>

### Données Historiques

Lors de requêtes par lot pour les méthodes de données historiques, les limites suivantes s'appliquent :

<table>
  <thead align="left">
    <tr>
      <th style={{width: '300px'}}>Méthode</th>
      <th style={{width: '300px'}}>Taille Max du Lot</th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td><code>getTransaction</code></td>
      <td>100 éléments par requête</td>
    </tr>

    <tr>
      <td><code>getTransactionsForAddress</code></td>
      <td>Pas de requêtes par lot autorisées</td>
    </tr>

    <tr>
      <td><code>getTransfersByAddress</code></td>
      <td>Pas de requêtes par lot autorisées</td>
    </tr>

    <tr>
      <td>Toutes les autres méthodes historiques</td>
      <td>10 éléments par requête</td>
    </tr>
  </tbody>
</table>

<Warning>
  Dépasser les limites de lot entraînera une réponse d'erreur. Pour `getTransactionsForAddress` et `getTransfersByAddress`, chaque adresse doit être interrogée dans une requête distincte.
</Warning>

### LaserStream

<table>
  <thead align="left">
    <tr>
      <th width="200">Ressource</th>
      <th width="50">Gratuit</th>
      <th width="100">Développeur</th>
      <th width="100">Entreprise</th>
      <th width="150">Professionnel</th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td>Réseaux</td>
      <td>—</td>
      <td>Devnet</td>
      <td>Devnet, Mainnet</td>
      <td>Devnet, Mainnet</td>
    </tr>

    <tr>
      <td>Max Pubkeys</td>
      <td>—</td>
      <td>10M</td>
      <td>10M</td>
      <td>10M</td>
    </tr>

    <tr>
      <td>Connexions Actives</td>
      <td>—</td>
      <td>—</td>
      <td>10</td>
      <td>100</td>
    </tr>
  </tbody>
</table>

### API Wallet

L'[API Wallet](/docs/fr/api-reference/wallet-api) suit les mêmes limites de taux que les API DAS & Enhanced. Tous les points de terminaison partagent ces limites :

<table>
  <thead align="left">
    <tr>
      <th width="200">Point de terminaison</th>
      <th width="100">Gratuit</th>
      <th width="100">Développeur</th>
      <th width="100">Entreprise</th>
      <th width="100">Professionnel</th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td>Tous les points de terminaison de l'API Wallet</td>
      <td>2/sec</td>
      <td>10/sec</td>
      <td>50/sec</td>
      <td>100/sec</td>
    </tr>
  </tbody>
</table>

Cela inclut la recherche d'identité, les soldes, l'historique, les transferts et les points de terminaison des sources de financement. En savoir plus dans notre [documentation sur l'API Wallet](/docs/fr/wallet-api/overview).

### WebSocket LaserStream

<table>
  <thead align="left">
    <tr>
      <th width="200">Ressource</th>
      <th width="100">Gratuit</th>
      <th width="100">Développeur</th>
      <th width="100">Entreprise</th>
      <th width="100">Professionnel</th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td>Connexions Concurrentes</td>
      <td>5</td>
      <td>150</td>
      <td>250</td>
      <td>1,000</td>
    </tr>

    <tr>
      <td>Abonnements par Connexion</td>
      <td>1,000</td>
      <td>1,000</td>
      <td>1,000</td>
      <td>1,000</td>
    </tr>

    <tr>
      <td>Types de WebSocket</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">Gratuit</th>
      <th width="100">Développeur</th>
      <th width="100">Entreprise</th>
      <th width="100">Professionnel</th>
    </tr>
  </thead>

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

    <tr>
      <td>Adresses par Webhook</td>
      <td>100k</td>
      <td>100k</td>
      <td>100k</td>
      <td>100k</td>
    </tr>
  </tbody>
</table>

### Compression ZK

<table>
  <thead align="left">
    <tr>
      <th width="200">Service</th>
      <th width="100">Gratuit</th>
      <th width="100">Développeur</th>
      <th width="100">Entreprise</th>
      <th width="100">Professionnel</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>

## Reprises et gestion des erreurs

Lorsque votre application reçoit une réponse `429 Too Many Requests`, `503 Service Unavailable`, ou transitoire `5xx`, attendez un moment et réessayez — ne réessayez pas immédiatement. Les reprises immédiates accumulent les requêtes et ralentissent la récupération des limites de taux, pas l'inverse.

### Stratégie recommandée

* Attendez environ **1 seconde** avant la première reprise.
* **Doublez l'attente** chaque fois que vous réessayez, jusqu'à un maximum de **30 secondes**.
* Ajoutez une petite variation aléatoire de **±25 %** à chaque attente pour éviter que plusieurs applications ne réessayent au même instant.
* Abandonnez après **5 tentatives** et retournez l'erreur au code qui vous a appelé.

### Quels erreurs réessayer

| Statut                     | Réessayer ? | Raison                                                                     |
| -------------------------- | ----------- | -------------------------------------------------------------------------- |
| `400`, `401`, `403`, `404` | Non         | Erreurs client — réessayer ne changera pas le résultat.                    |
| `408`                      | Oui         | Délai d'attente de la requête.                                             |
| `409`                      | Non         | Conflit — à résoudre par l'appelant.                                       |
| `422`                      | Non         | Erreur de validation.                                                      |
| `429`                      | Oui         | Limite de taux dépassée — attendez et réessayez avec backoff.              |
| `500`, `502`               | Oui         | Erreur serveur transitoire.                                                |
| `503`                      | Oui         | Service indisponible — attendez et réessayez avec backoff.                 |
| `504`                      | Oui         | Délai de la passerelle.                                                    |
| Erreur réseau              | Oui         | Réinitialisation de la connexion, échec DNS, ou délai d'attente du socket. |

### Exemple

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

### Forme de la réponse d'erreur

Toutes les API Helius renvoient un corps JSON structuré en cas d'erreur. Les points de terminaison JSON-RPC (Solana RPC, DAS, Sender, Priority Fee, ZK Compression) renvoient l'enveloppe standard JSON-RPC 2.0 :

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

Les points de terminaison REST (API Wallet, API Admin) renvoient :

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

Voir [Codes d'erreur communs](/docs/fr/api-reference/common-error-codes) pour la liste complète des codes d'erreur et leur signification.
