---
title: "Filter a PDF and receive a redacted PDF in return."
method: POST
path: "/api/filter"
tags: ["Filter"]
---

# Filter a PDF and receive a redacted PDF in return.

`POST /api/filter`

Asynchronous by default. Returns 202 Accepted with `{"documentId":...}` and a `Location: /api/documents/{documentId}` header. Append `?async=false` to receive the redacted PDF bytes inline (200 OK). Requires the `redact` scope.

## Query parameters

- `c` string
- `p` string
- `filename` string
- `async` boolean

## Headers

- `Authorization` string, required

## Response `200`

Redacted PDF bytes (synchronous path).

## Other responses

- `202` — Job accepted; poll /api/documents/{documentId}/status and download from /api/documents/{documentId}.
- `400` — Bad Request
- `401` — Unauthorized.
- `405` — Method Not Allowed
- `413` — Content Too Large
- `415` — Unsupported Media Type
- `500` — Signing is enabled but the signing operation failed.
- `503` — Service Unavailable

## Changes

- **2026-08-04** `ee79a60eea42` — 1 info
  - added the non-success response with the status `415`
- **2026-08-03** `e46672d44401` — 1 info
  - added the non-success response with the status `413`

[Change history](https://skmtc.dev/philterd/apis/philter-api/changes/api/filter/post.md)

---

[API](https://skmtc.dev/philterd/apis/philter-api.md) · [All operations](https://skmtc.dev/philterd/apis/philter-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/philterd/philter-api/revisions/d90a12a66fa6/schema)
