// docs / rest api
REST API
Bearer-authenticated JSON API for scan automation, scan status, and findings. Passive scans are available through REST; active scans are available for paid plans only after the domain is verified and explicitly authorized in the dashboard.
Authentication
ప్రతి request లో Authorization header లో bearer token ఉండాలి. Tokens Account → API tokens నుండి issue అవుతాయి; plaintext సృష్టించినప్పుడు ఒక్కసారి మాత్రమే మీకు చూపబడుతుంది. Token revoke చేస్తే తదుపరి call లో 401 తిరిగి వస్తుంది.
curl -H "Authorization: Bearer fxv_..." \
https://fixvibe.app/api/v1/scansToken format: fxv_ తరువాత 43 base64url characters. Rest లో SHA-256 hash గా stored; plaintext server-side లో ఎప్పుడూ persist కాదు.
Rate పరిమితులు
ప్రతి authenticated request పై రెండు windows: 10 req/sec burst మరియు 60 req/min steady; రెండూ bearer hash పై keyed. Quota enforcement (per-month scan caps) దీని మీద layer అవుతుంది — Quotas & limits చూడండి.
Pagination
List endpoints (/api/v1/scans, /api/v1/findings) descending order లో (created_at, id) ఆధారంగా cursor-based pagination ఉపయోగిస్తాయి. తదుపరి page fetch చేయడానికి ?cursor=<next_cursor> pass చేయండి. Concurrent writes ఉన్నా cursor సరైనదే (OFFSET skew లేదు).
Error రూపాలు
ప్రతి error కనీసం error key ఉన్న JSON object.
{ "error": "invalid_token" } // 401
{ "error": "forbidden" } // 403
{ "error": "not_found" } // 404
{ "error": "quota_exceeded", "quota": {...} } // 429
{ "error": "rate_limited", "retry_after_seconds": 47 } // 429
{ "error": "invalid_input", "issues": [...] } // 400Endpoints జాబితా
Scan ప్రారంభించండి
/api/v1/scansEnqueues a passive scan by default. For verified domains with active authorization, paid plans can request active mode. Returns immediately with a queued scan id; poll GET /api/v1/scans/[scanId] until status === "completed".
curl -X POST https://fixvibe.app/api/v1/scans \
-H "Authorization: Bearer fxv_..." \
-H "content-type: application/json" \
-d '{"target":"https://staging.example.com"}'// 200 response
{
"id": "8f1c4e2a-8c3a-4b6f-9c0d-9b1e8f3c2a4d",
"status": "queued",
"target": "https://staging.example.com",
"mode": "passive"
}మీ scans జాబితా
/api/v1/scansCalling token కు చెందిన org కోసం scans ను newest first గా return చేస్తుంది. ?cursor= తో paginate చేయండి. Default limit 50, max 100.
curl -H "Authorization: Bearer fxv_..." \
"https://fixvibe.app/api/v1/scans?limit=25"// 200 response
{
"scans": [
{
"id": "8f1c4e2a-...",
"target_url": "https://staging.example.com",
"target_hostname": "staging.example.com",
"mode": "passive",
"status": "completed",
"started_at": "2026-05-07T14:00:00Z",
"completed_at": "2026-05-07T14:00:23Z",
"findings_count": { "critical": 1, "high": 3, "medium": 7, "low": 2, "info": 4 },
"triggered_by": "api",
"created_at": "2026-05-07T14:00:00Z"
}
],
"next_cursor": "2026-05-07T14:00:00Z:8f1c4e2a-..."
}Scan పొందండి
/api/v1/scans/{scanId}Default గా scan envelope + per-category severity summary return అవుతుంది. Full report పొందడానికి ?include_findings=true pass చేయండి (noisy scans కు పెద్దదిగా ఉంటుంది — filters తో findings endpoint మంచిది).
curl -H "Authorization: Bearer fxv_..." \
https://fixvibe.app/api/v1/scans/8f1c4e2a-8c3a-4b6f-9c0d-9b1e8f3c2a4dFindings జాబితా
/api/v1/findingsCaller org లోని ప్రతి scan అంతటా filter చేయగల findings list. Filters: severity=critical,high, check_id=secrets.patterns, since=2026-04-01T00:00:00Z. Cursor-paginated.
curl -H "Authorization: Bearer fxv_..." \
"https://fixvibe.app/api/v1/findings?severity=critical,high&limit=50"// 200 response
{
"findings": [
{
"id": "...",
"scan_id": "...",
"check_id": "secrets.js-bundle-sweep",
"severity": "critical",
"title": "Supabase service role key exposed in JS bundle",
"description": "...",
"evidence": { ... },
"remediation": "...",
"cwe_id": "CWE-798",
"created_at": "2026-05-07T14:00:23Z"
}
],
"next_cursor": null
}OpenAPI specification
Machine-readable spec /docs/api/openapi (text/yaml) లో ఉంది. Typed clients కోసం మీ favourite codegen (openapi-typescript, openapi-python-client, లేదా ఏదైనా OpenAPI 3.1 toolchain) లో drop చేయండి.
