> ## Documentation Index
> Fetch the complete documentation index at: https://docs.cekura.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# PII Redaction

> Automatically detect and remove sensitive information from transcripts and audio recordings

export const CopyPageButton = () => {
  if (typeof window !== 'undefined') {
    setTimeout(function () {
      if (document.getElementById('ck-tools')) return;
      var anchor = document.getElementById('content-area') || document.querySelector('.mdx-content');
      if (!anchor) return;
      if (!document.getElementById('ck-style')) {
        var s = document.createElement('style');
        s.id = 'ck-style';
        s.textContent = '#ck-tools{position:absolute;top:6px;right:0;z-index:100;font-family:inherit;}' + '.ck-row{display:inline-flex;align-items:stretch;border:1px solid rgba(0,0,0,0.15);border-radius:8px;overflow:hidden;background:#fff;}' + ':root.dark .ck-row{background:rgba(255,255,255,0.06);border-color:rgba(255,255,255,0.12);}' + '.ck-btn{padding:5px 12px;border:none;background:none;cursor:pointer;font-size:13px;font-weight:500;font-family:inherit;color:#374151;}' + ':root.dark .ck-btn{color:#d1d5db;}' + '.ck-btn:hover{background:rgba(0,0,0,0.04);}' + ':root.dark .ck-btn:hover{background:rgba(255,255,255,0.06);}' + '.ck-chevron{padding:5px 8px;border:none;background:none;cursor:pointer;font-size:14px;font-family:inherit;color:#374151;}' + ':root.dark .ck-chevron{color:#d1d5db;}' + '.ck-chevron:hover{background:rgba(0,0,0,0.04);}' + ':root.dark .ck-chevron:hover{background:rgba(255,255,255,0.06);}' + '.ck-divider{width:1px;background:rgba(0,0,0,0.12);flex-shrink:0;}' + ':root.dark .ck-divider{background:rgba(255,255,255,0.12);}' + '.ck-dd{position:absolute;top:calc(100% + 4px);right:0;min-width:180px;background:#fff;border:1px solid rgba(0,0,0,0.12);border-radius:8px;box-shadow:0 4px 12px rgba(0,0,0,0.1);padding:4px;display:none;z-index:200;}' + ':root.dark .ck-dd{background:#1f2937;border-color:rgba(255,255,255,0.1);box-shadow:0 4px 16px rgba(0,0,0,0.35);}' + '.ck-item{display:block;width:100%;padding:7px 12px;border:none;background:none;border-radius:6px;cursor:pointer;font-size:13px;font-family:inherit;text-align:left;color:#374151;}' + ':root.dark .ck-item{color:#d1d5db;}' + '.ck-item:hover{background:rgba(0,0,0,0.05);}' + ':root.dark .ck-item:hover{background:rgba(255,255,255,0.07);}';
        document.head.appendChild(s);
      }
      var wrap = document.createElement('div');
      wrap.id = 'ck-tools';
      var row = document.createElement('div');
      row.className = 'ck-row';
      var mainBtn = document.createElement('button');
      mainBtn.className = 'ck-btn';
      mainBtn.textContent = 'Copy page';
      var divider = document.createElement('span');
      divider.className = 'ck-divider';
      var chevron = document.createElement('button');
      chevron.className = 'ck-chevron';
      chevron.textContent = '▾';
      var dd = document.createElement('div');
      dd.className = 'ck-dd';
      function closeDD() {
        dd.style.display = 'none';
      }
      function openDD() {
        dd.style.display = 'block';
      }
      chevron.onclick = function (e) {
        e.stopPropagation();
        if (dd.style.display === 'block') {
          closeDD();
        } else {
          openDD();
        }
      };
      document.addEventListener('click', function (e) {
        if (!e.target.closest('#ck-tools')) {
          closeDD();
        }
      });
      document.addEventListener('keydown', function (e) {
        if (e.key === 'Escape') {
          closeDD();
        }
      });
      function makeItem(label, fn) {
        var b = document.createElement('button');
        b.className = 'ck-item';
        b.textContent = label;
        b.onclick = function () {
          fn();
          closeDD();
        };
        return b;
      }
      function getMarkdown() {
        var walk = function (node) {
          if (!node) return '';
          if (node.nodeType === 3) return node.textContent || '';
          if (node.nodeType !== 1) return '';
          var tag = node.tagName.toLowerCase();
          var skip = ['script', 'style', 'svg', 'noscript', 'button', 'iframe'];
          if (skip.indexOf(tag) !== -1) return '';
          if (node.id === 'ck-tools') return '';
          var ch = Array.from(node.childNodes).map(walk).join('');
          if (tag === 'h1') return '\n# ' + ch.trim() + '\n\n';
          if (tag === 'h2') return '\n## ' + ch.trim() + '\n\n';
          if (tag === 'h3') return '\n### ' + ch.trim() + '\n\n';
          if (tag === 'p') return '\n' + ch.trim() + '\n\n';
          if (tag === 'pre') return '\n```\n' + node.textContent.trim() + '\n```\n\n';
          if (tag === 'li') return '- ' + ch.trim() + '\n';
          if (tag === 'code') return '`' + ch.trim() + '`';
          return ch;
        };
        var content = document.querySelector('.mdx-content') || document.getElementById('content-area') || document.body;
        return walk(content).replace(/\n\n\n+/g, '\n\n').trim();
      }
      function copyMd() {
        var md = getMarkdown();
        navigator.clipboard.writeText(md).then(function () {
          mainBtn.textContent = 'Copied!';
          setTimeout(function () {
            mainBtn.textContent = 'Copy page';
          }, 2000);
        });
      }
      function viewMd() {
        var md = getMarkdown();
        var safe = md.split('&').join('&amp;').split('<').join('&lt;').split('>').join('&gt;');
        var html = '<!DOCTYPE html><html><head><meta charset="utf-8"><style>body{font-family:monospace;max-width:860px;margin:40px auto;padding:0 24px;line-height:1.7;white-space:pre-wrap;word-wrap:break-word}</style></head><body>' + safe + '</body></html>';
        window.open(URL.createObjectURL(new Blob([html], {
          type: 'text/html'
        })), '_blank');
      }
      function openClaude() {
        var prompt = 'Can you read this Cekura docs page ' + window.location.href + ' so I can ask you questions?';
        window.open('https://claude.ai/new?q=' + encodeURIComponent(prompt), '_blank');
      }
      mainBtn.onclick = copyMd;
      dd.appendChild(makeItem('Copy page', copyMd));
      dd.appendChild(makeItem('View as Markdown', viewMd));
      dd.appendChild(makeItem('Open in Claude', openClaude));
      row.appendChild(mainBtn);
      row.appendChild(divider);
      row.appendChild(chevron);
      wrap.appendChild(row);
      wrap.appendChild(dd);
      anchor.style.position = 'relative';
      anchor.insertBefore(wrap, anchor.firstChild);
    }, 50);
  }
  return null;
};

<CopyPageButton />

## What is PII Redaction?

PII redaction automatically detects and removes sensitive information from both transcripts and audio recordings. This ensures compliance with privacy and security requirements while maintaining the overall context of conversations.

### Example

**Original:**

```
[00:04] Main Agent: Thank you for calling the office of Guernsey County Sheriff, Jeffrey d Peyton. How can I help?
```

**Redacted:**

```
[00:04] Main Agent: Thank you for calling the office of <LOCATION>, <PERSON>. How can I help?
```

**Audio Example:**

<div style={{ display: 'flex', justifyContent: 'center', margin: '0px 0' }}>
  <iframe src="https://drive.google.com/file/d/14B2W9JaHeWAAxgpMRFh6trsKyxF9wHB_/preview" width="65%" height="70" frameBorder="0" allow="autoplay" style={{ borderRadius: '8px' }} />
</div>

## How It Works

<Tabs>
  <Tab title="Transcript Redaction">
    We identify the entities to be redacted from the call using state of the art models. We then replace the text with relevant placeholders.

    **Example tokens:**

    * `<PERSON>` - Person names
    * `<LOCATION>` - Geographic locations
    * `<EMAIL>` - Email addresses
    * `<PHONE>` - Phone numbers
    * `<SSN>` - Social Security Numbers
    * `<CREDIT_CARD>` - Credit card numbers
  </Tab>

  <Tab title="Audio Redaction">
    We identify the entities to be redacted from the call using state of the art models. We then replace the audio segments with relevant placeholders.

    <Note>
      Audio redaction ensures that even if someone accesses the recording file directly, they cannot hear sensitive information.
    </Note>
  </Tab>
</Tabs>

## Using Redaction

Add the `redact_fields` parameter when sending calls to the [observe API endpoint](/api-reference/observability/send-calls):

```json theme={null}
{
  "agent": "your_agent_id",
  "transcript_json": [...],
  "voice_recording_url": "https://...",
  "redact_fields": ["phone_number", "email_address", "ssn"]
}
```

<Note>
  If `redact_fields` is not provided or is an empty array, no redaction will occur.
</Note>

## Available Fields

* `person_name` - Person names
* `age` - Age information
* `phone_number` - Phone numbers
* `email_address` - Email addresses
* `date` - Specific dates
* `time` - Time information
* `location` - Physical locations and addresses
* `origin` - Origin information
* `gender_sexuality` - Gender and sexuality information
* `physical_attribute` - Physical descriptions
* `occupation` - Occupation details
* `username` - Usernames
* `password` - Passwords
* `ip_address` - IP addresses
* `url` - URLs
* `filename` - File names
* `event` - Event information
* `vehicle_id` - Vehicle identification numbers
* `dob` - Date of birth
* `healthcare_number` - Healthcare identification numbers
* `medical_professional` - Medical professional information
* `credit_card` - Credit card numbers
* `account_number` - General account numbers
* `bank_account` - Bank account numbers
* `money` - Financial amounts
* `ssn` - Social Security Numbers
* `passport_number` - Passport numbers
* `driver_license` - Driver's license numbers
* `numerical_pii` - Other numerical PII

## Pricing

<Info>
  Redacting any fields costs **0.4 credits per minute**, regardless of how many fields are selected.
</Info>

## Implementation Examples

<CodeGroup>
  ```json Healthcare Compliance theme={null}
  {
    "agent": "agent_healthcare",
    "transcript_json": [...],
    "voice_recording_url": "https://recordings.example.com/medical_call.mp3",
    "redact_fields": [
      "person_name",
      "dob",
      "healthcare_number",
      "medical_professional",
      "location"
    ]
  }
  ```

  ```json Financial Services theme={null}
  {
    "agent": "agent_banking",
    "transcript_json": [...],
    "voice_recording_url": "https://recordings.example.com/banking_call.mp3",
    "redact_fields": [
      "person_name",
      "phone_number",
      "email_address",
      "credit_card",
      "ssn",
      "bank_account"
    ]
  }
  ```

  ```json Basic Redaction theme={null}
  {
    "agent": "agent_123",
    "transcript_json": [...],
    "voice_recording_url": "https://recordings.example.com/call_456.mp3",
    "redact_fields": ["phone_number", "email_address"]
  }
  ```
</CodeGroup>
