Veil API

The proposed (not yet deployed) browser integration uses three steps: issue a bounded private upload, send it directly to S3, and request image processing.

Download the proposed OpenAPI 3.1 contract.

POST /v1/uploads accepts JSON with contentType and size, returning an opaque uploadId and signed S3 POST fields.

POST /v1/obfuscations accepts uploadId and optional cellCount. It returns a temporary signed result URL and expiration timestamp.

The existing POST /api/obfuscate multipart endpoint is served by DigitalOcean during migration. Compatibility and deprecation remain a separate cutover gate.

API contract status: staging candidate; not yet production-ready.