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

# Limity zapytań

> Limity zapytań API Enrow na klucz API, odpowiedź 429 oraz sposób obsługi ograniczania przepustowości za pomocą wycofywania i punktów końcowych zbiorczych

API Enrow stosuje limity zapytań, aby zapewnić sprawiedliwe wykorzystanie i utrzymać jakość usługi. Limit jest taki sam we wszystkich punktach końcowych i wszystkich planach, jest egzekwowany **na klucz API** i mierzony w **zapytaniach na sekundę (RPS)**. Ta strona wyjaśnia domyślne limity, co się dzieje po ich przekroczeniu oraz jak utrzymać się w ramach przydziału przy zwiększaniu skali.

## Jakie są domyślne limity zapytań?

Każdy punkt końcowy POST zezwala na **10 zapytań na sekundę** na klucz API. Limit jest identyczny we wszystkich punktach końcowych i wszystkich planach:

| Endpoint                    | Rate Limit |
| --------------------------- | ---------- |
| `POST /email/find/single`   | 10 req/s   |
| `POST /email/find/bulk`     | 10 req/s   |
| `POST /email/verify/single` | 10 req/s   |
| `POST /email/verify/bulk`   | 10 req/s   |
| `POST /phone/single`        | 10 req/s   |
| `POST /phone/bulk`          | 10 req/s   |

Punkty końcowe GET nie podlegają limitom zapytań, więc pobieranie wyników — na przykład [pojedynczy wynik email](/pl/api-reference/email-finder/get-single-result) lub [wyniki zbiorcze](/pl/api-reference/email-finder/get-bulk-results) — nie jest wliczane do Twojego przydziału.

<Note>
  Limity zapytań są **na klucz API** i mierzone w **zapytaniach na sekundę** (RPS). Każdy [klucz API](/pl/authentication) ma własny, niezależny przydział.
</Note>

## Co się dzieje, gdy przekroczę limit zapytań?

Po przekroczeniu limitu zapytań API zwraca odpowiedź `429 Too Many Requests`:

```json theme={null}
{
  "message": "Too Many Requests"
}
```

Zalecanym sposobem obsługi `429` jest zastosowanie wykładniczego wycofywania — przed każdą ponowną próbą należy odczekać stopniowo coraz dłuższe opóźnienie, aby klucz API miał czas spaść poniżej limitu:

```javascript theme={null}
async function requestWithRetry(url, options, maxRetries = 3) {
  for (let attempt = 0; attempt < maxRetries; attempt++) {
    const response = await fetch(url, options);

    if (response.status === 429) {
      const delay = Math.pow(2, attempt) * 1000;
      await new Promise(resolve => setTimeout(resolve, delay));
      continue;
    }

    return response;
  }

  throw new Error('Max retries exceeded');
}
```

Pełną listę kodów odpowiedzi i sposobów ich obsługi znajdziesz w [Kody statusu](/pl/status-codes) oraz [Obsługa błędów](/pl/error-handling).

## Jak mogę uniknąć przekroczenia limitu zapytań?

Najskuteczniejszym sposobem na utrzymanie się w ramach przydziału jest wysyłanie mniejszej liczby większych zapytań oraz odbieranie wyników przez webhooki zamiast odpytywania.

<AccordionGroup>
  <Accordion title="Korzystaj z punktów końcowych zbiorczych">
    Zamiast wykonywać 100 pojedynczych zapytań, wykonaj 1 zapytanie zbiorcze (do 5000 elementów dla email i 3000 dla telefonu). Pojedyncze zbiorcze POST liczy się jako 1 zapytanie w ramach Twojego limitu.

    ```javascript theme={null}
    // ❌ 100 requests = 10 seconds at 10 RPS
    for (const contact of contacts) {
      await findEmail(contact);
    }

    // ✅ 1 request
    await findEmailsBulk(contacts);
    ```

    Aby zacząć, zobacz [Znajdowanie wielu adresów email](/pl/api-reference/email-finder/find-bulk) oraz [Weryfikacja wielu adresów email](/pl/api-reference/email-verifier/verify-bulk).
  </Accordion>

  <Accordion title="Używaj webhooków zamiast odpytywania">
    Odpytywanie punktu końcowego GET marnuje Twój przydział limitu zapytań. Użyj [webhooków](/pl/how-webhooks-work), aby automatycznie odbierać wyniki, gdy tylko wyszukiwanie lub weryfikacja zostanie zakończona.
  </Accordion>

  <Accordion title="Buforuj wyniki">
    Przechowuj wyniki, aby uniknąć zbędnych wywołań API dla tego samego kontaktu, co pozwala także zaoszczędzić [kredyty](/pl/credits-billing).
  </Accordion>
</AccordionGroup>

## Czy mogę uzyskać wyższe limity zapytań?

Tak. Enrow może zwiększyć Twój RPS indywidualnie, w zależności od przypadku. Skontaktuj się z nami pod adresem [api@enrow.io](mailto:api@enrow.io), podając swój przypadek użycia i przewidywany wolumen.

## FAQ

<AccordionGroup>
  <Accordion title="Czy limity zapytań są współdzielone między punktami końcowymi?">
    Nie. Limit 10 req/s obowiązuje niezależnie dla każdego punktu końcowego POST, a przydział jest śledzony **na klucz API**, a nie na konto.
  </Accordion>

  <Accordion title="Czy zapytania GET są wliczane do limitu zapytań?">
    Nie. Punkty końcowe GET nie podlegają limitom zapytań, więc odpytywanie o wyniki nie zużywa Twojego przydziału RPS. Mimo to webhooki są nadal korzystniejsze niż częste odpytywanie.
  </Accordion>

  <Accordion title="Czy zapytanie zbiorcze liczy się jako jedno zapytanie?">
    Tak. Pojedyncze zbiorcze POST liczy się jako 1 zapytanie w ramach Twojego limitu zapytań, nawet jeśli może zawierać do 5000 elementów dla email lub 3000 dla telefonu.
  </Accordion>

  <Accordion title="Jaki kod statusu sygnalizuje błąd limitu zapytań?">
    Odpowiedź `429 Too Many Requests` z treścią `{ "message": "Too Many Requests" }`. Ponów próbę z wykładniczym wycofywaniem. Szczegóły znajdziesz w [Obsługa błędów](/pl/error-handling).
  </Accordion>
</AccordionGroup>

## Kolejne kroki

<CardGroup cols={2}>
  <Card title="Znajdowanie wielu adresów email" icon="layer-group" href="/pl/api-reference/email-finder/find-bulk">
    Uruchom do 5000 wyszukiwań email w jednym zapytaniu, aby zaoszczędzić przydział limitu zapytań.
  </Card>

  <Card title="Webhooki" icon="bell" href="/pl/how-webhooks-work">
    Odbieraj wyniki automatycznie zamiast odpytywać punkty końcowe GET.
  </Card>

  <Card title="Obsługa błędów" icon="triangle-exclamation" href="/pl/error-handling">
    Obsługuj 429 i inne odpowiedzi w sposób płynny w swojej integracji.
  </Card>

  <Card title="Kredyty i rozliczenia" icon="coins" href="/pl/credits-billing">
    Zobacz, jak kredyty są zużywane dla każdego punktu końcowego.
  </Card>
</CardGroup>
