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.
Authentication
Two authentication methods are supported. Many endpoints are public and require no authentication.
Obtain via /auth/login. Expires in 1 hour; use /auth/refresh to renew.
Authorization: Bearer eyJhbGciOiJIUzI1NiIs...Generate from your account dashboard or via the /keys endpoint.
X-API-Key: vs_live_xxxxxxxxxxxxxxxxxxxx
# or
Authorization: Bearer vs_live_xxxxxxxxxxxxxxxxxxxxRate limits
Per API key or IP addressExceeded limits return 429 Too Many Requests.
| Tier | Requests / min | Lookups / day | Feed export |
|---|---|---|---|
| Anonymous | 10 | 1,000 | No |
| Free | 60 | 10,000 | No |
| Contributor | 300 | 100,000 | Yes (CSV) |
| Trusted | 1,000 | Unlimited | Yes (STIX/CSV) |
Errors
All errors follow a consistent format with a machine-readable code and human-readable message.
{
"error": {
"code": "NOT_FOUND",
"message": "report not found",
"details": null
}
}| HTTP | Code | Description |
|---|---|---|
| 400 | BAD_REQUEST | Invalid or missing parameters |
| 401 | UNAUTHORIZED | Missing or invalid authentication |
| 403 | EMAIL_NOT_VERIFIED | Email verification required |
| 404 | NOT_FOUND | Resource does not exist |
| 409 | DUPLICATE_REPORT | IOC already reported (returns existing report_id) |
| 409 | DUPLICATE_VOTE | Already voted on this report |
| 429 | RATE_LIMITED | Too many requests |
| 500 | INTERNAL | Server 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.
// Success (single item)
{ "data": { ... } }
// Success (paginated list)
{ "data": [ ... ], "meta": { "page": 1, "per_page": 25, "total": 100 } }
// Error
{ "error": { "code": "...", "message": "...", "details": null } }Authentication
4 endpointsRegister, 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 endpointsSubmit, search, and retrieve IOC (Indicator of Compromise) reports. Public endpoints require no authentication; authenticated endpoints provide full report data.
IOC Lookup
3 endpointsOperator-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 endpointsCommunity bounty board for requesting specific IOC investigations. Users can create requests, and others can fulfill them by submitting matching reports.
Pivot Search
1 endpointFind related reports by shared infrastructure — IP address, domain, or nameserver.
IP RBL
1 endpointCheck 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 endpointsCommunity voting on IOC reports. Votes affect confidence scores and can promote reports to the DNSBL blocklist.
API Keys
3 endpointsCreate and manage API keys for programmatic access. Pass keys via the X-API-Key header or Authorization: Bearer header.
Profile & Credits
8 endpointsView reporter profiles, reputation scores, and credit history from community contributions.
Statistics
3 endpointsPlatform-wide statistics, trends, and geographic distribution. All endpoints are public and cached.
Webhooks
4 endpointsRegister HTTP endpoints to receive push notifications when IOC events occur. Webhooks auto-disable after 10 consecutive delivery failures.
Watchlist
3 endpointsSubscribe to IOC patterns and receive alerts when new reports match. Supports keyword, exact, domain, and IP matching.
Real-time Events (SSE)
1 endpointServer-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 endpointsOperator-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 endpointsDownload 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 endpointsStandard TAXII 2.1 endpoints for automated threat intelligence sharing. Compatible with STIX/TAXII clients like OpenCTI, MISP, and Cortex XSOAR.
Phishing Kits
4 endpointsFingerprinted phishing kits clustered by structural similarity. Each kit groups reports that share page structure, forms, or resources.
Targeted Brands
2 endpointsLeaderboard and analytics for brands targeted by phishing campaigns.
Delist Requests
2 endpointsRequest removal of false-positive IOCs from the active DNSBL. Public endpoints — no authentication required. Protected by Turnstile captcha.
Report Timeline
1 endpointChronological lifecycle events for a report — from submission through confirmation, DNSBL promotion, feed publication transitions, abuse notifications, and takedown.
Reporter Stats
1 endpointDetailed contribution statistics for a reporter — activity heatmap, category breakdown, IOC types, streaks, and top targeted brands.
Notifications
4 endpointsIn-app notification system for report confirmations, vote activity, and other alerts.
Evidence Uploads
1 endpointUpload evidence screenshots for phishing reports via presigned URLs. Supports PNG, JPEG, WebP, and GIF. Presigned URLs expire in 15 minutes.
Usage & Billing
1 endpointTrack API usage across your keys — request counts, tier limits, and daily history.