> ## Documentation Index
> Fetch the complete documentation index at: https://docs.yampi.com.br/llms.txt
> Use this file to discover all available pages before exploring further.

# Como funciona

> Entenda o que é rate limit e como ele funciona na API Yampi.

<Info>
  Os rate limits protegem a estabilidade da plataforma e garantem uma experiência consistente para todos os integradores.
</Info>

## O que é rate limit?

Rate limit é um mecanismo de controle que define o número máximo de requisições que uma integração pode realizar à API dentro de um determinado intervalo de tempo.

Quando esse limite é atingido, a API retorna o status HTTP **`429 Too Many Requests`** e bloqueia novas requisições até que a janela de tempo seja reiniciada.

***

## Limites por módulo

A tabela abaixo apresenta os limites de requisições agrupados por módulo funcional da API Yampi.
Para a lista completa por rota e verbo HTTP, consulte a página [Limites](/api-reference/rate-limit/limites).

| Módulo                          | Limite por minuto | Limite por hora | Observações                                                       |
| ------------------------------- | ----------------- | --------------- | ----------------------------------------------------------------- |
| Geral (todos os endpoints)      | 60 req/min        | —               | Limite padrão para rotas sem configuração específica              |
| Autenticação                    | 10 req/min        | —               | Proteção contra força bruta                                       |
| Busca                           | 60 req/min        | —               | —                                                                 |
| Catálogo - Produtos             | 30 req/min        | —               | Import/Export: 5 req/min por usuário autenticado                  |
| Catálogo - SKUs                 | 30 req/min        | —               | Import/Export: 5 req/min por usuário autenticado                  |
| Catálogo - Atualização em massa | 60 req/min        | —               | Endpoint de lote de SKUs                                          |
| Checkout - Carrinhos            | 60 req/min        | —               | Export: 5 req/min por usuário autenticado                         |
| Checkout - Links de Pagamento   | 30 req/min        | —               | Aplicado em operações de escrita                                  |
| Clientes                        | 60 req/min        | —               | Export: 5 req/min por usuário autenticado; Exclusão: 1 req/min    |
| Configurações                   | 30 req/min        | —               | Aplicado em operações de escrita                                  |
| Conteúdo                        | 60 req/min        | —               | —                                                                 |
| Descontos                       | 60 req / 30 seg   | —               | Criação: 30 req / 30 seg; Edição/Exclusão: 15 req / 30 seg        |
| Leads                           | 60 req/min        | —               | Export: 5 req/min por usuário autenticado                         |
| Logística - Cálculo de frete    | 60 req/min        | —               | —                                                                 |
| Marketing                       | 60 req/min        | —               | —                                                                 |
| Pedidos                         | 120 req/min       | —               | Escrita: 30 req/min; Importação/Exportação: 5 req/min por usuário |
| Pedidos - Rastreamento          | —                 | 3 req/h         | Criação de rastreamentos (POST)                                   |
| Promoções - Cupons              | 120 req/min       | —               | Escrita: 30 req/min                                               |
| Promoções - Cashback            | 30 req/min        | —               | Regras de cashback: 10 req/min por usuário autenticado            |
| Promoções - Order Bumps         | 30 req/min        | —               | Escrita: 10 req / 30 seg                                          |
| Público                         | 60 req/min        | —               | Informações públicas da loja                                      |
| Usuários                        | 10 req/min        | —               | Limitado a 10 tentativas de redefinição de senha por minuto       |

<Warning>
  Os valores marcados como `X req/min` e `Y req/h` são placeholders e devem ser validados com o time de engenharia antes da publicação.
</Warning>

***

## Como funciona

A Yampi aplica rate limits principalmente por **rota** e por **IP de origem**, monitorando o volume de requisições em janelas de tempo fixas, geralmente de **1 minuto**.

Cada requisição consome uma unidade da cota disponível. Ao esgotá-la, as requisições seguintes são rejeitadas com `HTTP 429` até o início da próxima janela.

### Headers de controle

A API retorna os seguintes headers em todas as respostas, permitindo monitorar o estado do rate limit em tempo real:

| Header                  | Descrição                                                   |
| ----------------------- | ----------------------------------------------------------- |
| `X-RateLimit-Limit`     | Número máximo de requisições permitidas na janela atual     |
| `X-RateLimit-Remaining` | Quantas requisições ainda estão disponíveis na janela atual |

### Resposta de erro

Ao ultrapassar o limite, você receberá:

```http theme={"system"}
HTTP/1.1 429 Too Many Requests
X-RateLimit-Limit: 60
X-RateLimit-Remaining: 0
```

```json theme={"system"}
{
  "message": "Too Many Requests",
  "status_code": 429
}
```

***

## Exemplos

### Exemplo 1 — Requisição dentro do limite

```bash theme={"system"}
curl --request GET \
  --url "https://api.dooki.com.br/v2/{alias}/catalog/products" \
  --header "User-Token: seu-token" \
  --header "User-Secret-Key: sua-secret-key"
```

**Resposta (200 OK):**

```http theme={"system"}
HTTP/1.1 200 OK
X-RateLimit-Limit: 60
X-RateLimit-Remaining: 59
```

***

### Exemplo 2 — Limite atingido

```bash theme={"system"}
curl --request GET \
  --url "https://api.dooki.com.br/v2/{alias}/catalog/products" \
  --header "User-Token: seu-token" \
  --header "User-Secret-Key: sua-secret-key"
```

**Resposta (429 Too Many Requests):**

```http theme={"system"}
HTTP/1.1 429 Too Many Requests
X-RateLimit-Limit: 60
X-RateLimit-Remaining: 0
```
