API & blocklist docs

Everything is REST + JSON over HTTPS. One bearer token per tenant, generated in Dashboard → API key.

Authentication

Send the API key as a Bearer token on every request:

Authorization: Bearer <your_api_key>

POST /api/scan.php — submit a URL

curl -s -X POST https://shield.sevinhub.com/api/scan.php \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"url":"https://example.com","persona":"mobile_iphone_pl"}'

Returns {ok:true, scan_id, poll_url}. Poll the URL until scan.status == 'done'.

GET /api/scan.php?id=N — fetch report

curl -s "https://shield.sevinhub.com/api/scan.php?id=42" \
  -H "Authorization: Bearer $TOKEN"

Returns the full scan row + findings array. Findings include rule, severity (info/low/medium/high/critical), source feed, and the evidence object.

GET /api/blocklist.php — public blocklist

# JSON (default)
https://shield.sevinhub.com/api/blocklist.php

# Hosts file
https://shield.sevinhub.com/api/blocklist.php?fmt=hosts

# Per-tenant feed (your token from Dashboard → API key)
https://shield.sevinhub.com/api/blocklist.php?token=<blocklist_token>&fmt=domains

Subscribe your ad server or DNS resolver to this URL — it refreshes every minute as new findings land.

Personas

Quotas

Free 100/mo · Pro 10k/mo · Agency 100k/mo. The API returns HTTP 429 when a tenant hits its monthly cap; the counter resets at 00:00 UTC on the 1st.