// 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.
Autentifikācija
Katram pieprasījumam jānes bearer tokens Authorization galvenē. Tokeni tiek izsniegti sadaļā Konts → API tokeni; atklātais teksts jums tiek parādīts tieši vienu reizi izveides brīdī. Tokena atsaukšana nākamajā izsaukumā atgriež 401.
curl -H "Authorization: Bearer fxv_..." \
https://fixvibe.app/api/v1/scansTokena formāts: fxv_, kam seko 43 base64url rakstzīmes. Glabāšanā tas ir SHA-256 jaucējums; atklātais teksts servera pusē nekad netiek saglabāts.
Ātruma limiti
Katrā autentificētā pieprasījumā ir divi logi: 10 req/sec burst un 60 req/min steady, abi piesaistīti bearer jaucējumam. Kvotu piemērošana (mēneša skenēšanas griesti) slāņojas virsū; skatiet Kvotas un limiti.
Lapošana
Sarakstu endpoint'i (/api/v1/scans, /api/v1/findings) izmanto kursora lapošanu, kas balstīta uz (created_at, id) dilstošā secībā. Padodiet ?cursor=<next_cursor>, lai iegūtu nākamo lapu. Kursors paliek pareizs arī paralēlu ierakstu laikā (nav OFFSET nobīdes).
Kļūdu formas
Katra kļūda ir JSON objekts vismaz ar error atslēgu.
{ "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": [...] } // 400Endpoint'i
Sākt skenēšanu
/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 atbilde
{
"id": "8f1c4e2a-8c3a-4b6f-9c0d-9b1e8f3c2a4d",
"status": "queued",
"target": "https://staging.example.com",
"mode": "passive"
}Uzskaitīt savas skenēšanas
/api/v1/scansAtgriež skenēšanas organizācijai, kas piesaistīta izsaucošajam tokenam, jaunākās pirmās. Lapošana ar ?cursor=. Noklusējuma limits 50, maks. 100.
curl -H "Authorization: Bearer fxv_..." \
"https://fixvibe.app/api/v1/scans?limit=25"// 200 atbilde
{
"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-..."
}Iegūt skenējumu
/api/v1/scans/{scanId}Pēc noklusējuma atgriež skenējuma aploksni + smaguma kopsavilkumu pa kategorijām. Padodiet ?include_findings=true, lai iegūtu pilnu pārskatu (liels trokšņainām skenēšanām; labāk izmantojiet atradumu endpoint'u ar filtriem).
curl -H "Authorization: Bearer fxv_..." \
https://fixvibe.app/api/v1/scans/8f1c4e2a-8c3a-4b6f-9c0d-9b1e8f3c2a4dUzskaitīt atradumus
/api/v1/findingsFiltrējams atradumu saraksts visās izsaucēja organizācijas skenēšanās. Filtri: severity=critical,high, check_id=secrets.patterns, since=2026-04-01T00:00:00Z. Kursora lapošana.
curl -H "Authorization: Bearer fxv_..." \
"https://fixvibe.app/api/v1/findings?severity=critical,high&limit=50"// 200 atbilde
{
"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 specifikācija
Mašīnlasāma specifikācija adresē /docs/api/openapi (text/yaml). Ievietojiet savā iecienītajā codegen (openapi-typescript, openapi-python-client vai jebkurā OpenAPI 3.1 toolchain), lai iegūtu tipizētus klientus.
