> ## 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 Taxa Helius

> Guia completo sobre os limites de taxa da Helius em todos os planos e produtos.

## O que são limites de taxa?

Limites de taxa controlam quantas solicitações você pode fazer por segundo. Quando os limites de taxa são excedidos, você receberá uma resposta HTTP 429. Para orientações sobre o que fazer quando você atingir um erro 429 ou outra falha transitória, veja [Repetições e tratamento de erros](#retries-and-error-handling) abaixo.

## Limites de Taxa Padrão

Seu plano possui dois grupos padrão de limites de taxa: um para solicitações RPC e outro para solicitações da API DAS. Aqui estão os limites de taxa base para cada plano Helius:

<table>
  <thead align="left">
    <tr>
      <th width="200">Plano</th>
      <th width="260">Limite de Taxa RPC</th>
      <th width="260">APIs DAS & Aprimoradas</th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td><strong>Grátis</strong></td>
      <td>10 solicitações/s</td>
      <td>2 solicitações/s</td>
    </tr>

    <tr>
      <td><strong>Desenvolvedor</strong></td>
      <td>50 solicitações/s</td>
      <td>10 solicitações/s</td>
    </tr>

    <tr>
      <td><strong>Empresarial</strong></td>
      <td>200 solicitações/s</td>
      <td>50 solicitações/s</td>
    </tr>

    <tr>
      <td><strong>Profissional</strong></td>
      <td>500 solicitações/s</td>
      <td>100 solicitações/s</td>
    </tr>

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

### Aumentar Limites de Taxa

Equipes em planos Profissionais podem adquirir um adicional de 100 RPS por \$100/mês.

Se você precisar de limites de taxa personalizados antes dos lançamentos, [contate nossa equipe de vendas](https://www.helius.dev/contact). Se você está no nível Desenvolvedor ou Empresarial, atualize seu plano para aumentar seus limites de taxa.

## Limites de Taxa Especiais

Alguns endpoints e produtos especializados Helius têm limites de taxa especiais devido aos seus requisitos computacionais.

### Envio de Transações

<table>
  <thead align="left">
    <tr>
      <th width="200">Endpoint</th>
      <th width="100">Grátis</th>
      <th width="100">Desenvolvedor</th>
      <th width="100">Empresarial</th>
      <th width="100">Profissional</th>
    </tr>
  </thead>

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

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

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

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

Se você estiver em um plano Profissional e precisar aumentar seus limites de taxa `sendTransaction`, [contate nossa equipe de vendas](https://www.helius.dev/contact).

Usuários do plano Profissional também podem [solicitar](https://www.helius.dev/contact) aumentos de limites de taxa e arranjos de gorjeta personalizados para o Sender, para suportar aplicativos de negociação de maior throughput.

### Chamadas RPC Complexas

<table>
  <thead align="left">
    <tr>
      <th width="200">Endpoint</th>
      <th width="100">Grátis</th>
      <th width="100">Desenvolvedor</th>
      <th width="100">Empresarial</th>
      <th width="100">Profissional</th>
    </tr>
  </thead>

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

### Dados Históricos

Ao fazer solicitações em lote para métodos de dados históricos, os seguintes limites se aplicam:

<table>
  <thead align="left">
    <tr>
      <th style={{width: '300px'}}>Método</th>
      <th style={{width: '300px'}}>Tamanho Máximo do Lote</th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td><code>getTransaction</code></td>
      <td>100 itens por solicitação</td>
    </tr>

    <tr>
      <td><code>getTransactionsForAddress</code></td>
      <td>Não são permitidas solicitações em lote</td>
    </tr>

    <tr>
      <td><code>getTransfersByAddress</code></td>
      <td>Não são permitidas solicitações em lote</td>
    </tr>

    <tr>
      <td>Todos os outros métodos históricos</td>
      <td>10 itens por solicitação</td>
    </tr>
  </tbody>
</table>

<Warning>
  Exceder os limites de lote resultará em uma resposta de erro. Para `getTransactionsForAddress` e `getTransfersByAddress`, cada endereço deve ser consultado em uma solicitação separada.
</Warning>

### LaserStream

<table>
  <thead align="left">
    <tr>
      <th width="200">Recurso</th>
      <th width="50">Grátis</th>
      <th width="100">Desenvolvedor</th>
      <th width="100">Empresarial</th>
      <th width="150">Profissional</th>
    </tr>
  </thead>

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

    <tr>
      <td>Máx. de Chaves Públicas</td>
      <td>—</td>
      <td>10M</td>
      <td>10M</td>
      <td>10M</td>
    </tr>

    <tr>
      <td>Conexões Ativas</td>
      <td>—</td>
      <td>—</td>
      <td>10</td>
      <td>100</td>
    </tr>
  </tbody>
</table>

### API de Carteira

A [API de Carteira](/docs/pt-BR/api-reference/wallet-api) segue os mesmos limites de taxa que as APIs DAS & Aprimoradas. Todos os endpoints compartilham esses limites:

<table>
  <thead align="left">
    <tr>
      <th width="200">Endpoint</th>
      <th width="100">Grátis</th>
      <th width="100">Desenvolvedor</th>
      <th width="100">Empresarial</th>
      <th width="100">Profissional</th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td>Todos os Endpoints da API de Carteira</td>
      <td>2/s</td>
      <td>10/s</td>
      <td>50/s</td>
      <td>100/s</td>
    </tr>
  </tbody>
</table>

Isso inclui buscas de identidade, saldos, histórico, transferências e endpoints de fonte de financiamento. Saiba mais em nossa [documentação da API de Carteira](/docs/pt-BR/wallet-api/overview).

### WebSocket LaserStream

<table>
  <thead align="left">
    <tr>
      <th width="200">Recurso</th>
      <th width="100">Grátis</th>
      <th width="100">Desenvolvedor</th>
      <th width="100">Empresarial</th>
      <th width="100">Profissional</th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td>Conexões Concorrentes</td>
      <td>5</td>
      <td>150</td>
      <td>250</td>
      <td>1.000</td>
    </tr>

    <tr>
      <td>Assinaturas por Conexão</td>
      <td>1.000</td>
      <td>1.000</td>
      <td>1.000</td>
      <td>1.000</td>
    </tr>

    <tr>
      <td>Tipos de WebSocket</td>
      <td>Padrão</td>
      <td>Padrão, Aprimorado</td>
      <td>Padrão, Aprimorado</td>
      <td>Padrão, Aprimorado</td>
    </tr>
  </tbody>
</table>

### Webhooks

<table>
  <thead align="left">
    <tr>
      <th width="200">Recurso</th>
      <th width="100">Grátis</th>
      <th width="100">Desenvolvedor</th>
      <th width="100">Empresarial</th>
      <th width="100">Profissional</th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td>Máx. de Webhooks</td>
      <td>5</td>
      <td>50</td>
      <td>50</td>
      <td>50</td>
    </tr>

    <tr>
      <td>Endereços por Webhook</td>
      <td>100k</td>
      <td>100k</td>
      <td>100k</td>
      <td>100k</td>
    </tr>
  </tbody>
</table>

### Compressão ZK

<table>
  <thead align="left">
    <tr>
      <th width="200">Serviço</th>
      <th width="100">Grátis</th>
      <th width="100">Desenvolvedor</th>
      <th width="100">Empresarial</th>
      <th width="100">Profissional</th>
    </tr>
  </thead>

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

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

## Repetições e tratamento de erros

Quando sua aplicação recebe uma `429 Too Many Requests`, `503 Service Unavailable`, ou resposta transitória `5xx`, espere um momento e tente novamente — não tente novamente imediatamente. Repetições imediatas acumulam solicitações e tornam a recuperação do limite de taxa mais lenta, não mais rápida.

### Estratégia recomendada

* Espere cerca de **1 segundo** antes da primeira repetição.
* **Dobre a espera** cada vez que tentar de novo, até um máximo de **30 segundos**.
* Adicione uma pequena variação aleatória de **±25%** a cada espera para que várias aplicações não repitam todas ao mesmo tempo.
* Desista após **5 tentativas** e retorne o erro ao código que o chamou.

### Quais erros repetir

| Status                     | Repetir? | Motivo                                                          |
| -------------------------- | -------- | --------------------------------------------------------------- |
| `400`, `401`, `403`, `404` | Não      | Erros do cliente — tentar novamente não mudará o resultado.     |
| `408`                      | Sim      | Tempo de solicitação esgotado.                                  |
| `409`                      | Não      | Conflito — resolva no chamador.                                 |
| `422`                      | Não      | Erro de validação.                                              |
| `429`                      | Sim      | Limite de taxa excedido — espere e tente novamente com backoff. |
| `500`, `502`               | Sim      | Erro transitório do servidor.                                   |
| `503`                      | Sim      | Serviço indisponível — espere e tente novamente com backoff.    |
| `504`                      | Sim      | Tempo limite do gateway.                                        |
| Erro de rede               | Sim      | Conexão reiniciada, falha de DNS ou tempo limite de socket.     |

### Exemplo

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

### Formato da resposta de erro

Todas as APIs Helius retornam um corpo JSON estruturado em caso de erro. Os endpoints JSON-RPC (Solana RPC, DAS, Sender, Priority Fee, ZK Compression) retornam o envelope padrão JSON-RPC 2.0:

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

Os endpoints REST (API de Carteira, API de Administração) retornam:

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

Veja [Códigos de erro comuns](/docs/pt-BR/api-reference/common-error-codes) para a lista completa de códigos de erro e o que cada um significa.
