Skip to content

API reference

24 endpoint groups. Most lookup and feed endpoints are public and need no authentication — reach for a key when you need attribution, bulk submission, or webhooks.

api.vspam.orgOpenAPI spec

Authentication

Two authentication methods are supported. Many endpoints are public and require no authentication.

JWT bearer token
1h expiry

Obtain via /auth/login. Expires in 1 hour; use /auth/refresh to renew.

Authorization: Bearer eyJhbGciOiJIUzI1NiIs...
API key
No expiry

Generate from your account dashboard or via the /keys endpoint.

X-API-Key: vs_live_xxxxxxxxxxxxxxxxxxxx
# or
Authorization: Bearer vs_live_xxxxxxxxxxxxxxxxxxxx

Rate limits

Per API key or IP address

Exceeded limits return 429 Too Many Requests.

TierRequests / minLookups / dayFeed export
Anonymous101,000No
Free6010,000No
Contributor300100,000Yes (CSV)
Trusted1,000UnlimitedYes (STIX/CSV)

Errors

All errors follow a consistent format with a machine-readable code and human-readable message.

json
{
  "error": {
    "code": "NOT_FOUND",
    "message": "report not found",
    "details": null
  }
}
HTTPCodeDescription
400BAD_REQUESTInvalid or missing parameters
401UNAUTHORIZEDMissing or invalid authentication
403EMAIL_NOT_VERIFIEDEmail verification required
404NOT_FOUNDResource does not exist
409DUPLICATE_REPORTIOC already reported (returns existing report_id)
409DUPLICATE_VOTEAlready voted on this report
429RATE_LIMITEDToo many requests
500INTERNALServer error

Response envelope

All responses are wrapped in a standard envelope. Exactly one of data or error is present. List endpoints include a meta object with pagination info.

json
// Success (single item)
{ "data": { ... } }

// Success (paginated list)
{ "data": [ ... ], "meta": { "page": 1, "per_page": 25, "total": 100 } }

// Error
{ "error": { "code": "...", "message": "...", "details": null } }

Authentication

4 endpoints

Register, login, and manage JWT tokens. Use the access token as a Bearer token for authenticated endpoints, or generate API keys for programmatic access.

Reports

5 endpoints

Submit, search, and retrieve IOC (Indicator of Compromise) reports. Public endpoints require no authentication; authenticated endpoints provide full report data.

IOC Lookup

3 endpoints

Operator-first lookup for domains, ASNs, and exact IPv4 / IPv6 hosts, plus hash-based lookup when you already have a canonical SHA-256 artifact hash.

IOC Requests

4 endpoints

Community bounty board for requesting specific IOC investigations. Users can create requests, and others can fulfill them by submitting matching reports.

Pivot Search

1 endpoint

Find related reports by shared infrastructure — IP address, domain, or nameserver.

IP RBL

1 endpoint

Check whether an IPv4 or IPv6 address matches the vspam.org IP reputation blocklist. Returns the raw matched entry plus optional scoring-V2 read overlays so operators can distinguish a direct match from the effective enforcement decision.

Votes

2 endpoints

Community voting on IOC reports. Votes affect confidence scores and can promote reports to the DNSBL blocklist.

API Keys

3 endpoints

Create and manage API keys for programmatic access. Pass keys via the X-API-Key header or Authorization: Bearer header.

Profile & Credits

8 endpoints

View reporter profiles, reputation scores, and credit history from community contributions.

Statistics

3 endpoints

Platform-wide statistics, trends, and geographic distribution. All endpoints are public and cached.

Webhooks

4 endpoints

Register HTTP endpoints to receive push notifications when IOC events occur. Webhooks auto-disable after 10 consecutive delivery failures.

Watchlist

3 endpoints

Subscribe to IOC patterns and receive alerts when new reports match. Supports keyword, exact, domain, and IP matching.

Real-time Events (SSE)

1 endpoint

Server-Sent Events stream for live updates. Connect via EventSource with JWT passed as a query parameter (EventSource cannot set headers). Events: report:new, report:status, vote:new.

Named Feeds

5 endpoints

Operator-focused feeds identified by slug. Each feed exposes publication thresholds plus explicit operator intent so you can distinguish direct block, watch, context, and policy surfaces before wiring them into enforcement.

Threat Feeds

5 endpoints

Download confirmed IOCs in STIX 2.1, MISP, CSV, JSON, or plain text format. All feed endpoints require authentication. Supports time windowing. The generic feeds are broad exports, so recommended operator action is exposed in metadata and headers to help you decide whether to block directly or apply stricter local filtering first.

TAXII 2.1

3 endpoints

Standard TAXII 2.1 endpoints for automated threat intelligence sharing. Compatible with STIX/TAXII clients like OpenCTI, MISP, and Cortex XSOAR.

Phishing Kits

4 endpoints

Fingerprinted phishing kits clustered by structural similarity. Each kit groups reports that share page structure, forms, or resources.

Targeted Brands

2 endpoints

Leaderboard and analytics for brands targeted by phishing campaigns.

Delist Requests

2 endpoints

Request removal of false-positive IOCs from the active DNSBL. Public endpoints — no authentication required. Protected by Turnstile captcha.

Report Timeline

1 endpoint

Chronological lifecycle events for a report — from submission through confirmation, DNSBL promotion, feed publication transitions, abuse notifications, and takedown.

Reporter Stats

1 endpoint

Detailed contribution statistics for a reporter — activity heatmap, category breakdown, IOC types, streaks, and top targeted brands.

Notifications

4 endpoints

In-app notification system for report confirmations, vote activity, and other alerts.

Evidence Uploads

1 endpoint

Upload evidence screenshots for phishing reports via presigned URLs. Supports PNG, JPEG, WebP, and GIF. Presigned URLs expire in 15 minutes.

Usage & Billing

1 endpoint

Track API usage across your keys — request counts, tier limits, and daily history.