Developer documentation

CtrlIn Image Proxy API

Resize, optimize, convert, and deliver remote images through one fast, domain-approved endpoint. Use simple URL parameters with no client-side image-processing code.

Introduction

One endpoint for image delivery.

CtrlIn is a domain-authenticated image proxy for resizing, converting, optimizing, and delivering remote images. Register and verify your website domain first, then call the proxy from that approved site.

Access control: proxy requests are checked against the approved domain list using the request's Referer or Origin hostname.
Usage

Build the image URL.

Pass the original image URL through the required url query parameter, then add any transformation options you need.

GEThttps://ctrlin.online/ctrlin?url=<source-image-url>
https://ctrlin.online/ctrlin?url=https%3A%2F%2Fexample.com%2Fimage.jpg&w=1200&output=webp&q=82
URL-encode the source image URL when constructing requests programmatically.
Endpoint

GET /ctrlin

The dedicated proxy endpoint accepts a source image URL and image-processing query parameters.

ParameterRequiredDescription
urlYesRemote source image URL to fetch and transform.
wNoOutput width in pixels.
hNoOutput height in pixels.
Options

Image transformation options.

All options are supplied in the query string.

winteger

Width in pixels. Range 1–10,000.

hinteger

Height in pixels. Range 1–10,000.

fitstring

Resize mode.

Values
Aliases
astring

Gravity / alignment.

dprnumber

Device pixel ratio multiplier. Range 1–8. Default 1.

weflag

Set to 1 or true to prevent image enlargement.

outputstring

Output format. Default is WebP.

qinteger

Output quality. Range 1–100. Default 80.

bghex

Background color used by the resize pipeline.

blurnumber

Apply Gaussian blur. Processing clamps the value to its supported range.

sharpflag

Apply sharpening when supplied.

gamnumber

Gamma adjustment, supported from 1 to 3.

coninteger

Contrast adjustment from -100 to 100.

defaultURL

Fallback URL. On source failure CtrlIn returns a 302 redirect to it.

Examples

Common requests.

Copy these patterns and replace the source image URL.

Resize

https://ctrlin.online/ctrlin?url=https%3A%2F%2Fexample.com%2Fphoto.jpg&w=800

WebP + quality

https://ctrlin.online/ctrlin?url=https%3A%2F%2Fexample.com%2Fphoto.jpg&output=webp&q=82

Crop

https://ctrlin.online/ctrlin?url=https%3A%2F%2Fexample.com%2Fphoto.jpg&w=600&h=400&fit=cover&a=center

High DPR

https://ctrlin.online/ctrlin?url=https%3A%2F%2Fexample.com%2Fphoto.jpg&w=800&dpr=2&output=webp

No enlargement

https://ctrlin.online/ctrlin?url=https%3A%2F%2Fexample.com%2Fphoto.jpg&w=1600&we=1

Metadata

https://ctrlin.online/ctrlin?url=https%3A%2F%2Fexample.com%2Fphoto.jpg&output=json
Response

Image or metadata.

Normal requests return the transformed image. The server also uses ETag validation and exposes cache status.

ResponseMeaning
Content-TypeMatches the selected image output format.
X-Cache: HITResult was served from the in-memory cache.
X-Cache: MISSSource was fetched and transformed before caching.
ETagIdentifier for the processed representation.
304Returned when If-None-Match matches the current ETag.
output=jsonReturns image metadata as JSON.
Errors

Handling failures.

Invalid or unsafe requests are rejected. Source fetch or processing failures return an error unless a fallback URL is supplied.

400 {"error":"Missing required `url` parameter"}

400 {"error":"<validation or access error>"}

502 {"error":"<source fetch or processing error>"}

302 Location: <default fallback URL>
Access & limits

Designed for controlled image delivery.

  • Requests are restricted to approved domains.
  • Private, loopback, metadata, and other unsafe source destinations are blocked.
  • Free domains have a shared limit of 10 hits per minute.
  • Paid domains can use their configured higher rate limit.
  • Processed images are cached in memory for repeat delivery.
  • The image pipeline limits input pixels to approximately 16k × 16k.
  • Width and height are limited to 10,000 pixels.
Getting started: Add and verify your website in the CtrlIn user panel before using the API.