Skip to content

File Anonymization

Asynchronous endpoints for anonymizing documents. Upload a file, receive a job ID, then poll for the result.

Supported Formats

FormatEndpointExtension
PDFPOST /anonymize/pdf.pdf
WordPOST /anonymize/docx.docx
CSVPOST /anonymize/csv.csv
ExcelPOST /anonymize/excel.xlsx

Common Endpoint

POST /anonymize/{format}

Request

Headers

HeaderValue
Content-Typemultipart/form-data
AuthorizationBearer <token> (hosted demo only)

Form Fields

FieldTypeRequiredDescription
filefileYesFile to anonymize
entitiesstringNoComma-separated entity type names
start_indexintNoStarting placeholder index (default 0)
custom_entitiesstringNoJSON string: [{"original":"term","placeholder":"NAME"}]

Response

202 Accepted

json
{
  "job_id": "550e8400-e29b-41d4-a716-446655440000",
  "message": "PDF anonymization job started."
}

Fields

FieldTypeDescription
job_idstringUUID for tracking the job
messagestringConfirmation message

Examples

cURL

bash
curl -X POST https://demo.questa-ai.online/anonymize/pdf \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -F "file=@document.pdf" \
  -F "entities=PERSON_NAME,EMAIL_ADDRESS"

Python

python
import requests

url = "https://demo.questa-ai.online/anonymize/pdf"
headers = {"Authorization": "Bearer YOUR_API_TOKEN"}
files = {"file": open("document.pdf", "rb")}
data = {"entities": "PERSON_NAME,EMAIL_ADDRESS,PHONE_NUMBER"}

response = requests.post(url, headers=headers, files=files, data=data)
job = response.json()
print(f"Job ID: {job['job_id']}")

JavaScript

javascript
const formData = new FormData();
formData.append("file", fileInput.files[0]);
formData.append("entities", "PERSON_NAME,EMAIL_ADDRESS");

const response = await fetch("https://demo.questa-ai.online/anonymize/pdf", {
  method: "POST",
  headers: { Authorization: "Bearer YOUR_API_TOKEN" },
  body: formData,
});

const { job_id } = await response.json();

Questa AI documentation.