Mask PII before it reaches any LLM.
Our PII scanner runs on every request in the guardrail pipeline — before the provider call. Redact, tokenize, replace with synthetic data, or block. Nothing sensitive leaves your boundary by accident.
Four handling modes
Redact
Replace each detected entity with a typed placeholder like <EMAIL_ADDRESS> before the provider ever sees it. Irreversible and simple.
Tokenize
Swap PII for reversible tokens, then de-anonymize the model's response so the real values reappear only in the final output your app receives.
Synthetic
Substitute realistic fake values (names, emails, cards) so the model keeps full context while real data never leaves your boundary.
Block
Reject the request outright when sensitive entities are present — for workloads that must never transmit PII at all.
Detected entities
- ✓Person names
- ✓Email addresses
- ✓Phone numbers
- ✓Credit card numbers
- ✓Indonesian NIK (KTP)
- ✓Singapore NRIC / FIN
- ✓IP addresses
- ✓URLs
- ✓Input scanned before the provider call
- ✓Output re-scanned for leaked PII
- ✓Per-key entity toggles
- ✓Every result in the X-Anoman-Guardrail-Pii header
Masked automatically, in-line
No SDK changes. Call the OpenAI-compatible endpoint as usual — Anoman scans, masks, and (in tokenize mode) restores the values on the way back.
curl https://api.anoman.io/v1/chat/completions \
-H "Authorization: Bearer anm-sk-..." \
-d '{
"model": "gpt-4o",
"messages": [{
"role": "user",
"content": "Email [email protected] about invoice, NIK 3201234567890001"
}]
}'Related: the full guardrails pipeline, prompt-injection protection, and data-residency compliance.