apyhub
IMAGE PROCESSING · SECURITY & PRIVACY

Pixelize Face API

Hosted on ApyHub

What it does

Face Pixelizer detects faces in an image and returns a pixelized version for privacy protection. Send either an image file or a publicly accessible image URL, and get back a processed image URL or a download response depending on the endpoint you use.

Use Face Pixelizer when you need to hide identities in user-uploaded photos, redact faces in moderation workflows, or publish privacy-safe screenshots. It accepts JPEG, PNG, and GIF images through file upload or image URL input. The /file/url and /url endpoints return an S3 presigned URL when processing succeeds, while /file/download and /url/download are designed for direct download responses.

The responses are simple and explicit. If no faces are detected, the API returns a message field with that result instead of a processed image. That makes it straightforward to handle images that do not need redaction and to branch your workflow without guessing.

Face Pixelizer fits into content pipelines where face anonymization needs to happen before storage, sharing, or review. Pass in the image source, inspect the response, and route pixelized assets into your app or moderation system.

▣ ENDPOINT 01 / 04
POST
Upload image file → S3 presigned URL
http://localhost:8080/apyhub/pixelize/file/url
QUICKSTARTGUIDE

Quickstart

Upload an image file to pixelize it.

curl -X POST "http://localhost:8080/apyhub/pixelize/file/url" \
  -H "apy-token: $APY_TOKEN" \
  -F "file=@/path/to/image.jpg"

What you'll get back

Returns a JSON object with either a url string field containing the pixelized image URL, or a message string field with a status/error message.

{
  "url": "https://apyhub-outgoing.s3.amazonaws.com/pixelize/c60cd4f195514f4897eab87839ac48e4_pixelized_20260720_210917%20%281%29.jpg?AWSAccessKeyId=AKIARJOHWS6LWTUUGYPI&Signature=CkLp1vNYME0lrUMSMWVllE06E9w%3D&Expires=1786375119"
}
TRY ITLIVE · 50 ATOMS
Loading your default key…
The full key is used to call the gateway and stays in this tab — never sent to orbit or saved.
Max 100MB total per request (all files combined). Larger? Use this API's URL-based endpoint instead, if it has one.
body*
Image file to process. Supported formats: JPEG, PNG, GIF.

About this endpoint

What it does

Uploads an image file for processing and returns either a presigned S3 URL for the pixelized image or a message explaining why no output URL was produced.

Request Body

ParameterTypeMandatoryDescription
fileStringYesImage file to process. Supported formats: JPEG, PNG, GIF. Binary file upload.

Response

Returns one of two JSON object shapes on success: either an object with a url string field containing a URI, or an object with a message string field. The schema does not define a single shared wrapper or a success status code.

ParameterTypeMandatoryDescription
urlStringNoPresigned S3 URL for the processed image. Format: URI.
messageStringNoMessage returned when no faces are detected in the provided image.

Body

Name
Type
Description
bodyREQUIRED
object

Max 100MB total per request (all files combined). Larger? Use this API's URL-based endpoint instead, if it has one.

▣ ENDPOINT 02 / 04
POST
Image URL → pixelized image download
http://localhost:8080/apyhub/pixelize/url/download
QUICKSTARTGUIDE

Quickstart

Download an image from a public URL and process it with Pixelize.

curl -X POST "http://localhost:8080/apyhub/pixelize/url/download" \
  -H "apy-token: $APY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"image_url":"https://assets.apyhub.com/samples/sample.jpg"}'

What you'll get back

Returns a JSON object with an optional message string field describing the result.

{
  "message": "No faces detected in the provided image."
}
TRY ITLIVE · 50 ATOMS
Loading your default key…
The full key is used to call the gateway and stays in this tab — never sent to orbit or saved.
body*
Publicly accessible image URL. Supported formats: JPEG, PNG, GIF.

About this endpoint

What it does

Downloads a pixelized version of an image from a publicly accessible URL. You send the source image URL in the request body, and the response returns a JSON object with a message string.

Request Body

ParameterTypeMandatoryDescription
image_urlStringYesPublicly accessible image URL. Must be a URI. Supported formats: JPEG, PNG, GIF.

Response

Returns a JSON object with a message string field.

ParameterTypeMandatoryDescription
messageStringNoResponse message returned by the endpoint.

Body

Name
Type
Description
bodyREQUIRED
object
▣ ENDPOINT 03 / 04
POST
Image URL → S3 presigned URL
http://localhost:8080/apyhub/pixelize/url
QUICKSTARTGUIDE

Quickstart

Send a public image URL to pixelize it.

curl -X POST "http://localhost:8080/apyhub/pixelize/url" \
  -H "apy-token: $APY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"image_url":"https://assets.apyhub.com/samples/sample.jpg"}'

What you'll get back

Returns a JSON object with either a url string for the pixelized image, or a message string if the image could not be processed.

{
  "url": "https://s3.amazonaws.com/bucket/pixelized_photo.jpg"
}

Or:

{
  "message": "No faces detected in the provided image."
}
TRY ITLIVE · 50 ATOMS
Loading your default key…
The full key is used to call the gateway and stays in this tab — never sent to orbit or saved.
body*
Publicly accessible image URL. Supported formats: JPEG, PNG, GIF.

About this endpoint

What it does

Takes a publicly accessible image URL and processes the image for pixelization. On success, it returns either a presigned S3 URL to the generated image or a message explaining that no faces were detected.

Request Body

ParameterTypeMandatoryDescription
image_urlStringYesPublicly accessible image URL. Supported formats: JPEG, PNG, GIF. Must be a URI.

Response

Returns a JSON object. The success response schema allows one of two top-level shapes: an object with a url string field containing a URI, or an object with a message string field.

ParameterTypeMandatoryDescription
urlStringNoPresigned S3 URL to the generated pixelized image. Must be a URI.
messageStringNoInformational message returned when no faces are detected in the provided image.

Body

Name
Type
Description
bodyREQUIRED
object
▣ ENDPOINT 04 / 04
POST
Upload image file → pixelized image download
http://localhost:8080/apyhub/pixelize/file
QUICKSTARTGUIDE

Quickstart

Upload an image file to pixelize it.

curl -X POST "http://localhost:8080/apyhub/pixelize/file" \
  -H "apy-token: $APY_TOKEN" \
  -F "file=@/path/to/image.png"

What you'll get back

Returns a JSON object with a message string field describing the result.

{
  "message": "No faces detected in the provided image."
}
TRY ITLIVE · 50 ATOMS
Loading your default key…
The full key is used to call the gateway and stays in this tab — never sent to orbit or saved.
Max 100MB total per request (all files combined). Larger? Use this API's URL-based endpoint instead, if it has one.
body*
Image file to process. Supported formats: JPEG, PNG, GIF.

About this endpoint

What it does

Uploads an image file for pixelization processing. The success response is a JSON object with a message string field.

Request Body

ParameterTypeMandatoryDescription
fileStringYesImage file to process. Supported formats: JPEG, PNG, GIF.

Response

Returns a JSON object with a message string field.

ParameterTypeMandatoryDescription
messageStringNoA response message returned by the service. The schema defines this as a string.

Body

Name
Type
Description
bodyREQUIRED
object

Max 100MB total per request (all files combined). Larger? Use this API's URL-based endpoint instead, if it has one.

▣ COMMON ERRORS

Errors any endpoint can return

400bad_request

Required parameter missing or malformed body.

401unauthorized

API key missing, revoked, or not authorized for this service.

429rate_limited

Your plan's per-second rate exceeded. Retry with exponential backoff.

503upstream_busy

Backend temporarily unavailable. Try again in a few seconds.