Agent-readable docs index: /llms.txt. Full docs in one file: /llms-full.txt. Download /docs.zip to grep all markdown files locally.

Custom-term glossaries

KINDI detects Saudi PII out of the box. A glossary lets you also mask terms that are specific to your organization and that no general detector would know about: internal project codenames, customer aliases, contract IDs, deal names, and the like.
Glossary hits mask as the entity type CUSTOM_TERM, are applied on /api/v1/mask, /api/v1/redact, and the file-redaction upload, and always win when they overlap a built-in detection.
Glossary terms are exempt from KINDI's confidence filters: a term you list is always masked when it appears. They sit at the top of the deduplication priority order, so a glossary match beats any overlapping built-in entity.

Two ways to apply a glossary

You can pass terms inline with a single request, or reference a persisted glossary you manage in the dashboard.
Pass a glossary array of term strings. These apply to this request only; nothing is stored.
{ "text": "Project Falcon ships Q3. Contact alias Bluebird.", "glossary": ["Project Falcon", "Bluebird"] }
Inline terms and a persisted glossary can be combined in one request; the inline terms apply on top of the referenced glossary.
Persisted glossaries marked enabled auto-apply to every request without your having to pass a glossary_id. An explicit glossary_id is always honoured, even if that glossary is disabled, so you can keep a glossary on standby and opt into it per request.

Match modes

Each glossary entry has a match_mode that controls how the term is found in your text:
ModeMatchesExample termMatches in text
word_boundary (default)The term as a whole word, including inflected formspatientpatient, patients, patient's
exactThe term verbatimPOL-987POL-987 only
substringThe term anywhere, even inside another wordacmeacme, acmecorp, myacme
word_boundary uses the English lemma and an Arabic light-stemmer, so inflected and pluralised forms of a term still match in both languages.
By default matching is case-insensitive (case_sensitive: false); set case_sensitive: true on an entry when case carries meaning (e.g. a ticker or code). An entry can be pinned to a locale (ar / en) or left language-agnostic.

On file redaction

The same two fields work on the file-redaction upload as multipart form fields: glossary (a comma-separated string) and glossary_id. Your terms are masked in the document just as they are in text requests.

Limits

  • 10 glossaries per account
  • 1,000 entries per glossary

Manage your glossaries

Create, edit, enable, and delete glossaries in the dashboard:
Open Glossaries
Manage your custom-term lists in the KINDI dashboard.
For programmatic management, see the Glossaries API reference.