Image Tools API — Free for Developers & AI Agents
Resize, compress, and convert images, or screenshot any URL, server-side. No signup, no API key, no image storage.
Built to be called unattended
The tools on this site run entirely in your browser — nothing is uploaded. This API is the exception: a small, free, server-side endpoint for cases where there is no browser in the loop at all, such as a backend job, an automation script, or an AI agent acting on behalf of a client. It requires no account or API key, doesn't store uploaded images (each request is processed and discarded), and behaves the same way every time for the same input.
Endpoints
/api/tools/resizeResize an image to exact dimensions, or scale it proportionally.
| Field | Type | Notes |
|---|---|---|
| image* | file | The image to resize. |
| width | integer | Target width in px. At least one of width/height is required. |
| height | integer | Target height in px. |
| format | jpeg | png | webp | Defaults to the input image's format. |
| quality | 1-100 | Default 85. Ignored for png. |
Supply both width and height for an exact (possibly distorted) size. Supply only one to auto-scale the other, preserving aspect ratio.
/api/tools/compressShrink an image's file size at its original dimensions.
| Field | Type | Notes |
|---|---|---|
| image* | file | The image to compress. |
| format | jpeg | png | webp | Defaults to the input image's format. |
| quality | 1-100 | Default 70. Ignored for png. |
/api/tools/convertConvert an image between PNG, JPEG, and WebP.
| Field | Type | Notes |
|---|---|---|
| image* | file | The image to convert. |
| format* | jpeg | png | webp | Target format. |
| quality | 1-100 | Default 90. Ignored for png. |
/api/tools/screenshotScreenshot a public webpage as a PNG image.
| Field | Type | Notes |
|---|---|---|
| url* | query string | The public http/https URL to capture. Private/internal addresses are rejected. |
| width | integer | Viewport width in px. Default 1280, max 3000. |
| height | integer | Viewport height in px. Default 800, max 3000. |
| fullPage | true | false | Default true. Set false to capture only the viewport. |
Query-string GET request, not a file upload — unlike the other endpoints, this one fetches external content server-side. Times out after 15s.
The resize/compress/convert endpoints are multipart/form-data POST requests; the screenshot endpoint is a plain GET with query parameters. All responses are the raw processed image with a matching Content-Type, plus rate-limit and (for the image endpoints) size/dimension headers. Errors come back as JSON: { "error": "..." }.
Example: curl
curl -X POST https://fullpagecapture.com/api/tools/resize \
-F "image=@photo.png" \
-F "width=800" \
-F "format=webp" \
-o resized.webpExample: JavaScript / tool call
const form = new FormData();
form.append("image", fileBlob, "photo.png");
form.append("format", "webp");
form.append("quality", "80");
const res = await fetch("https://fullpagecapture.com/api/tools/convert", {
method: "POST",
body: form,
});
if (!res.ok) throw new Error((await res.json()).error);
const outputBlob = await res.blob();Example: screenshot a URL
curl "https://fullpagecapture.com/api/tools/screenshot?url=https://example.com&width=1280&fullPage=true" \
-o screenshot.pngUnlike the other endpoints, this one fetches external content server-side using a headless browser — it can also be dropped directly into an <img src="..."> tag.
Limits & machine-readable discovery
- Max upload size: 15MB (resize/compress/convert)
- Max output dimension: 6000px per side (resize/compress/convert), 3000px viewport (screenshot)
- Screenshot render timeout: 15 seconds; private/internal URLs are rejected
- Rate limit: 30 requests per minute per IP, no authentication required
- No image storage — each request is processed in memory and discarded
A full OpenAPI 3.1 spec is published at /api/tools/openapi.json for agent frameworks and API clients that support automatic tool discovery, and a summary is linked from /llms.txt.