# Grænser

> Grænser for antal kald, AI-forbrug, størrelser og tid i komplais API, og hvad du gør, når et kald rammer en af dem.

GET /v1/access viser de grænser for kald og de tekstgrænser i Redact, der gælder for din nøgle. Tekstgrænser og positioner tæller UTF-16-kodeenheder, ligesom længden af en streng i JavaScript og .NET.

## Grænser for antal kald

Hvert kald tæller med i flere grænser pr. minut på én gang. Den første, der nås, svarer 429 [`rate_limited`](https://developers.komplai.dk/da/errors/rate_limited) med `Retry-After`, det antal sekunder, du skal vente, højst 60.

| Grænse | Kald pr. minut | Deles af |
| --- | --- | --- |
| Person | Fastsat af komplai for hvert værktøj i jeres organisation, højst 120. GET /v1/access viser den i `services[].limits.requests_per_minute`. | Alle en persons personlige API-nøgler og personens brug af hubben, på tværs af værktøjer |
| Integration | Fastsat af komplai for Redact i jeres organisation | Alle nøgler til en af organisationens integrationer, også efter komplai har udstedt en ny nøgle |
| Organisation | 120 | Alle i organisationen, personer og integrationer, i API'et og i apps |
| API | 300 | Alle organisationer, i API'et og i apps |
| IP-adresse | 300 for kald med en komplai-nøgle, 60 for andre kald | Alle kald fra samme IP-adresse |

Et 429 fra grænsen pr. IP-adresse har også `x-ratelimit-limit`, `x-ratelimit-remaining` og `x-ratelimit-reset`, som beskriver den grænse. En ekstra nøgle giver ikke flere kald: Dine nøgler deler din grænse.

Det tæller med:

- GET /v1/access tæller som ét kald.
- Hver læsning af et tekstjobs status eller resultat tæller med. Vent mindst 2 sekunder mellem læsningerne.
- DELETE /v1/redact/jobs/{id} tæller kun med i grænsen pr. IP-adresse.
- POST /v1/decide/batch tæller som ét kald for op til 100 tekster.
- GET /v1/openapi.json kræver ingen nøgle og tæller kun med i grænsen pr. IP-adresse.

Noget arbejde kører uden kø, så når alle pladser er optaget, svarer kaldet 429 [`processing_capacity_busy`](https://developers.komplai.dk/da/errors/processing_capacity_busy) med `Retry-After`: Hver API-proces kører organisationens regler i Redact i højst to arbejdsprocesser og læser højst to PDF- eller Word-filer ad gangen. Sprogmodellen på lokal infrastruktur har en fælles kø. Er den fuld, svarer et synkront kald 503 [`model_busy`](https://developers.komplai.dk/da/errors/model_busy), mens et tekstjob venter på sin tur.

## AI-forbrug

Et kald, der kører en model i komplais EU-cloud, måles til udbyderens pris og tæller med i:

- organisationens månedlige loft for AI-forbrug, som er aftalt med komplai
- organisationens egen grænse, når jeres administrator har sat en, der er lavere end loftet
- din personlige grænse, når administratoren har sat en. Den gælder kun personlige API-nøgler; organisationens integrationsnøgle har ingen.

Når den laveste af dem er nået, svarer kald i EU-cloud 429 [`ai_credit_exhausted`](https://developers.komplai.dk/da/errors/ai_credit_exhausted) eller [`person_ai_credit_exhausted`](https://developers.komplai.dk/da/errors/person_ai_credit_exhausted). Det hjælper ikke at vente: Det månedlige loft starter forfra næste måned. API'et flytter aldrig selv et kald til lokal infrastruktur; vælg lokal behandling i kaldet.

Lokal infrastruktur er uden betaling for AI. Jeres egne AI-forbindelser betaler I direkte til udbyderen, og de tæller ikke med i loftet. Jeres administrator kan se loftet og sætte organisationens egen grænse og personlige grænser under **Organisation › AI-forbrug › Grænser**. Du ser dit eget forbrug under **API og integrationer › Forbrug**.

## Størrelser

| Operation | Grænser |
| --- | --- |
| POST /v1/redact/detect | Tekst: 16.000 UTF-16-kodeenheder. Body: 100.000 bytes. |
| POST /v1/redact | Tekst: 750.000 UTF-16-kodeenheder, eller 2.000.000 med `Prefer: respond-async`. |
| POST /v1/redact/jobs | Tekst: 2.000.000 UTF-16-kodeenheder, omkring 800 normalsider à 2.400 tegn. |
| POST /v1/redact/restore | Tekst: 750.000 UTF-16-kodeenheder. Listen over betegnelser (`mapping`): 100.000 poster, 2.000.000 UTF-16-kodeenheder og 500 faste betegnelser. Teksten med originalerne sat tilbage: 8.000.000 UTF-16-kodeenheder. |
| POST /v1/redact/file (Beta) | Fil: 50 MiB efter afkodning og 2.000 PDF-sider. Filnavn: 255 tegn. Udtrukket tekst: 750.000 UTF-16-kodeenheder. |
| POST /v1/redact/file/jobs (Beta) | Som POST /v1/redact/file, med op til 2.000.000 UTF-16-kodeenheder udtrukket tekst. |
| Alle resultater fra Redact | 32 MiB. |
| POST /v1/chat/completions | 32 beskeder og 80.000 UTF-16-kodeenheder indhold. Body: 400.000 bytes. `max_tokens`: højst 32.768 og modellens `max_output_tokens`. `response_format`: 32.768 bytes, med et skema på højst 24 niveauer og 2.048 værdier. |
| POST /v1/decide (Beta) | 80.000 tegn som JSON. Body: 320.000 bytes. 64 spørgsmål med op til 32 kriterier hver. |
| POST /v1/decide/batch (Beta) | 100 tekster. 200.000 tegn som JSON. Body: 800.000 bytes. |
| POST /v1/coding/chat/completions (Beta) | Body: 2.000.000 bytes og 2.000.000 tegn som JSON. 512 beskeder og 64 værktøjer. `max_tokens` eller `max_completion_tokens`: højst 32.000. |

De enkelte felter har deres egne grænser, fx højst tre værdier i `detectors` eller fire strenge i `stop`. Hver operations side i [API-referencen](https://developers.komplai.dk/da/api) viser dem.

Redact begrænser også det arbejde, en tekst må kræve: kandidatfund, matchede tegn og koreferencematchning vokser med tekstens længde, og organisationens regler har en tidsgrænse, der vokser med teksten og antallet af regler. En tekst ud over grænserne svarer 413 [`processing_complexity_exceeded`](https://developers.komplai.dk/da/errors/processing_complexity_exceeded). Grænserne står i `text_contract.complexity_limits` i GET /v1/access. Fordi de vokser med teksten, hjælper det sjældent at dele den op.

## Tid

| Kald | Grænse | Når den nås |
| --- | --- | --- |
| POST /v1/redact, POST /v1/redact/file | 300 sekunder | En kørsel, som komplai vurderer ikke kan nå at blive færdig, afvises, før noget kører, med 413 [`use_job`](https://developers.komplai.dk/da/errors/use_job). En kørsel, der alligevel når grænsen, ender med 504 [`processing_timeout`](https://developers.komplai.dk/da/errors/processing_timeout). |
| Læsning af en PDF- eller Word-fil | 120 sekunder | 413 [`file_too_complex`](https://developers.komplai.dk/da/errors/file_too_complex) |
| POST /v1/chat/completions | 120 sekunder til modellens svar | 504 [`timeout`](https://developers.komplai.dk/da/errors/timeout) |
| POST /v1/decide, POST /v1/decide/batch | 30 sekunder | 502 [`service_unavailable`](https://developers.komplai.dk/da/errors/service_unavailable) |
| POST /v1/coding/chat/completions | 600 sekunder til hele svaret | 504 [`timeout`](https://developers.komplai.dk/da/errors/timeout), eller en fejlhændelse med `timeout`, når streamen er begyndt |
| Tekstjob | Ingen grænse, så længe jobbet kommer videre | Efter 65 minutter uden fremskridt ender jobbet med [`redact_job_stalled`](https://developers.komplai.dk/da/errors/redact_job_stalled). Efter tre afbrydelser ender det med [`redact_job_attempts_exhausted`](https://developers.komplai.dk/da/errors/redact_job_attempts_exhausted). |

Giv din HTTP-klient en tidsgrænse, der er lidt længere end kaldets, så du får komplais svar i stedet for din egen timeout. Brug et tekstjob eller `Prefer: respond-async` til lange tekster frem for at vente længere.

Et tekstjob og dets krypterede resultat gemmes, indtil du sletter jobbet, eller indtil dets `expiresAt`. Opbevaringstiden regnes fra, når jobbet slutter.

---

https://developers.komplai.dk/da/limits
