API reference
REST API
Integrate Vulnara into your own tools, dashboards, or deployment pipelines using the REST API.
Base URL: https://api.vulnara.io · Interactive API explorer (Swagger UI) ↗
Authentication
All API requests require a Bearer token in the Authorization header. Get your token from Settings → API keys.
http
Authorization: Bearer YOUR_API_TOKEN
Get a token via login
shell
curl -X POST https://api.vulnara.io/auth/login \
-H "Content-Type: application/json" \
-d '{"email": "you@example.com", "password": "your-password"}'json
{
"access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"token_type": "bearer"
}Endpoints
POST
/auth/loginGet an access token
GET
/auth/meGet the current user's profile and plan
POST
/scansStart a new scan
GET
/scansList all scans for your account
GET
/scans/{id}Get scan status and summary
GET
/scans/{id}/findingsList all findings from a scan
GET
/reports/findingsList all findings across all scans
GET
/domainsList your verified domains
POST
/domainsAdd a domain for verification
POST
/domains/{id}/verifyVerify domain ownership
Start a scan
shell
curl -X POST https://api.vulnara.io/scans \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"target_url": "https://yourapp.com",
"modules": ["port-scan", "tls", "access-control"],
"user_a": {
"email": "tester_a@yourapp.com",
"password": "test-password-a"
},
"user_b": {
"email": "tester_b@yourapp.com",
"password": "test-password-b"
}
}'json
{
"scan_id": "3f8a1b2c-...",
"target_url": "https://yourapp.com",
"status": "queued",
"modules": ["port-scan", "tls", "access-control"],
"started_at": null,
"findings_count": 0
}Poll scan status
shell
curl https://api.vulnara.io/scans/3f8a1b2c-... \ -H "Authorization: Bearer YOUR_API_TOKEN"
json
{
"scan_id": "3f8a1b2c-...",
"status": "complete",
"started_at": "2026-06-13T09:12:00Z",
"completed_at": "2026-06-13T09:17:34Z",
"findings_count": 3,
"risk_score": 62,
"risk_grade": "C"
}Status values: queued → running → complete or failed
Get findings
shell
curl https://api.vulnara.io/scans/3f8a1b2c-.../findings \ -H "Authorization: Bearer YOUR_API_TOKEN" # Filter by severity curl "https://api.vulnara.io/scans/3f8a1b2c-.../findings?severity=critical,high" \ -H "Authorization: Bearer YOUR_API_TOKEN"
json
[
{
"finding_id": "a1b2c3d4-...",
"title": "Users can access each other's order data",
"severity": "critical",
"category": "Unauthorized Access",
"module": "access-control",
"affected_url": "https://yourapp.com/api/orders/1234",
"description": "A request authenticated as User B returned order data belonging to User A.",
"curl_command": "curl -H 'Authorization: Bearer <user_b_token>' https://yourapp.com/api/orders/1234"
}
]Rate limits
FreeAPI: 100 / hourScans: 5 / month
StarterAPI: 500 / hourScans: 50 / month
PremiumAPI: 2 000 / hourScans: Unlimited
EnterpriseAPI: 10 000 / hourScans: Unlimited
Rate limit headers are returned on every response: X-RateLimit-Remaining and X-RateLimit-Reset.