Skip to main content
SlapMyWeb
Developers

API documentation

REST API for triggering scans, fetching results, managing clients. Bearer-token auth, JSON in/out, standard HTTP codes.

Authentication

Bearer token in the Authorization header. Get yours from Settings → API.

Base URL

https://api.slapmyweb.com

Rate limits

10 scans/day on Free, 200 on Pro, 2,000 on Agency. Other endpoints: 100 req/min.

Quickstart

curl
curl -X POST https://api.slapmyweb.com/api/v1/scan \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"url": "https://example.com"}'

# Response
{
  "success": true,
  "data": {
    "scanId": "01H2W3X4...",
    "cached": false
  }
}

Core endpoints

POST/api/v1/scan

Trigger a scan

Queue a new audit. Returns scanId immediately, runs in background.

Body
{ "url": "https://example.com" }
Response
{ "scanId": "uuid", "cached": false }
GET/api/v1/scan/:id/status

Poll scan status

Get the current progress, step, and roast for a running scan.

Response
{ "status": "running", "progress": 47, "step": "performance", "roast": "..." }
GET/api/v1/scan/:id/stream

Stream scan progress (SSE)

Server-Sent Events stream with sub-200ms updates per agent.

Response
event: status\ndata: {...}
GET/api/v1/results/:id

Fetch scan results

Returns the full ScanRecord with all 16 module payloads, scores, AI verdict.

Response
{ "id": "uuid", "overallScore": 87, "agentResults": {...} }
POST/api/v1/results/:id/share

Issue public share token

Generate a public read-only link to a scan result.

Response
{ "token": "abc...", "url": "/share/abc..." }
GET/api/v1/user/scans

List your scans

Paginated, filterable scan history. Supports q, status, dates, sort.

Response
{ "items": [...], "total": 142, "page": 1, "pageSize": 20 }

Read the docs.
Then trigger a scan.

The quickest way to understand the response shape is to run one in the browser first.

Run a free audit
Free foreverNo signupLive scan progress