Integrate image redaction into your app
Redaction projects process images and return a new redacted image. Use this for face blur, OCR text blur, custom word redaction, ID-document sensitive fields, and license plates.
Current API base URL: https://6p0ws7vu2f.execute-api.us-east-1.amazonaws.com/dev
Redaction API keys must be used from server code only. Redaction is available on paid plans and requires an API key attached to a redaction project.
SDK usage
Install @visoracloud/client and call redactImage() when your backend receives an upload. The SDK sends multipart data to POST /redact.
If you already uploaded an object through Visora scoped upload paths, call redactImageKey(). The key must belong to the same project as the API key.
REST API
POST /redact accepts either multipart file upload or JSON with an existing scoped image key.
Project settings
Settings are configured per redaction project in the dashboard. They are not sent on every API request, which keeps production requests simple and consistent.
| Setting | Type | Behavior |
|---|---|---|
| faceBlur | boolean | Blur or black-box detected faces. |
| textBlur | boolean | Master text redaction switch. With no categories it blurs all detected text; with categories it redacts only those data types. |
| licensePlateBlur | boolean | Redact license plate-like text detected in the image. |
| redactionStyle | blur | black_box | Choose visual treatment for redacted regions. |
| textCategories | id_document | pii | dates | financial | credentials | medical | sexual | profanity | Selective detection categories (require textBlur). When set, only these data types are redacted instead of all text. id_document and medical blur sensitive values near their labels; pii/dates/financial/credentials match value patterns (emails, phones, dates in any format, cards, IBAN/CLABE, API keys, JWTs). |
| customWords | string[] | Exact words or phrases your project wants to redact. |
| ignoredWords | string[] | Words that should not be redacted, useful for ID labels like name or address. |
| minConfidence | number | Minimum detection confidence from 0 to 100. Default is 80. |
Detection categories
textCategories requires textBlur. With text blur on and no categories, all detected text is blurred. Add categories to redact only specific data types instead. id_document and medical blur the sensitive value next to a label; the others match value patterns directly.
| Category | Detects |
|---|---|
| id_document | Identity-document fields (passport, license, national ID) — blurs sensitive values near their labels, not the whole document. |
| pii | Emails, phone numbers, addresses, IDs, and tax numbers (RFC, CURP, SSN). |
| dates | Dates in any format — DOB, issue, and expiry (01/02/2024, 2024-01-02, Jan 5 2024). |
| financial | Card numbers (Luhn-checked), bank account numbers, IBAN, and CLABE. |
| credentials | Passwords, API keys (sk_, ghp_, AWS), tokens, JWTs, and secrets. |
| medical | Patient IDs, record numbers, and case numbers near their labels. |
| sexual / profanity | Explicit or offensive wording. |
Pattern-based categories are deterministic but not perfect. Validate on real images for your use case — addresses and generic IDs are the hardest to detect.
Response model
The response includes the original object key, the redacted object key, a temporary 5 minute redactedImageUrl, aggregate counts, and normalized bounding boxes for the redacted regions.
Webhooks
Subscribe a redaction project endpoint to the redaction.completed event in the dashboard. Every successful POST /redact emits one. Deliveries are asynchronous, HMAC-signed, retried, and moved to a dead-letter queue after repeated failures, so they never block or slow the redaction response.
Each delivery carries visora-timestamp and visora-signature headers. The SDK verifies the signature and narrows event.data by event type, so no manual casting is required.
Redaction endpoints only receive redaction.completed. Moderation and review events are scoped to moderation projects.
Errors and constraints
| Status | Meaning |
|---|---|
| 400 | Missing image, invalid JSON, unsupported image type, empty file, or file larger than 8 MB. |
| 401 | Missing or invalid x-api-key. |
| 403 | Free plan, non-redaction project API key, revoked key, or imageKey outside the project scope. |
| 429 | Monthly usage limit exceeded. |
| 500 | Unexpected image download, image processing, storage, or detection failure. |
Supported upload types are JPEG and PNG. Multipart images must be 8 MB or smaller. Usage is counted against the same account-level monthly usage system as moderation.