---
description: "The ENAD Media CDN for serving product and brand assets at https://media.enad.io."
title: "Media CDN"
---
Domain: `https://media.enad.io`

## Overview

The Media CDN provides image processing capabilities including resizing, cropping, format conversion, and various transformation effects.

## Endpoints

### Image Processing
**GET** `/{app_id}/{filename}`

Process and transform images stored in R2 bucket with various options.

#### Path Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `app_id` | `string` | Yes | Application/tenant UUID identifier |
| `filename` | `string` | Yes | Image filename in the bucket |

#### Query Parameters

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| `width` | `u32` | No | - | Target width in pixels (1-5000) |
| `height` | `u32` | No | - | Target height in pixels (1-5000) |
| `quality` | `u8` | No | `80` | Image quality (0-100) |
| `format` | `string` | No | original | Output format: `webp`, `avif`, `png`, `jpeg`, `jpg` |
| `fit` | `string` | No | `contain` | Resize mode (see Fit Modes below) |
| `blur` | `f32` | No | - | Blur intensity (0.0-100.0) |
| `crop_x` | `i32` | No | - | Horizontal crop offset in pixels |
| `crop_y` | `i32` | No | - | Vertical crop offset in pixels |
| `fill` | `string` | No | - | Background fill color (hex format: `#000000`) |
| `bg_remove` | `boolean` | No | - | Remove background using machine learning |

#### Fit Modes

- **`contain`** - Resize to fit within dimensions, maintaining aspect ratio
- **`cover`** - Scale to fill dimensions, cropping excess (centers crop unless `crop_x`/`crop_y` specified)
- **`scale-down`** - Only resize if image is larger than target dimensions
- **`crop`** - Scale and crop to exact dimensions
- **`pad`** - Resize to fit and pad remaining space with transparent background
- **`squeeze`** - Stretch/squash to exact dimensions, ignoring aspect ratio

#### Dimension Behavior

- If only `width` is provided: height is calculated to maintain aspect ratio
- If only `height` is provided: width is calculated to maintain aspect ratio
- If both are provided: behavior depends on `fit` mode
- If neither is provided: original dimensions are used

#### Examples

```bash
# Resize to width 800, maintain aspect ratio
GET https://media.enad.io/{app_id}/photo.jpg?width=800

# Convert to WebP with quality 90
GET https://media.enad.io/{app_id}/photo.jpg?format=webp&quality=90

# Resize and crop to exact dimensions
GET https://media.enad.io/{app_id}/photo.jpg?width=1920&height=1080&fit=cover

# Add blur effect
GET https://media.enad.io/{app_id}/photo.jpg?width=800&blur=5.0

# Fill transparent areas with white
GET https://media.enad.io/{app_id}/photo.png?fill=%23FFFFFF

# Custom crop position
GET https://media.enad.io/{app_id}/photo.jpg?width=500&height=500&fit=cover&crop_x=100&crop_y=50
```

#### Response

- **Content-Type**: Varies based on output format
  - `image/png`
  - `image/jpeg`
  - `image/webp`
  - `image/avif`
- **Status Codes**:
  - `200 OK` - Success
  - `400 Bad Request` - Invalid parameters
  - `404 Not Found` - Image not found
  - `500 Internal Server Error` - Processing error

## Limits

- **Dimensions**: Maximum 5000x5000 pixels
- **Minimum Dimensions**: At least 1 pixel
- **Image Quality**: 0-100
- **Blur Range**: 0.0-100.0
- **URL**: Maximum 16 KB (typical HTTP limit)

## Error Responses

All errors return appropriate HTTP status codes with descriptive messages:

### 400 Bad Request
Returned when:
- Invalid dimensions (outside 1-5000 range)
- Invalid fit mode for given dimensions
- Invalid format specified
- Invalid hex color format
- Invalid blur value
- Crop offsets exceed image bounds

### 404 Not Found
Returned when:
- Requested image file doesn't exist in bucket

### 500 Internal Server Error
Returned when:
- Image processing fails
- Internal Server Error
