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

# Limite de cereri

> Câte cereri puteți trimite și cum gestionați răspunsurile 429.

> [!NOTE]
>
> API-ul GetQR este în versiune beta și este disponibil pentru anumite spații de lucru. Detaliile se pot schimba înainte de lansarea generală.

API-ul GetQR limitează numărul de cereri pe care le poate trimite fiecare cheie API, astfel încât o singură integrare să nu încetinească API-ul pentru toți ceilalți.

## Limite

| Limită | Valoare |
| - | - |
| Cereri per cheie API | 600 pe minut |

Limita se calculează pe o fereastră glisantă de un minut și se aplică tuturor endpointurilor împreună. [Verificarea stării](https://docs.getqr.com/ro/api/endpoints/health.md) nu necesită cheie și nu se contorizează.

## Anteturi pentru limitele de cereri

Răspunsurile la cererile cu o cheie API validă includ aceste anteturi, inclusiv răspunsurile de eroare:

| Antet | Descriere |
| - | - |
| `X-RateLimit-Limit` | Numărul maxim de cereri pe fereastră. |
| `X-RateLimit-Remaining` | Cererile rămase în fereastra curentă. |
| `X-RateLimit-Reset` | Când se resetează fereastra, ca marcaj temporal Unix în milisecunde. |
| `Retry-After` | Secundele rămase până la resetarea ferestrei, rotunjite în sus. Așteptați acest timp înainte de a reîncerca. |

## Când depășiți limita

Peste limită, API-ul răspunde cu `429`, codul `rate_limit_exceeded` și aceleași anteturi:

```http theme={null}
HTTP/1.1 429 Too Many Requests
X-RateLimit-Limit: 600
X-RateLimit-Remaining: 0
X-RateLimit-Reset: 1792764060000
Retry-After: 37

{
  "error": {
    "code": "rate_limit_exceeded",
    "message": "Too many requests.",
    "doc_url": "https://getqr.com/account/api-docs#error-rate_limit_exceeded"
  }
}
```

Așteptați până la ora resetării înainte de a trimite alte cereri. Adăugați o variație aleatorie (jitter), astfel încât mai mulți workeri să nu reîncerce în același moment, și folosiți backoff exponențial pentru erorile `5xx`:

```javascript theme={null}
async function getqrFetch(url, options = {}, maxRetries = 5) {
  for (let attempt = 0; ; attempt++) {
    const res = await fetch(url, {
      ...options,
      headers: {
        Authorization: `Bearer ${process.env.GETQR_API_KEY}`,
        ...options.headers,
      },
    });

    const retryable = res.status === 429 || res.status >= 500;
    if (!retryable || attempt >= maxRetries) return res;

    // On 429, wait for Retry-After (seconds). Otherwise back off: 1s, 2s, 4s…
    const retryAfter = Number(res.headers.get("Retry-After"));
    const wait =
      res.status === 429 && retryAfter > 0
        ? retryAfter * 1000
        : 1000 * 2 ** attempt;
    const jitter = Math.random() * 250;

    await new Promise((r) => setTimeout(r, wait + jitter));
  }
}
```

> [!TIP]
>
> Reîncercați `POST /api/v1/qrs` doar cu un antet `Idempotency-Key`. Astfel, o reîncercare nu creează niciodată un al doilea cod QR. Consultați [Idempotență](https://docs.getqr.com/ro/api/introduction.md#idempotență).

## Rămâneți sub limită

* Urmăriți `X-RateLimit-Remaining` și încetiniți înainte să ajungă la 0.
* Folosiți [crearea QR în masă](https://docs.getqr.com/ro/api/endpoints/bulk-qr-creations.md) în locul unei cereri pentru fiecare cod QR.
* Obțineți până la 100 de rezultate pe pagină cu `pageSize=100`. Consultați [Paginare](https://docs.getqr.com/ro/api/introduction.md#paginare).
* Stocați în cache imaginile QR: descărcările returnează un `ETag`, așa că puteți trimite `If-None-Match` și primiți `304 Not Modified` când nu s-a schimbat nimic.

## Ce urmează

> [card] [Erori](https://docs.getqr.com/ro/api/errors.md)

> [card] [Coduri QR](https://docs.getqr.com/ro/api/endpoints/qr-codes.md)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.