API Endpoint Access URL
https://api.pixlab.io/blur
Get Your API Key & Try BLUR Now ↗Description
The Blur API endpoint allows developers to programmatically apply a customizable blur filter to any input image. This feature is particularly useful for automated content moderation, such as censoring sensitive or offensive regions when combined with the nsfw detection endpoint.
HTTP Methods
GET, POST
HTTP Parameters
Required
Optional
POST Request Body (If you plan to use POST instead of a simple GET request)
Allowed Content-Type:
Use
Channels Constant
We recommend that you always omit this parameter and let PixLab affect all image channels.
| Fields | Type | Description |
|---|---|---|
img |
URL | Input image URL. If you want to upload your image directly from your app, then submit a multipart/form-data POST request. |
radius |
Float | Blur radius (Max value is set to 100.00). |
sigma |
Float | Standard deviation (Max value is set to 200.00). |
key |
String | Your PixLab API Key ↗. You can also embed your key in the WWW-Authenticate: HTTP header and omit this parameter if you want to. |
| Fields | Type | Description |
|---|---|---|
blob |
Boolean | By default, this endpoint returns a JSON object holding the link to the image output. But, if this parameter is set to true then the image binary contents are returned instead. |
channel |
Integer | Color channel constant. If this field is missing (Recommended), then all image channels will be affected (See below for the list of channels constant). |
Allowed Content-Type:
multipart/form-dataapplication/jsonUse
multipart/form-data if you want to upload your image directly (refer to the REST API code samples for a working example). If you are using JSON, then your image must be already uploaded somewhere. Call store if you want to upload an image for example before invoking this endpoint.Channels Constant
We recommend that you always omit this parameter and let PixLab affect all image channels.
| Fields | Value |
|---|---|
CHANNEL_RED
|
1 |
CHANNEL_GRAY
|
1 |
CHANNEL_CYAN
|
1 |
CHANNEL_GREEN
|
2 |
CHANNEL_MAGENTA
|
2 |
CHANNEL_BLUE
|
4 |
CHANNEL_YELLOW
|
4 |
CHANNEL_ALPHA
|
8 |
CHANNEL_OPACITY
|
8 |
CHANNEL_MATTE
|
8 |
CHANNEL_BLACK
|
32 |
CHANNEL_INDEX
|
32 |
CHANNEL_ALL
|
134217727 |
HTTP Response
The BLUR endpoint returns application/json if the optional blob parameter is not set.
This endpoint returns a JSON Object unless the blob parameter is specified, in which case it returns the raw image binary. The response JSON contains the following fields:
| Fields | Type | Description |
|---|---|---|
status |
Integer | Status code 200 indicates success, any other code indicates failure. |
link |
URL | Link to the processed image stored on pixlab.xyz storage unless custom S3 keys are configured (see your dashboard ↗ for configuration). |
id |
String | Unique image identifier. |
error |
String |
Error message when status != 200.
|
Code Samples
import requests
def censor_image(image_url: str, radius: int = 50, sigma: int = 30) -> str:
api_key = "PIXLAB_API_KEY" # Consider using environment variables for API keys
params = {
"img": image_url,
"radius": radius,
"sigma": sigma,
"key": api_key,
}
try:
response = requests.get(
"https://api.pixlab.io/blur",
params=params,
timeout=10
)
response.raise_for_status()
data = response.json()
if data["status"] != 200:
raise ValueError(data.get("error", "Unknown error occurred"))
return data["link"]
except requests.exceptions.RequestException as e:
raise ConnectionError(f"Failed to connect to API: {e}") from e
if __name__ == "__main__":
try:
blurred_image_url = censor_image(
"https://www.allaboutbirds.org/guide/PHOTO/LARGE/blue_jay_8.jpg"
)
print(f"Link to the blurred picture: {blurred_image_url}")
except Exception as e:
print(f"Error: {e}")
fetch('https://api.pixlab.io/blur?img=https://www.allaboutbirds.org/guide/PHOTO/LARGE/blue_jay_8.jpg&radius=50&sigma=30&key=PIXLAB_API_KEY')
.then(response => response.json())
.then(reply => {
if (reply.status !== 200) {
console.log(reply.error);
} else {
console.log("Link to the Blurred picture: " + reply.link);
}
})
.catch(error => console.error('Error:', error));
<?php
$params = [
'img' => 'https://www.allaboutbirds.org/guide/PHOTO/LARGE/blue_jay_8.jpg',
'radius' => 50,
'sigma' => 30,
'key' => 'PIXLAB_API_KEY'
];
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://api.pixlab.io/blur?' . http_build_query($params));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
$response = curl_exec($ch);
curl_close($ch);
$reply = json_decode($response, true);
if ($reply['status'] != 200) {
echo $reply['error'];
} else {
echo "Link to the Blurred picture: " . $reply['link'];
}
require 'net/http'
require 'json'
require 'uri'
uri = URI('https://api.pixlab.io/blur')
params = {
'img' => 'https://www.allaboutbirds.org/guide/PHOTO/LARGE/blue_jay_8.jpg',
'radius' => 50,
'sigma' => 30,
'key' => 'PIXLAB_API_KEY'
}
uri.query = URI.encode_www_form(params)
response = Net::HTTP.get_response(uri)
reply = JSON.parse(response.body)
if reply['status'] != 200
puts reply['error']
else
puts "Link to the Blurred picture: #{reply['link']}"
end