Anonymous API (No Signup Required)
The fastest way to capture a screenshot. No authentication required—just pass a public URL and get back an image.
Simple GET Request
curl "https://snap.i2dev.com/v1/screenshot.png?url=https://example.com"Returns a PNG image directly. Perfect for embeds, <img /> tags, and quick testing.
Customizable Options
curl "https://snap.i2dev.com/v1/screenshot.png?url=https://example.com&width=1920&height=1080&format=jpeg"Available parameters:
url(required) — The page to screenshotwidth— Viewport width (default: 1280)height— Viewport height (default: 720)format—pngorjpeg(default: png)
Anonymous Limits
Anonymous requests are rate-limited per IP. For higher limits, priority rendering, and additional features, authenticate with an API key.
Authenticated API
For production use, CI/CD integration, and higher rate limits, use the authenticated API.
curl -X POST https://snap.i2dev.com/v1/screenshots \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"url": "https://example.com",
"viewport": { "width": 1280, "height": 720 }
}'The response includes the screenshot URL and metadata:
{
"jobId": "...",
"request_id": "...",
"imageUrl": "https://snap.i2dev.com/_local/jobs/...png",
"contentType": "image/png",
"bytes": 12345,
"durationMs": 987
}Authentication
All authenticated API requests require an API key:
Authorization: Bearer YOUR_API_KEYYou can also use x-api-key if preferred:
x-api-key: YOUR_API_KEYError Codes
Snap returns structured error responses with consistent codes:
| Code | HTTP Status | Description |
|---|---|---|
| invalid_url | 400 | URL is malformed or uses an unsupported protocol |
| unsafe_url | 400 | URL resolves to a private/internal IP address |
| unauthorized | 401 | Missing or invalid API key |
| rate_limited | 429 | Too many requests. Check Retry-After header |
| navigation_timeout | 504 | Page failed to load within timeout |
All error responses include a request_id for debugging:
{
"error": {
"code": "unsafe_url",
"message": "URL resolves to a private IP address",
"request_id": "req_xyz789"
}
}