# Kom i gang

> Opret en personlig API-nøgle i hubben, kontrollér den med GET /v1/access, og send din første tekst til Redact.

Vejledningen fører dig fra en personlig API-nøgle til dit første kald til Redact, med et kald til Chat som alternativ. Du skal bruge en terminal med curl.

## Før du begynder

- Du har en konto i en organisation, der har API-adgang hos komplai, og jeres administrator har tildelt dig det værktøj, du vil kalde (i hubben: **Organisation › Personer › Adgang til værktøjer**). Når du kan oprette en nøgle, viser hubbens menu **API og integrationer**. Gør den ikke det, så spørg jeres administrator.
- Et system, der kører uden en person, fx en robot, bruger i stedet organisationens integrationsnøgle, som komplai udsteder. Med den nøgle begynder du ved trin 2. [Organisationens integrationsnøgler](https://developers.komplai.dk/da/authentication#organisationens-integrationsnøgler) forklarer, hvordan I får en.
- Brug testdata, indtil organisationens behandling af personoplysninger er godkendt. Trin 2 viser, hvad der gælder for din nøgle. Se [Testdata](https://developers.komplai.dk/da/test-data).

## 1. Opret en personlig API-nøgle

1. [Log ind](https://hub.komplai.dk/login) i hubben, åbn **API og integrationer** i menuen, og vælg **API-nøgler**.
2. Vælg **Opret API-nøgle**.
3. Under **Hvad skal nøglen bruges til?** vælger du **Redact** og derefter **Fortsæt**. Valget sætter scopes `access:read`, `redact:detect` og `redact:process`.
4. Under **Giv nøglen et navn** skriver du navnet på det system, der skal bruge nøglen, vælger en **Gyldighed** på 7, 30, 90 eller 365 dage og vælger **Fortsæt**.
5. Under **Kontrollér adgangen** gennemgår du **Rettigheder** og vælger **Opret API-nøgle**.
6. Kopiér nøglen. Hubben viser den kun denne ene gang.

Til Chat vælger du **Chat og tekst** i trin 3, og under **Kontrollér adgangen** sætter du også flueben ved `access:read` under **Kontoadgang**, så nøglen kan foretage kaldet i trin 2.

> **Behandl nøglen som en adgangskode**
>
> Alle, der har nøglen, kan kalde API'et som dig inden for nøglens scopes. Gem den i jeres hemmelighedshåndtering, aldrig i kode, en URL, en sag eller en mail. Hvis den slipper ud, så tilbagekald den straks under **API-nøgler**.

Eksemplerne læser nøglen fra miljøvariablen `KOMPLAI_TOKEN`. Kommandoen her læser den i en terminal uden at vise den eller gemme den i din shell-historik. Indsæt nøglen, og tryk Enter:

```bash
read -rs KOMPLAI_TOKEN && export KOMPLAI_TOKEN
```

## 2. Kontrollér nøglen

GET /v1/access viser, hvad nøglen giver adgang til. Kaldet sender ingen tekst og kører ingen model.

```bash
curl https://api.komplai.dk/v1/access \
  -H "Authorization: Bearer $KOMPLAI_TOKEN"
```

Et svar med 200 betyder, at nøglen virker. Disse felter fortæller, hvad du kan bruge den til:

| Felt | Det fortæller |
| --- | --- |
| `scopes` | De scopes, nøglen har. |
| `services[].service` | Hvert værktøj, nøglen giver adgang til, fx `redact` eller `chat`. |
| `services[].processing.data_mode` | `synthetic`: brug kun testdata. `personal`: personoplysninger efter aftalen i `agreement_reference`. |
| `services[].hosting.processing.layers` | For Redact: hvor hvert lag behandler tekst. |
| `services[].limits.requests_per_minute` | Din grænse for kald pr. minut til værktøjet. |

[API-nøgler og autentificering](https://developers.komplai.dk/da/authentication) beskriver hele svaret. Hvis kaldet fejler:

- 401 [`api_key_required`](https://developers.komplai.dk/da/errors/api_key_required): headeren mangler, ofte fordi `KOMPLAI_TOKEN` er tom.
- 401 [`invalid_api_key`](https://developers.komplai.dk/da/errors/invalid_api_key): nøglen er ufuldstændig, udløbet eller tilbagekaldt, eller du har ikke længere værktøjet tildelt.
- 403 [`insufficient_scope`](https://developers.komplai.dk/da/errors/insufficient_scope): nøglen har ikke `access:read`. Opret en nøgle, der har det.

## 3. Foretag dit første kald

**Redact**

POST /v1/redact/detect finder personoplysninger i en tekst uden at ændre den. `mode` `ner` kører reglerne og NER-modellen. Send en testtekst:

```bash
curl https://api.komplai.dk/v1/redact/detect \
  -H "Authorization: Bearer $KOMPLAI_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"text": "Ring til Mette Kjærgaard Holm på 21 34 56 78.", "mode": "ner"}'
```

```json
{
  "findings": [
    {
      "start": 9,
      "end": 29,
      "type": "person",
      "value": "Mette Kjærgaard Holm",
      "confidence": "high",
      "source": "ner"
    },
    {
      "start": 33,
      "end": 44,
      "type": "phone",
      "value": "21 34 56 78",
      "confidence": "medium",
      "source": "regex"
    }
  ],
  "truncated": false,
  "degraded": false
}
```

NER-modellen fandt navnet, og reglerne fandt telefonnummeret. `start` og `end` tæller UTF-16-kodeenheder i din tekst.

Reglerne kører på komplais servere i Tyskland (EU), og NER kører på det standardsted, GET /v1/access markerer. Det er komplais servere i Tyskland, medmindre komplai har ændret det. Teksten holdes i hukommelsen, mens kaldet kører, og gemmes ikke. Kaldet bruger organisationens egne regler i Redact: et fund fra en regel har `source` og `type` sat til `custom`.
**Chat**

POST /v1/chat/completions sender beskeder til en model og returnerer hele svaret. `processing` `komplai-local` kører modellen på komplais lokale infrastruktur i Danmark uden betaling for AI. Svaret kan tage op til et minut, når den fælles kø har travlt.

```bash
curl https://api.komplai.dk/v1/chat/completions \
  -H "Authorization: Bearer $KOMPLAI_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"processing": "komplai-local", "messages": [{"role": "user", "content": "Hvor lang tid har jeg til at klage over en afgørelse om boligstøtte?"}], "max_tokens": 256}'
```

```json
{
  "id": "chatcmpl-8c1d5e3a-2f7b-4a9c-b6e0-3d4f5a6b7c8d",
  "object": "chat.completion",
  "created": 1792483200,
  "model": "qwen3.8-27b",
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "content": "Du har normalt 4 uger til at klage, regnet fra den dag du fik afgørelsen. Fristen står i afgørelsens klagevejledning."
      },
      "finish_reason": "stop"
    }
  ],
  "usage": {
    "prompt_tokens": 27,
    "completion_tokens": 33
  }
}
```

Svaret står i `choices[0].message.content`, og `model` nævner den model, der svarede. Uden `model` i kaldet bruges den model, du har valgt i hubben, ellers organisationens standardmodel. GET /v1/models?processing=komplai-local viser de modeller, du kan vælge. Hvis jeres organisation ikke tillader lokal infrastruktur via API'et, svarer kaldet 403 [`processing_choice_not_allowed`](https://developers.komplai.dk/da/errors/processing_choice_not_allowed).

## Næste skridt

- [Redact](https://developers.komplai.dk/da/tools/redact): pseudonymisér tekst med POST /v1/redact, sæt de oprindelige oplysninger tilbage, og send lange dokumenter som tekstjob.
- [API-nøgler og autentificering](https://developers.komplai.dk/da/authentication): scopes, fornyelse og tilbagekaldelse samt organisationens integrationsnøgler.
- [Fejl](https://developers.komplai.dk/da/errors) og [Grænser](https://developers.komplai.dk/da/limits): hvad du gør, når et kald fejler eller rammer en grænse.
- [API-reference](https://developers.komplai.dk/da/api): alle operationer med eksempler i curl, PowerShell, Python, JavaScript og C# og en konsol, hvor du kan prøve hvert kald.

---

https://developers.komplai.dk/da/get-started
