PII/PHI Redaction & Detection
Scrub personal and health information out of free text before you log it, store it, or send it to a third party.
The problem
Any team handling customer support transcripts, chat logs, form submissions, or documents that flow through third-party tools (logging, analytics, LLM prompts) eventually needs a scrubbing step before that text leaves their hands.
Who it's for
Teams that route customer text through logging, analytics, or third-party/LLM tools and need a scrubbing step in front of it — support platforms, chat and helpdesk tools, and internal data pipelines.
Use cases
- Scrubbing support transcripts before they're logged or sent to analytics
- Redacting sensitive fields from form submissions before storage
- Sanitizing text before it's passed into a third-party LLM prompt
What it does
Send free text and get back a redacted version with every detected sensitive entity replaced by a `[REDACTED_TYPE]` placeholder, plus a structured list of every detected entity — type, exact original value, and character offsets into the original text — so a caller can log, mask, or audit precisely what was found. Detects seven entity types: person names, email addresses, phone numbers, physical addresses, Social Security Numbers, credit card numbers, and dates of birth.
Example
Request
POST /redact
{ "text": "Hi, this is Jane. Reach me at jane.doe@example.com or 555-123-4567." }
Response
{
"redacted_text": "Hi, this is Jane. Reach me at [REDACTED_EMAIL] or [REDACTED_PHONE].",
"entities": [
{ "type": "EMAIL", "value": "jane.doe@example.com", "start": 30, "end": 51 },
{ "type": "PHONE", "value": "555-123-4567", "start": 55, "end": 67 }
]
}
Pricing
A free tier covers light testing. Paid tiers scale by monthly request volume, with overage priced per additional request beyond your plan's included volume.
Privacy commitment — the load-bearing promise of this API. By definition, every request to this endpoint contains text that may include sensitive personal or health information. This API does not store submitted text beyond what’s needed to process the request: no database, no logging of request bodies, and no retention of input text, output text, or detected entities once the response is returned.
Detected values are located deterministically in the real input text rather than trusted
from the model’s own character counting, so offsets always line up exactly with the
original string. Callers that need the raw value scrubbed from their own logs should
redact it themselves before logging a raw API response.
