Agent-readable docs index: /llms.txt. Full docs in one file: /llms-full.txt. Download /docs.zip to grep all markdown files locally.
Manage persisted custom-term glossaries. Reference a glossary by id on /api/v1/mask, /api/v1/redact, or the file-redaction upload. All endpoints accept either a browser session or a Bearer mk_live_… key.
/v1/glossaries Authorization: Bearer mk_live_...

The glossary object

{ "id": "f8a9b1c2-3d4e-5f6a-7b8c-9d0e1f2a3b4c", "name": "Project codenames", "enabled": true, "entries": [ { "term": "Project Falcon", "entity_type": "CUSTOM_TERM", "match_mode": "word_boundary", "case_sensitive": false, "locale": null } ] }

Entry fields

FieldTypeDefaultDescription
termstringThe term to match (min length 1).
entity_typestringCUSTOM_TERMThe entity type the term masks as.
match_modeexact | word_boundary | substringword_boundaryHow the term is found. See match modes.
case_sensitivebooleanfalseMatch case exactly when true.
localear | en | nullnullPin the entry to one language, or leave it language-agnostic.

Endpoints

MethodPathEffect
GET/v1/glossariesList your glossaries
POST/v1/glossariesCreate a glossary (201)
GET/v1/glossaries/{id}Fetch one glossary
PATCH/v1/glossaries/{id}Update name, enabled, and/or entries
DELETE/v1/glossaries/{id}Delete a glossary (204)
PATCH/v1/glossaries/{id}/entriesReplace the entry list

Create

curl -s -X POST https://api.kindi.me/v1/glossaries \ -H "Authorization: Bearer $KINDI_KEY" \ -H "Content-Type: application/json" \ -d '{ "name": "Project codenames", "entries": [ { "term": "Project Falcon" }, { "term": "Bluebird", "match_mode": "exact" } ] }'

Enable / disable

enabled glossaries auto-apply to every /mask and /redact request. Toggle it with PATCH /v1/glossaries/{id}:
curl -s -X PATCH https://api.kindi.me/v1/glossaries/$ID \ -H "Authorization: Bearer $KINDI_KEY" \ -H "Content-Type: application/json" \ -d '{ "enabled": false }'
A disabled glossary no longer auto-applies, but you can still opt into it on a single request by passing its glossary_id.

Replace entries

PATCH /v1/glossaries/{id}/entries swaps the whole entry list in one call:
curl -s -X PATCH https://api.kindi.me/v1/glossaries/$ID/entries \ -H "Authorization: Bearer $KINDI_KEY" \ -H "Content-Type: application/json" \ -d '{ "entries": [ { "term": "Project Condor" } ] }'

Limits & status codes

StatusDescription
200Success.
201Glossary created.
204Glossary deleted.
401Missing or invalid auth.
404Glossary not found, or not yours (no existence leak across users).
422max_glossaries_reached (10 per account) or a glossary over 1,000 entries, or a malformed entry.
Glossaries are scoped to your account. Requesting another user's glossary returns 404, not 403, so existence can't be probed.