Base URL: https://imgsharp.grabshot.dev
Include your API key in the X-API-Key header or as a api_key query parameter. Anonymous requests use free tier limits.
curl "https://imgsharp.grabshot.dev/v1/image?url=https://example.com/photo.jpg&w=400" \
-H "X-API-Key: img_your_api_key_here"
GET /v1/image
Fetch an image from a URL and apply transformations. Returns the processed image binary.
| Param | Type | Default | Description |
|---|---|---|---|
url | string | required | Source image URL |
w / width | integer | - | Target width in pixels |
h / height | integer | - | Target height in pixels |
format / f | string | original | Output format: webp, avif, png, jpg |
quality / q | integer | 80 | Quality 1-100 |
fit | string | cover | cover, contain, fill, inside, outside |
gravity | string | center | Crop anchor: center, north, south, east, west, northeast, etc. |
blur | float | - | Gaussian blur sigma (0.3-100) |
sharpen | boolean | false | Apply sharpening |
grayscale | boolean | false | Convert to grayscale |
rotate | integer | - | Rotation angle in degrees |
flip | boolean | false | Flip vertically |
flop | boolean | false | Flip horizontally |
crop | string | - | Pixel crop: left,top,width,height |
watermark | string | - | Text watermark overlay |
watermark_opacity | float | 0.5 | Watermark opacity (0-1) |
watermark_position | string | southeast | Watermark position |
# Resize to 800x600, convert to WebP, quality 85
curl "https://imgsharp.grabshot.dev/v1/image?url=https://picsum.photos/2000/1500&w=800&h=600&format=webp&quality=85" \
-H "X-API-Key: img_your_key" \
-o resized.webp
POST /v1/image
Upload an image file and apply transformations. Send as multipart/form-data with field name image. Same parameters as URL mode in form body.
curl -X POST "https://imgsharp.grabshot.dev/v1/image" \
-H "X-API-Key: img_your_key" \
-F "[email protected]" \
-F "width=400" \
-F "format=webp" \
-o output.webp
GET /v1/image/info?url=...
Get metadata about an image without transforming it.
{
"width": 2000,
"height": 1500,
"format": "jpeg",
"channels": 3,
"space": "srgb",
"hasAlpha": false,
"size": 245832,
"density": 72
}
POST /v1/registerBody: { "email": "...", "password": "..." } - Returns API key
POST /v1/loginBody: { "email": "...", "password": "..." } - Returns API key
GET /v1/accountGet account info, plan, and usage. Requires API key.
GET /v1/healthHealth check. No auth required.
| Plan | Requests/min | Monthly limit | Max file size |
|---|---|---|---|
| Free | 10 | 100 | 5MB |
| Starter | 30 | 5,000 | 25MB |
| Pro | 60 | 25,000 | 50MB |
| Business | 120 | 100,000 | 100MB |
Rate limit headers: X-RateLimit-Limit, X-RateLimit-Remaining
Image responses include these headers:
X-ImgSharp-Width - Output image widthX-ImgSharp-Height - Output image heightX-ImgSharp-Size - Output image size in bytesCache-Control - Set to 24h for CDN caching