This Image Anonymization API is as simple as it goes. It detects a car license plate and faces and hides them.
This API is created by API4AI. We build our APIs on a completely cloud technology stack which provides full operability, scalability and stable uptime. Our sole goal is to create out-of-the-box self-contained AI solutions that can easily be integrated into any application with just a few simple steps.
Try our service via:
🤖 Telegram demo bot: https://t.me/a4a_img_anonymization_bot
Feel free to contact API4AI team if you have any questions.
📩 Email: hello@api4.ai
💬 Telegram: https://t.me/a4a_support_bot
🔗 Instagram: https://www.instagram.com/api4ai
🔗 Twitter: https://twitter.com/api4ai
🔗 Facebook: https://www.facebook.com/api4ai.solutions
METHOD | URL | DESCRIPTION |
---|---|---|
GET | https://image-anonymization.p.rapidapi.com/v1/version |
Get service version. |
GET | https://image-anonymization.p.rapidapi.com/v1/modes |
Get list of available modes. |
POST | https://image-anonymization.p.rapidapi.com/v1/results |
Anonymize image and get results. |
Returns an actual version of the service in format vX.Y.Z
where X is the version of API.
PROPERTY | DESCRIPTION |
---|---|
Endpoint | https://image-anonymization.p.rapidapi.com/v1/version |
Method | GET |
Examples
Request:
$ curl -X 'GET' 'https://image-anonymization.p.rapidapi.com/v1/version'
Response:
v1.11.0
The service provides serveral modes for image anonymization. This endpoint
returns list of supported modes that can be used as values of mode
query parameter
of /results
endpoint.
PROPERTY | DESCRIPTION |
---|---|
Endpoint | https://image-anonymization.p.rapidapi.com/v1/modes |
Method | GET |
Examples
Request:
$ curl -X 'GET' 'https://image-anonymization.p.rapidapi.com/v1/modes'
Response:
[
"hide-clp",
"hide-face"
]
Performs actual image analysis and responds with results.
PROPERTY | DESCRIPTION |
---|---|
Endpoint | https://image-anonymization.p.rapidapi.com/v1/results |
Method | POST |
Query parameters | mode |
POST parameters | image , url |
Query parameter mode
is optional and may be used to choose which kind of objects to hide. The following modes are supported:
hide-clp
– to hide car license plateshide-face
– to hide facesNote, the mode
query parameter can appear multiple times in a query string. For example, if you want to hide two types of objects at the same time (car license plates and faces) you can add mode=hide-clp&mode=hide-face
to a query string.
By default (if mode
is not passed via query) all supported objects will be hidden.
Response schema
For responses with 200
HTTP code the type of response is JSON object with the following schema:
{
"results": [
{
"status": {
"code": ...,
"message": ...
},
"name": ...,
"md5": ...,
"entities": [
{
"kind": "image",
"name": "anonymized-image",
"format": ...
"image": ...
},
{
"kind": "objects",
"name": "hidden-objects",
"objects": [
{
"box": ...,
"entities": [
{
"kind": "classes",
"name": "classes",
"classes": {
...
}
}
]
}
]
}
]
}
]
}
Primary fields:
Name | Type | Description |
---|---|---|
results[].status.code |
string |
Status code of image processing: ok or failure . |
results[].status.message |
string |
Human readable explanation for status of image processing. |
results[].name |
string |
Original image name passed in request (e.g. my_image.jpg ). |
results[].md5 |
string |
MD5 sum of original image passed in request. |
results[].entities[].name |
string |
The name of output entity. |
results[].entities[].format |
string |
The result image format (usually the same as input image format) |
results[].entities[].image |
string |
PNG or JPEG result image encoded as base64. |
results[].entities[].objects |
array |
Array of hidden object. |
results[].entities[].objects[].box |
array |
Object’s bounding box defined by 4 float values. |
results[].entities[].objects[].entities[].classes |
object |
Object’s classes and confidence of recognition. |
The most important part of the response is results[].entities[0].image
field.
The result image is an anonymized image encoded as base64.
Also results[].entities[1].objects
may be useful if you want to know location of hidden objects. Some details:
0.0
– left/top, 1.0
– right/bottom) in the following notations: [x, y, width, height]
.0.0
to 1.0
).Other fields that are not described above always have the same values.
Passing image
Image can be passed by postint regular “multipart form data” in two alternative ways:
image
fieldurl
fieldImage must be a regular JPEG or PNG image (with or without transparency).
Usually such images have extensions: .jpg
, .jpeg
, .png
.
The service checks input file by MIME type and accepts the following types:
image/jpeg
image/png
The size of image file must be less than 16Mb
.
The maximum allowed resolution is 4096x4096
.
Examples
Request:
curl -X 'POST' 'https://image-anonymization.p.rapidapi.com/v1/results' -F 'image=@car.jpg'
Response:
{
"results": [
{
"status": {
"code": "ok",
"message": "Success"
},
"name": "car.jpg",
"md5": "f2d13d0242b98aae82bc7a6dc76e1ea9",
"entities": [
{
"kind": "image",
"name": "anonymized-image",
"format": "PNG",
"image": "iVBORw0KGgoAAAA...YII="
},
{
"kind": "objects",
"name": "hidden-objects",
"objects": [
{
"box": [
0.7458327412605286,
0.6650611162185669,
0.1188957691192627,
0.07453817129135132
],
"entities": [
{
"kind": "classes",
"name": "classes",
"classes": {
"License plate": 0.5641241073608398
}
}
]
}
]
}
]
}
]
}
When client sends an image that can not be processed for some reason(s), the service responds with 200
code and returns JSON object in the same format as the format for successful analysis. In this case, the results[].status.code
will have failure
value and results[].status.message
will contain relevant explanation.
Example of possible reasons for the issue:
Example response for image with unsupported MIME type:
{
"results": [
{
"status": {
"code": "failure",
"message": "Can not load image."
},
"name": "file.txt",
"md5": "d41d8cd98f00b204e9800998ecf8427e",
"entities": []
}
]
}
Request size is limited by approximately 32Mb
.
When client sends request that exceeds this limit, the service responds with 413
code.
The typical reason for exceeding this limit is overly large image.
Taking into account additional HTTP overhead, we strongly recommend to not pass image files of size more than 16Mb
.
Example response for overly big image:
Error: Request Entity Too Large
Your client issued a request that was too large.
When client sends a request without an image, the service responds with 422
code and returns JSON object.
Example response for request with missing image:
{
"detail": [
{
"loc": [
"body",
"image"
],
"msg": "field required",
"type": "value_error.missing"
}
]
}