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

# Pieprasījumu ierobežojumi

> Cik pieprasījumu varat nosūtīt un kā apstrādāt atbildes 429.

> [!NOTE]
>
> GetQR API ir beta versijā un pieejams atlasītām darbvietām. Līdz vispārējai izlaišanai detaļas var mainīties.

GetQR API ierobežo, cik pieprasījumu var nosūtīt katra API atslēga, lai viena integrācija nepalēninātu API visiem pārējiem.

## Ierobežojumi

| Ierobežojums | Vērtība |
| - | - |
| Pieprasījumi uz API atslēgu | 600 minūtē |

Ierobežojums tiek skaitīts slīdošā vienas minūtes logā un attiecas uz visiem galapunktiem kopā. [Stāvokļa pārbaudei](https://docs.getqr.com/lv/api/endpoints/health.md) atslēga nav vajadzīga, un tā netiek skaitīta.

## Ierobežojumu galvenes

Atbildes uz pieprasījumiem ar derīgu API atslēgu satur šīs galvenes, arī kļūdu atbildes:

| Galvene | Apraksts |
| - | - |
| `X-RateLimit-Limit` | Maksimālais pieprasījumu skaits vienā logā. |
| `X-RateLimit-Remaining` | Pašreizējā logā atlikušie pieprasījumi. |
| `X-RateLimit-Reset` | Kad logs tiek atiestatīts, kā Unix laikspiedols milisekundēs. |
| `Retry-After` | Sekundes līdz loga atiestatīšanai, noapaļotas uz augšu. Pagaidiet tik ilgi, pirms mēģināt vēlreiz. |

## Kad pārsniedzat ierobežojumu

Pārsniedzot ierobežojumu, API atbild ar `429`, kodu `rate_limit_exceeded` un tām pašām galvenēm:

```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"
  }
}
```

Pirms sūtāt nākamos pieprasījumus, pagaidiet līdz atiestatīšanas brīdim. Pievienojiet nejaušu nobīdi, lai vairāki procesi neatkārtotu pieprasījumus vienlaikus, un pie `5xx` kļūdām izmantojiet eksponenciālu aizturi:

```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]
>
> Atkārtojiet `POST /api/v1/qrs` tikai ar galveni `Idempotency-Key`. Tad atkārtojums nekad neizveido otru QR kodu. Skatiet [Idempotence](https://docs.getqr.com/lv/api/introduction.md#idempotence).

## Kā nepārsniegt ierobežojumu

* Sekojiet `X-RateLimit-Remaining` un palēniniet tempu, pirms tas sasniedz 0.
* Izmantojiet [lielapjoma QR izveidi](https://docs.getqr.com/lv/api/endpoints/bulk-qr-creations.md), nevis vienu pieprasījumu katram QR kodam.
* Iegūstiet līdz 100 rezultātiem lapā ar `pageSize=100`. Skatiet [Lapošana](https://docs.getqr.com/lv/api/introduction.md#lapošana).
* Kešojiet QR attēlus: lejupielādes atgriež `ETag`, tāpēc varat nosūtīt `If-None-Match` un saņemt `304 Not Modified`, ja nekas nav mainījies.

## Kas tālāk

> [card] [Kļūdas](https://docs.getqr.com/lv/api/errors.md)

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


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