Tipo de página: docs

Limites de taxa

Compreende os limites de taxa de API, desempenho de envio, novas tentativas e controles de modo ao vivo.

Resposta direta

Compreende os limites de taxa de API, desempenho de envio, novas tentativas e controles de modo ao vivo.

Conteúdo fonte

Os limites de tarifas protegem a confiabilidade do fornecedor, os controles de gastos e a experiência do cliente.

TextTree exibe falhas de limite de taxa com:

- ID da solicitação
-ponto final
- guia de nova tentativa
- mensagem ou evento de webhook relacionado

O desempenho na produção depende do registro do remetente, dos limites do provedor e do plano do espaço de trabalho.

## Limitação de inicialização da conta

A inicialização da conta headless é intencionalmente mais rigorosa que o tráfego normal da API:

-`POST /api/v1/accounts`
-`POST /mcp/accounts`

Cada endereço IP pode criar uma conta com sucesso a cada cinco minutos. TextTree
armazena apenas um hash do endereço IP para esse registro de limitação. uma tentativa
A criação bem-sucedida repetida na janela retorna:

```json
{
  "error": "account_creation_rate_limited",
  "retry_after_seconds": 300
}
```

## Limite de taxa de envio de mensagens

`POST /api/v1/messages` tem taxa limitada por credencial de API (por token de acesso) para
que uma única chave não pode inundar a fila de envio compartilhada. O limite é um token bucket:
rajadas curtas são permitidas e então as solicitações são limitadas a uma taxa sustentada.

| Nível do plano | Capacidade de explosão | Recarga de token |
| --- | ---: | --- |
| Iniciante | 1 mensagem | 1 token a cada 1.200 ms |
| Crescimento | 5 mensagens | 1 token a cada 1.200 ms |
| Escala | 10 mensagens | 1 token a cada 1.200 ms |
| Empresa | 20 mensagens | 1 token a cada 1.200 ms |

Todos os níveis mantêm a recarga sustentada padrão de admissão da API igual ou inferior ao
O limite padrão do provedor de discagem é de um token a cada 1.200 ms. Os níveis salariais aumentam
a admissão de rajadas curtas; a entrega real ainda está na fila atrás do registro do remetente,
Limites de taxa de discagem, controles de gastos e configurações de remetente do espaço de trabalho.

Quando o bucket está vazio, o endpoint responde com `429 Too Many Requests`, um
Cabeçalho `Retry-After` (em segundos) e:

```json
{
  "error": "message_send_rate_limited",
  "message": "Too many message send requests. Retry after the indicated delay.",
  "retry_after_seconds": 1,
  "limit": {
    "tier": "starter",
    "capacity": 1,
    "refill_ms": 1200
  }
}
```

Leituras (`GET /api/v1/messages/:id`) e visualizações não são afetadas por este limite.
Um desempenho sustentado mais alto está disponível por plano de espaço de trabalho, uma vez registrado o
o remetente está estável – entre em contato com o suporte.

## Formato de resposta

```json
{
  "error": "message_send_rate_limited",
  "message": "Too many message send requests. Retry after the indicated delay.",
  "retry_after_seconds": 30,
  "limit": {
    "tier": "growth",
    "capacity": 5,
    "refill_ms": 1200
  }
}
```

Use `retry_after_seconds` quando presente. Se o campo estiver faltando, use backspace exponencial com
jitter em vez de tentar novamente imediatamente.

## Padrão de nova tentativa

```js
async function sendWithBackoff(payload, attempt = 1) {
  const response = await fetch("https://api.texttree.ai/api/v1/messages", {
    method: "POST",
    headers: {
      Authorization: `Bearer undefined`,
      "Content-Type": "application/json",
    },
    body: JSON.stringify(payload),
  });

  if (response.status !== 429) {
    return response;
  }

  const retryAfter = Number(response.headers.get("retry-after") || 2 ** attempt);
  await new Promise((resolve) => setTimeout(resolve, retryAfter * 1000));
  return sendWithBackoff(payload, attempt + 1);
}
```

## Idempotência

Sempre inclua `idempotency_key` ao tentar novamente envios de fluxo de trabalho. Isso permite que o TextTree retorne o
mensagem original em vez de criar registros SMS duplicados quando a primeira solicitação foi bem-sucedida, mas
Seu cliente expirou.

```json
{
  "phone_number": "+15551234567",
  "body": "Your appointment is tomorrow at 9 AM.",
  "idempotency_key": "appointment-123-reminder"
}
```

## Guia operacional

- Faça testes de explosão no modo Teste antes de mover o tráfego para Live.
- Mantenha os receptores de webhook rápidos e retorne `2xx` rapidamente.
- Use logs de mensagens e IDs de solicitação para depurar envios limitados.
- Solicite suporte para maior desempenho de produção quando o registro do remetente estiver estável.
Markdown