Partner API for Agencies and Hosting Companies
Overview
The WP Vanguard Partner API lets hosting companies and agencies integrate WordPress security scanning directly into their platforms. Run surface scans, deep scans, and malware cleanups programmatically - the same tools our web dashboard uses, available as a REST API.
Partners get an API key, rate limits based on their tier, monthly quotas, and optional webhook notifications when scans complete.
Who Is This For?
- Managed hosting providers who want to offer security scanning to their customers
- WordPress agencies managing 50+ client sites who need automated scanning
- Maintenance services that include security checks in their monthly plans
- Platform integrators building WordPress management dashboards
Getting Started
Sign up for a partner account directly from our website. The Free tier gives you immediate API access with 100 surface scans per month — no credit card required. Paid tiers unlock deep scans, cleanups, and higher quotas.
To get started:
- Visit wpvanguard.com/pricing and pick a plan
- Create your account — Free tier is instant, paid tiers go through Stripe Checkout
- Your API key is generated automatically on signup
- Authenticate requests with your
X-Api-Keyheader and start scanning
For Enterprise volume (50,000+ scans/month), create an Enterprise account and we'll reach out within 24 hours to set up a custom plan.
Authentication
Every API request (except the health check) requires your API key in the X-Api-Key header:
curl -H "X-Api-Key: your_api_key_here" \
https://wpvanguard.com/api/v1/account
Invalid or expired keys return 401 Unauthorized. Disabled accounts return 403 Forbidden.
API Base URL
https://wpvanguard.com/api/v1
Core Endpoints
Surface Scan
Scan any WordPress site over HTTP. No SSH access needed. Returns version info, security headers, SSL status, blacklist status, exposed files, and a security grade.
curl -X POST https://wpvanguard.com/api/v1/scans/surface \
-H "X-Api-Key: your_key" \
-H "Content-Type: application/json" \
-d '{"url": "https://example.com"}'
Response (201):
{
"scan_id": 42,
"status": "queued",
"url": "https://example.com",
"poll_url": "/api/v1/scans/42/status"
}
Deep Scan
Requires SSH access to the site. Checks WordPress core file integrity, plugin/theme authenticity, malware signatures, database injections, and suspicious admin accounts.
curl -X POST https://wpvanguard.com/api/v1/scans/deep \
-H "X-Api-Key: your_key" \
-H "Content-Type: application/json" \
-d '{
"site_id": 5,
"scan_type": "deep"
}'
You must first register the site with SSH credentials using the /sites endpoint.
Bulk Scan
Submit up to 100 surface scans in one request:
curl -X POST https://wpvanguard.com/api/v1/scans/bulk \
-H "X-Api-Key: your_key" \
-H "Content-Type: application/json" \
-d '{"sites": [{"url": "https://site1.com"}, {"url": "https://site2.com"}]}'
Poll Scan Status
Check scan progress without waiting:
curl https://wpvanguard.com/api/v1/scans/42/status \
-H "X-Api-Key: your_key"
Response:
{
"scan_id": 42,
"status": "completed",
"progress": 100,
"grade": "B",
"issues_found": 3
}
Get Full Scan Results
curl https://wpvanguard.com/api/v1/scans/42 \
-H "X-Api-Key: your_key"
Returns the complete scan report including all detected issues, severity levels, and recommendations.
Register a Site (for Deep Scans)
curl -X POST https://wpvanguard.com/api/v1/sites \
-H "X-Api-Key: your_key" \
-H "Content-Type: application/json" \
-d '{
"url": "https://client-site.com",
"ssh": {
"host": "server.example.com",
"port": 22,
"username": "wp_user",
"key": "-----BEGIN OPENSSH PRIVATE KEY-----...",
"wp_path": "/var/www/html"
}
}'
SSH credentials are encrypted at rest. You can provide either ssh.key or ssh.password.
Request a Cleanup
curl -X POST https://wpvanguard.com/api/v1/cleanups \
-H "X-Api-Key: your_key" \
-H "Content-Type: application/json" \
-d '{"site_id": 5}'
Rate Limits and Quotas
Every response includes rate limit headers:
X-RateLimit-Limit: 10
X-RateLimit-Remaining: 8
X-RateLimit-Reset: 1709301600
X-Quota-Limit: 2000
X-Quota-Remaining: 1847
X-Quota-Reset: 2026-03-31T23:59:59+00:00
Rate limits are per-minute and per-scan-type. Monthly quotas reset on the 1st of each month.
If you hit a rate limit, you receive 429 Too Many Requests. If you exhaust your monthly quota, you receive 403 Forbidden with a quota exceeded message.
Tiers
| Tier | Price | Surface/min | Deep/min | Monthly Surface | Monthly Deep | Monthly Cleanup |
|---|---|---|---|---|---|---|
| Free | $0 | 3 | — | 100 | — | — |
| Starter | $99/mo | 5 | 1 | 500 | 50 | 5 |
| Growth | $299/mo | 10 | 2 | 2,000 | 200 | 20 |
| Scale | $799/mo | 20 | 5 | 10,000 | 1,000 | 100 |
| Enterprise | Custom | 50 | 10 | 50,000 | 5,000 | 500 |
Webhooks
Instead of polling for scan status, configure a webhook URL to receive notifications when scans complete:
curl -X POST https://wpvanguard.com/api/v1/webhooks \
-H "X-Api-Key: your_key" \
-H "Content-Type: application/json" \
-d '{"webhook_url": "https://your-platform.com/hooks/wpvanguard"}'
When a scan completes, we POST to your URL:
{
"event": "scan.completed",
"scan_id": 42,
"url": "https://example.com",
"status": "completed",
"grade": "B",
"issues_found": 3
}
Webhook requests include an X-Signature header with an HMAC-SHA256 signature you can verify using your API secret. Failed deliveries are retried 3 times with exponential backoff.
Idempotency
For safe retries, include an Idempotency-Key header on POST requests:
curl -X POST https://wpvanguard.com/api/v1/scans/surface \
-H "X-Api-Key: your_key" \
-H "Idempotency-Key: unique-request-id-123" \
-H "Content-Type: application/json" \
-d '{"url": "https://example.com"}'
If the same idempotency key is sent within 24 hours, you receive the cached response with X-Idempotent-Replayed: true - no duplicate scan is created.
IP Whitelisting
Lock your API key to specific IP addresses for additional security:
curl -X PUT https://wpvanguard.com/api/v1/account/allowed-ips \
-H "X-Api-Key: your_key" \
-H "Content-Type: application/json" \
-d '{"ips": ["203.0.113.0/24", "198.51.100.5"]}'
CIDR notation is supported. Requests from IPs not in the whitelist receive 403 Forbidden.
Error Handling
All errors return a consistent JSON format:
{
"error": {
"code": "RATE_LIMITED",
"message": "Too many requests. Please try again in 45 seconds."
}
}
| HTTP Status | Error Code | Meaning |
|---|---|---|
| 401 | UNAUTHORIZED | Missing or invalid API key |
| 403 | FORBIDDEN | Key expired, account disabled, or IP blocked |
| 403 | QUOTA_EXCEEDED | Monthly quota exhausted |
| 404 | NOT_FOUND | Resource not found |
| 422 | VALIDATION_FAILED | Invalid request data |
| 429 | RATE_LIMITED | Per-minute rate limit hit |
Partner Portal
Partners also get access to a web portal at wpvanguard.com/partner/login where you can:
- View your usage dashboard
- Browse your sites and scan results
- Check API logs
- See your API key details
OpenAPI Specification
A complete OpenAPI 3.0 specification is available for generating client SDKs and exploring the API in tools like Swagger UI or Postman. Contact us for access.
Check Your Usage
curl https://wpvanguard.com/api/v1/usage \
-H "X-Api-Key: your_key"
Returns your current month's usage against your tier limits.
Manage Your Subscription
Paid tier partners can upgrade, downgrade, or cancel their subscription from the Partner Portal under Subscription. Free tier partners can upgrade to a paid plan at any time — no data is lost.
Questions?
Reach out to partner@wpvanguard.com for tier upgrades, enterprise plans, or technical support.
Check Your WordPress Site Security
Free scan, no login required. Find vulnerabilities before attackers do.
Scan Your Site Free