Skip to content
Seal
Esc
↑↓navigate↵open⌘Jpreview

Permanently redact regions of a draft PDF

Removes content-stream operators inside each region — text runs, images, fully-contained vector paths, and annotations are deleted from the emitted bytes (not just painted over). Signature fields intersecting a region are removed. Document metadata is purged. Response includes a redaction receipt (scrubbed_text) listing the literal strings that were removed. Percent rects share the same 0–100 space as signature fields. Deterministic in-worker engine — not Seal AI.

POST/documents/pdf/redact
Authorization
AuthorizationBearer token · headerrequired

Pass your API key as a Bearer token. API keys are scoped to specific operations — configure scopes in your organization's Settings → Developer → API Keys.

Request body
requiredapplication/json
idstringrequired
regionsobject[]required
min items 1 · max items 200
Show properties
Array of object
pageintegerrequired
min 1
xnumberrequired
min 0 · max 100
ynumberrequired
min 0 · max 100
widthnumberrequired
min 0.5 · max 100
heightnumberrequired
min 0.5 · max 100
Responses
200

Redacted

successboolean
storage_idstring
regions_appliedinteger
ops_scrubbedinteger
annots_scrubbedinteger
fields_removedinteger
scrubbed_textstring

Strings removed from the bytes (receipt)

warningsstring[]
Try it
Server
Authorization
Bodyapplication/json
Request
curl -X POST "https://api.seal.nyc/api/v1/documents/pdf/redact" \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
  "id": "string",
  "regions": [
    {
      "page": 1,
      "x": 0,
      "y": 0,
      "width": 0.5,
      "height": 0.5
    }
  ]
}'
Response
{
  "success": true,
  "storage_id": "string",
  "regions_applied": 0,
  "ops_scrubbed": 0,
  "annots_scrubbed": 0,
  "fields_removed": 0,
  "scrubbed_text": "string",
  "warnings": [
    "string"
  ]
}