62 detectors · ~40ms p50 · zero retention

Ship AI features without leaking customer data.

Redact PII on the way into your LLM prompts and rehydrate it on the way out — in a single round-trip, with deterministic tokens and zero data retention.

Try it live Read the docsnpmpip install peyeeye
01 / LIVE

Paste a prompt. Watch PII disappear.

Live calls to our API. Rate-limited per IP; nothing you paste is stored.
peyeeye.ai / playground / /v1/redact
POST

Original 01

300/1500 chars

Redacted (sent to LLM) 02

Hi team — my name is [PERSON_1] ([EMAIL_1]). I called from [PHONE_1] about order [ORDER_ID_1]. You still have my card on file ending 4242, expiring 08/28. Shipping address is [ADDRESS_1]1 6XE. Please cancel before the charge hits my Amex [PHONE_2] 56789.
PERSONEMAILPHONECARDSSNMRNDOBADDRESSZIPORDER_IDAMOUNTACCOUNTROUTING

Rehydrated response 03

Hi Ada, thanks for reaching out. I found your order #A-884217 has been cancelled. A confirmation is on its way to ada.lovelace@analytic-engines.com.
The model replies with tokens. peyeeye.ai swaps them back — client-side if you like.
6 entities detected·5 types·0ms latency🔒 zero bytes retained
02 / FLOW

Four calls. One clean round-trip.

Redact before the model, rehydrate after. Tokens are deterministic within a session, random across sessions.
Step 01 · Client

Send the raw prompt

Your app calls /v1/redact with the user's text. TLS 1.3, optional client-side pre-hashing.

// your app
peyeeye.redact({ text: userPrompt, locale: "en-US" })
Step 02 · peyeeye

Detect & tokenize

Hybrid detector (regex + ML NER) identifies 62 entity types. Each value is replaced with a stable placeholder like [PERSON_1].

{ redacted: "Hi [PERSON_1]…", session: "ses_7fA2…", entities: 14 }
Step 03 · LLM

Prompt the model

Forward the redacted text to OpenAI, Anthropic, Gemini, your fine-tune — anywhere. The model never sees a real name, number, or address.

anthropic.messages.create({ model: "claude-*", messages: [...] })
Step 04 · Client

Rehydrate

Pass the reply + session back through /v1/rehydrate. Tokens become real values again.

peyeeye.rehydrate({ text: llmResponse, session: "ses_7fA2…" })
03 / API

Two endpoints. SDKs for every runtime.

Idempotent, versioned, streaming-friendly. Wrap it or call it raw — up to you.

Opinionated defaults.
Escape hatches for everything.

The SDK wraps both endpoints into a single .shield() call that works with your existing LLM client. Or call /redact and /rehydrate yourself.

  • Streaming SSE with partial-token buffering
  • Deterministic pseudonyms within a session, random across
  • Stateless AEAD-sealed sessions — we never see your mapping
  • Custom detectors from a regex or a handful of examples
  • Allow-lists and per-org policies
  • Self-hosted via Docker Compose — same image as our cloud
# 1. Redact PII before sending to your LLM
curl -X POST https://api.peyeeye.ai/v1/redact \
  -H "Authorization: Bearer $PEYEEYE_KEY" \
  -H "Content-Type: application/json" \
  -d '{"text": "Hi, I\'m Ada. Email: ada@example.com", "locale": "en-US"}'

# → { "redacted": "Hi, I'm [PERSON_1]. Email: [EMAIL_1]", "session": "ses_…" }

# 2. After LLM replies, rehydrate
curl -X POST https://api.peyeeye.ai/v1/rehydrate \
  -H "Authorization: Bearer $PEYEEYE_KEY" \
  -d '{"text": "Hi [PERSON_1], we emailed [EMAIL_1].", "session": "ses_…"}'
04 / DETECTORS

62 PII entity types, out of the box.

Or define your own. Everything is composable.
A

Person name

PERSON
Ada Lovelace, Dr. Maya Chen
@

Email

EMAIL
ada@example.com
#

Phone number

PHONE
+1 (415) 555-0134
$

Credit card

CARD
4242 4242 4242 4242

SSN / NIN

SSN
432-11-8890

Street address

ADDRESS
221B Baker St, London

Date of birth

DOB
1984-03-12

Bank account

IBAN
GB82 WEST 1234 5698…

Medical record

MRN
MRN 00912774

IP address

IP
192.0.2.84

License plate

PLATE
7XRV 339

Passport number

PASSPORT
M12345678

Geo coordinates

GEO
37.7749, -122.4194

Company name

ORG
Acme Analytics Inc.

Order / invoice ID

ORDER
#A-884217
$

Currency amount

AMOUNT
$4,820.00

API key / secret

SECRET
sk_live_51H…

Tax ID / EIN

TAX
12-3456789
See full entity reference
05 / CUSTOM

Your domain has PII we don't know about.
Show us what it looks like.

Paste a few real examples of the PII you care about. peyeeye infers a detector and runs it against your test text, live — no training job, no model tuning, no ticket to data science.
Entity name
Positive examples3/3 · max reached
#A-884217×#A-007431×#A-122900×
Negative examples optionalHelp the detector avoid look-alikes
ADR-19×
Detector: live
0 matches pattern
Customer says ticket #A-884217 never shipped. Another user references #A-007431 and ticket #A-122900. Our internal ADR-19 is unrelated — do not redact it. Also mentioned: order #A-558104.
Edit the sample text above — detection re-runs live.
Generated definition
// Auto-generated from your examples
await peyeeye.entities.create({
  id: "ORDER_ID",
  kind: "compound",
  pattern: "",
  positives: [
    "#A-884217",
    "#A-007431",
    "#A-122900"
  ],
  negatives: [
    "ADR-19"
  ],
  confidence_floor: 0.9
});
05 / PRICING

Plans that scale with you.

Start free. Upgrade when your traffic — or your compliance reviewer — asks for it. Characters are per calendar month; overage is billed at the tier's rate.
FREE

Free

$0/ mo
Kick the tires, no card required.
  • 1M characters / month
  • 1 custom detector
  • Platform detectors only
  • Community support
  • Hard cap — no overage charges
Start free
BUILD

Build

$29/ mo
Small teams, production-ready.
  • 5M characters / month
  • 3 custom detectors
  • Streaming + policies
  • Email support
  • Overage at $5 / 1M chars
Choose Build
SCALE

Scale

$2,999/ mo
High volume with a lower blended rate.
  • 500M characters / month
  • Unlimited custom detectors
  • Dedicated rate pool · 99.95% SLA
  • Extended audit retention
  • Overage at $1.50 / 1M chars
Choose Scale

Start shipping AI features your legal team signs off on.

Free tier, no credit card. First redaction in under 90 seconds from a fresh terminal.

Read the docs
$ curl -X POST https://api.peyeeye.ai/v1/redact \
  -H "Authorization: Bearer $KEY" \
  -d '{"text":"Call me at 555-0199"}'

{
  "redacted": "Call me at [PHONE_1]",
  "session": "ses_7fA2k…",
  "latency_ms": 38
}
peyeeye.ai — PII redaction & rehydration, as an API