Scan free

Sniff & Fix

Scan API for build pipelines

Check your own site after each deploy and stop a release that makes the score worse.

Get an API token

What you need

Run a scan

curl -sS -X POST https://sniffpup.com/api/v1/scan \
  -H "Authorization: Bearer $SNIFFPUP_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"url": "https://your-app.com", "minScore": 80}'

Body fields:

A scan takes up to about a minute. When it runs you get HTTP 200 with passed true or false:

{
  "scanId": "6f1c…",
  "site": "your-app.com",
  "score": 86,
  "minScore": 80,
  "failOn": null,
  "passed": true,
  "reasons": [],
  "counts": { "critical": 0, "high": 0, "medium": 1, "low": 2, "info": 0 },
  "findings": [{ "id": "…", "severity": "medium", "title": "Missing Content-Security-Policy header" }],
  "reportUrl": "https://sniffpup.com/scan/6f1c…",
  "scannedAt": "2026-10-24T20:30:00.000Z"
}

The response lists issue titles only. Details, evidence and fix prompts are in the report at reportUrl, behind your sign-in.

GitHub Actions example

Save the token as a repository secret named SNIFFPUP_TOKEN, then:

# .github/workflows/sniffpup.yml
name: SniffPup check
on:
  deployment_status:
jobs:
  sniff:
    if: github.event.deployment_status.state == 'success'
    runs-on: ubuntu-latest
    steps:
      - name: Scan the live site
        env:
          SNIFFPUP_TOKEN: ${{ secrets.SNIFFPUP_TOKEN }}
        run: |
          res=$(curl -sS -X POST https://sniffpup.com/api/v1/scan \
            -H "Authorization: Bearer $SNIFFPUP_TOKEN" \
            -H "Content-Type: application/json" \
            -d '{"url": "https://your-app.com", "minScore": 80, "failOn": "high"}')
          echo "$res" | jq '{score, passed, reasons, reportUrl}'
          test "$(echo "$res" | jq -r .passed)" = "true"

Errors and limits

Use it from your AI coding tool

The same token also connects Claude Code, Cursor and other AI coding tools to SniffPup, so they can scan your site and fix what it finds. Set it up

Slack and Discord alerts

On Solo and up, open Slack or Discord alerts under a site in your dashboard and paste a Slack incoming webhook or a Discord channel webhook. When monitoring finds new serious issues we post the site, the issue titles and a report link, never keys or evidence. Use Send test to check it, and Turn off to remove it. The webhook address is stored encrypted and never shown in full again.