Skip to content
Back to skills

Snap

ASecurity

Give your agent the ability to instantly take screenshots of any website with just the URL. Cloud-based so your agent has to perform no work. Free forever, open source.

  • 2 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added November 11, 2026
securitypythongobashapi

Works with

  • api

Security analysis

A100/100

Pro scans all 3 files and shows the line behind each finding

Scanned November 11, 2026

npx -y skills add johnalbertini14-glitch/openclaw-skills --skill snap --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Snap?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Snap
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/johnalbertini14-glitch-snap/badge)](https://www.skillsdirectory.com/skills/johnalbertini14-glitch-snap)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: snap
description: Give your agent the ability to instantly take screenshots of any website with just the URL. Cloud-based so your agent has to perform no work. Free forever, open source. 
metadata:
  author: Kav-K
  version: "1.0"
---
# SnapService — Screenshot as a Service

Free screenshot API at `https://snap.llm.kaveenk.com`.
POST a URL, get a PNG/JPEG back. Powered by headless Chromium.

## Quick Start (2 steps)

### Step 1: Register for an API key

```bash
curl -s -X POST https://snap.llm.kaveenk.com/api/register \
  -H "Content-Type: application/json" \
  -d '{"name":"my-agent"}'
```

Response:
```json
{"key":"snap_abc123...","name":"my-agent","limits":{"per_minute":2,"per_day":200}}
```

**IMPORTANT:** Store `key` securely. It cannot be recovered.

Each IP address can only register one API key.

### Step 2: Take screenshots

```bash
curl -s -X POST https://snap.llm.kaveenk.com/api/screenshot \
  -H "Authorization: Bearer snap_yourkey" \
  -H "Content-Type: application/json" \
  -d '{"url":"https://example.com"}' \
  -o screenshot.png
```

That's it. Two steps.

## Screenshot Options

All options go in the POST body alongside `url`:

| Option | Type | Default | Description |
|--------|------|---------|-------------|
| `url` | string | **required** | URL to screenshot |
| `format` | string | `"png"` | `"png"` or `"jpeg"` |
| `full_page` | boolean | `false` | Capture entire scrollable page |
| `width` | integer | `1280` | Viewport width (pixels) |
| `height` | integer | `720` | Viewport height (pixels) |
| `dark_mode` | boolean | `false` | Emulate dark color scheme |
| `selector` | string | — | CSS selector to screenshot specific element |
| `wait_ms` | integer | `0` | Extra wait time after page load (max 10000) |
| `scale` | number | `1` | Device scale factor (1-3, for retina) |
| `cookies` | array | — | Array of `{name, value, domain}` objects |
| `headers` | object | — | Custom HTTP headers |
| `block_ads` | boolean | `false` | Block common ad/tracker domains |

## Rate Limits

- **2 screenshots per minute** per key
- **200 screenshots per day** per key
- **1 API key per IP address**
- Max page height: 16384px (full-page mode)
- Max screenshot size: 10MB

## Response

- **200**: PNG or JPEG image binary
- **400**: Invalid request (missing URL, invalid options)
- **401**: Missing or invalid API key
- **409**: IP already has an API key (on registration)
- **429**: Rate limit exceeded
- **500**: Internal error

## Example with all options

```bash
curl -s -X POST https://snap.llm.kaveenk.com/api/screenshot \
  -H "Authorization: Bearer snap_yourkey" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://example.com",
    "format": "jpeg",
    "full_page": true,
    "width": 1920,
    "height": 1080,
    "dark_mode": true,
    "wait_ms": 2000,
    "block_ads": true
  }' \
  -o screenshot.jpg
```

## Python example

```python
import requests

API = "https://snap.llm.kaveenk.com"

# Register (one-time)
r = requests.post(f"{API}/api/register", json={"name": "my-agent"})
key = r.json()["key"]

# Screenshot
r = requests.post(f"{API}/api/screenshot",
    headers={"Authorization": f"Bearer {key}"},
    json={"url": "https://example.com", "full_page": True})
with open("shot.png", "wb") as f:
    f.write(r.content)
```

Files in this skill

  • SKILL.md3.2 KB
  • _meta.json285 B
  • summary.txt593 B

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

View all in security →

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.