Developers
Platform API
Programmatically manage projects, scans, findings, and reports. Integrate Nebula into your CI/CD pipeline and security workflows.
Security
Authentication
Authenticate API requests using your API key or JWT token
Getting an API Key
- 1Log in to your BreachLine dashboard and go to Settings
- 2Navigate to API Keys section
- 3Click "Create API Key"
- 4Select required scopes
- 5Copy and securely store your key
Available Scopes
scans:*Full scan accessfindings:readView findingsfindings:writeUpdate findingsprojects:*Full project accessassets:readView assetsreports:*Generate reportsllm:*Nebula LLM API accessAuthentication Headers
# Authenticate with API Key curl -X GET "https://api.breachline.io/api/v1/projects" \ -H "X-API-Key: bl_live_xxxxxxxxxxxx" \ -H "Content-Type: application/json" # Or use Bearer token (JWT) curl -X GET "https://api.breachline.io/api/v1/projects" \ -H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..." \ -H "Content-Type: application/json"
Auth Endpoints
/api/v1/auth/registerRegister a new user account
/api/v1/auth/loginAuthenticate and get JWT tokens
/api/v1/auth/refreshRefresh access token
/api/v1/auth/logoutInvalidate current session
/api/v1/auth/meGet current user profile
/api/v1/auth/verify-emailVerify email address
/api/v1/auth/reset-passwordReset user password
Management
API Keys
Create and manage API keys programmatically
/api/v1/keys/createCreate new API key
/api/v1/keys/listList all API keys
/api/v1/keys/{key_id}Revoke API key
/api/v1/keys/refresh/{key_id}Rotate API key
/api/v1/keys/usageGet API key usage stats
Create API Key
curl -X POST "https://api.breachline.io/api/v1/keys/create" \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..." \
-H "Content-Type: application/json" \
-d '{
"name": "CI/CD Pipeline Key",
"scopes": ["scans:*", "findings:read", "projects:read"],
"expires_in_days": 90
}'
# Response (key shown only once!)
{
"id": "key_abc123",
"name": "CI/CD Pipeline Key",
"key": "bl_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"scopes": ["scans:*", "findings:read", "projects:read"],
"created_at": "2026-01-15T10:00:00Z",
"expires_at": "2026-04-15T10:00:00Z"
}Resources
Projects
Organize security assessments into projects
/api/v1/projectsList all projects
/api/v1/projectsCreate a new project
/api/v1/projects/{id}Get project details
/api/v1/projects/{id}Update project
/api/v1/projects/{id}Delete project
/api/v1/projects/{id}/scansGet project scans
/api/v1/projects/{id}/findingsGet project findings
/api/v1/projects/{id}/teamGet project team members
/api/v1/projects/{id}/teamAdd team member to project
/api/v1/projects/{id}/conversationsList project conversations
/api/v1/projects/{id}/conversationsCreate new conversation
Create Project Example
curl -X POST "https://api.breachline.io/api/v1/projects" \
-H "X-API-Key: bl_live_xxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-d '{
"name": "Q1 2026 Security Audit",
"description": "Comprehensive security assessment",
"target_scope": ["*.example.com", "api.example.com"]
}'
# Response
{
"id": "proj_abc123",
"name": "Q1 2026 Security Audit",
"description": "Comprehensive security assessment",
"target_scope": ["*.example.com", "api.example.com"],
"created_at": "2026-01-15T10:00:00Z"
}Core Feature
Scans
Run automated security scans against your targets
quick - Fast surface-level scan (5-10 min)full - Comprehensive deep scan (1-4 hours)stealth - Low-noise reconnaissancetargeted - Specific vulnerability checks/api/v1/scansList all scans (paginated)
/api/v1/scansCreate and start a new scan
/api/v1/scans/{id}Get scan status and details
/api/v1/scans/{id}Delete scan
/api/v1/scans/{id}/resultsGet scan findings/results
/api/v1/scans/{id}/timelineGet scan event timeline
/api/v1/scans/{id}/activityGet scan activity log
/api/v1/scans/{id}/pausePause running scan
/api/v1/scans/{id}/resumeResume paused scan
/api/v1/scans/{id}/stopStop running scan
/api/v1/scans/{id}/cancelCancel pending scan
/api/v1/scans/{id}/attack-graphGet attack graph visualization
/api/v1/scans/{id}/entry-pointsGet discovered entry points
/api/v1/scans/{id}/pocsGet proof of concepts
/api/v1/scans/{id}/costGet scan LLM cost breakdown
/api/v1/scans/{id}/report/generateGenerate AI-powered report
/api/v1/scans/{id}/report/downloadDownload generated report
Start Scan
curl -X POST "https://api.breachline.io/api/v1/scans" \
-H "X-API-Key: bl_live_xxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-d '{
"target": "https://example.com",
"scan_type": "full",
"project_id": "proj_abc123",
"config": {
"depth": 3,
"include_subdomains": true,
"aggressive": false
}
}'
# Response
{
"id": "scan_xyz789",
"target": "https://example.com",
"status": "pending",
"scan_type": "full",
"created_at": "2026-01-15T10:30:00Z"
}Get Scan Status
curl -X GET "https://api.breachline.io/api/v1/scans/scan_xyz789" \
-H "X-API-Key: bl_live_xxxxxxxxxxxx"
# Response
{
"id": "scan_xyz789",
"target": "https://example.com",
"status": "running",
"progress": 45,
"scan_type": "full",
"findings_count": 12,
"assets_discovered": 28,
"started_at": "2026-01-15T10:31:00Z",
"estimated_completion": "2026-01-15T12:00:00Z"
}Vulnerabilities
Findings
Access and manage discovered security vulnerabilities
/api/v1/findingsList all findings (filterable)
/api/v1/findings/{id}Get finding details
/api/v1/findings/{id}Update finding status
/api/v1/findings/{id}Delete finding
/api/v1/findings/{id}/commentsGet finding comments
/api/v1/findings/{id}/commentsAdd comment to finding
Get Findings
curl -X GET "https://api.breachline.io/api/v1/findings?severity=critical,high&status=open" \
-H "X-API-Key: bl_live_xxxxxxxxxxxx"
# Response
{
"findings": [
{
"id": "find_001",
"title": "SQL Injection in Login Form",
"severity": "critical",
"cvss_score": 9.8,
"cwe_id": "CWE-89",
"status": "open",
"target": "https://example.com/login",
"evidence": "Parameter 'username' is vulnerable...",
"remediation": "Use parameterized queries...",
"discovered_at": "2026-01-15T10:45:00Z"
}
],
"total": 5,
"page": 1,
"limit": 20
}Discovery
Assets
Discovered subdomains, IPs, and services
/api/v1/assetsList all discovered assets
/api/v1/assets/{id}Get asset details
/api/v1/assetsCreate asset manually
/api/v1/assets/{id}Update asset
/api/v1/assets/{id}Delete asset
/api/v1/assets/subdomainsList discovered subdomains
Integration
Python Example
Complete workflow example using Python
Full Scan Workflow
import requests
import time
API_KEY = "bl_live_xxxxxxxxxxxx"
BASE_URL = "https://api.breachline.io/api/v1"
headers = {
"X-API-Key": API_KEY,
"Content-Type": "application/json"
}
# Create a project
project = requests.post(
f"{BASE_URL}/projects",
headers=headers,
json={
"name": "Automated Scan",
"description": "CI/CD security scan"
}
).json()
# Start a scan
scan = requests.post(
f"{BASE_URL}/scans",
headers=headers,
json={
"target": "https://staging.example.com",
"scan_type": "quick",
"project_id": project["id"]
}
).json()
# Poll for completion
while True:
status = requests.get(
f"{BASE_URL}/scans/{scan['id']}",
headers=headers
).json()
print(f"Progress: {status['progress']}%")
if status["status"] in ["completed", "failed"]:
break
time.sleep(30)
# Get findings
findings = requests.get(
f"{BASE_URL}/findings",
headers=headers,
params={
"scan_id": scan["id"],
"severity": "critical,high"
}
).json()
# Generate report
report = requests.post(
f"{BASE_URL}/scans/{scan['id']}/report/generate",
headers=headers,
json={"format": "pdf", "include_pocs": True}
).json()
print(f"Found {len(findings['findings'])} critical/high findings")Usage
Rate Limits
API rate limits per key
Need higher limits? Contact us for enterprise plans.
Get Started
Ready to Automate?
Create an API key and integrate Nebula into your workflow