Test data
Until your organisation's agreement approves personal data for a tool, send only test data to it: invented or synthetic text with no real people in it. That applies to the API, to the hub and to the Try it consoles on this site.
Check what you may send
Each tool has a data mode, set for your whole organisation. A key reads the mode of the tools it reaches, and GET /v1/access shows it in services[].processing.data_mode, and at the top level when the key reaches one service:
curl https://api.komplai.dk/v1/access \
-H "Authorization: Bearer $KOMPLAI_TOKEN"{
"services": [
{
"service": "redact",
"processing": {
"data_mode": "synthetic",
"agreement_reference": null
}
}
],
"processing": {
"data_mode": "synthetic"
}
}data_mode | What you may send |
|---|---|
synthetic | Test data only |
personal | Personal data, under the data processing agreement in agreement_reference |
The hub shows the same. Under APIs and integrations › API keys (/api-access), open Connection details: the column Permitted material says Test data only or Personal data approved for each service. Data protection (/governance) shows Permitted data for each tool.
komplai records the data mode on your organisation's agreement. Test data is the default, and personal data needs a data processing agreement that is active and selected on the agreement. A key cannot change the mode, and the API does not read your text to decide whether it holds personal data: the mode is the limit your organisation has agreed to. Processing approval shows where an administrator reads it.
Where test data has its own rules
- Redact text jobs. With test data and no storage policy, the result of a text job is kept for 1 hour after the job ends. Personal data in text jobs also needs a storage policy agreed with komplai; without one, the job is refused with approved_redact_storage_policy_required.
- Chat on local infrastructure. A Chat call that names
processing: "komplai-local"runs on local infrastructure under test data only, also when your organisation's Chat runs in EU cloud. Leaveprocessingout to run under your organisation's Chat processing and its data mode. - Register lookup Beta: use test data only with Register lookup.
- Free models on your own AI connections. The provider of a free model, such as OpenRouter's
openrouter/freerouter, may store and use what is sent. Use such a connection for tests, synthetic data and ideas.
Calls with test data count like any other call: towards the request limits and, in EU cloud, towards your organisation's monthly AI spending cap. See Limits.
The examples in the API reference
The API reference uses one invented person throughout, so you can send the examples as they are and compare the answers:
| Field | Value |
|---|---|
| Name | Mette Kjærgaard Holm |
| CPR number | 120385-1234 |
| Address | Fiktivvej 12, 8000 Aarhus C |
| Phone | 21 34 56 78 |
| mette.holm@example.invalid |
This call pseudonymises the full example text with rules and NER. It needs a key with redact:process:
curl https://api.komplai.dk/v1/redact \
-H "Authorization: Bearer $KOMPLAI_TOKEN" \
-H "Content-Type: application/json" \
-d '{"text": "Borgeren Mette Kjærgaard Holm, cpr-nr. 120385-1234, bor på Fiktivvej 12, 8000 Aarhus C. Hun kan kontaktes på 21 34 56 78 eller mette.holm@example.invalid.", "detectors": ["regex", "ner"], "include": ["mapping"]}'{
"redacted": "Borgeren [PERSON-1], cpr-nr. [CPR-1], bor på [ADRESSE-1]. Hun kan kontaktes på [TLF-1] eller [EMAIL-1].",
"mapping": {
"[PERSON-1]": "Mette Kjærgaard Holm",
"[CPR-1]": "120385-1234",
"[ADRESSE-1]": "Fiktivvej 12, 8000 Aarhus C",
"[TLF-1]": "21 34 56 78",
"[EMAIL-1]": "mette.holm@example.invalid"
}
}The other examples test one thing each:
- Sagsbehandleren talte med Mette Kjærgaard Holm om hendes diabetes. Health data in free text, which only the language model (
llm) finds. - Gammelt nummer 150677-8642, erstatningspersonnummer 720385-1234 og cpr-nr. 120385-1234. Two numbers that look like CPR numbers but whose digits do not decode to a plausible birth date. They stay in the text and are listed in
skipped. Such a number can still identify a person, so treat it as personal data. - Ring til Mette Kjærgaard Holm på 21 34 56 78. A name and a phone number for POST /v1/redact/detect.
- afgoerelse.pdf, a two-page fictitious PDF with a text layer, for file input Beta.
- A letter from Mette asking for a copy of her application for a building permit, for Decide Beta.
- Hvor lang tid har jeg til at klage over en afgørelse om boligstøtte? A question with no personal data, for Chat.
Write your own test data the same way: invented names and street names, and e-mail addresses under example.invalid, a domain that can never reach a mailbox. Do not take a real case and change a few details.
Try it consoles
Each operation in the API reference has a Try it console, filled in with the operation's first example. Calls are real: komplai processes what you send, each call counts towards your key's limits, and processing in EU cloud counts towards your organisation's monthly AI spending cap. The key you paste stays on the page until you leave it and is sent only to the API.