FixVibe

// 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 آپ کو creation پر exactly once دکھایا جاتا ہے۔ Token revoke کرنے سے اگلی call پر 401 return ہوتا ہے۔

bash
curl -H "Authorization: Bearer fxv_..." \
  https://fixvibe.app/api/v1/scans

Token format: fxv_ کے بعد 43 base64url characters۔ Rest میں SHA-256 hash کے طور پر stored؛ plaintext server-side کبھی persist نہیں ہوتا۔

شرح کی حدیں

ہر authenticated request پر دو windows: 10 req/sec burst اور 60 req/min steady، دونوں bearer hash پر keyed۔ Quota enforcement (per-month scan caps) اوپر layer ہوتا ہے؛ Quotas & limits دیکھیں۔

صفحہ بندی

List endpoints (/api/v1/scans، /api/v1/findings) descending order میں (created_at, id) پر keyed cursor-based pagination use کرتے ہیں۔ Next page fetch کرنے کے لیے ?cursor=<next_cursor> pass کریں۔ Cursor concurrent writes کے تحت correct رہتا ہے (کوئی OFFSET skew نہیں)۔

Error کی شکلیں

ہر error ایک JSON object ہے جس میں کم از کم error key ہوتی ہے۔

jsonc
{ "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": [...] }             // 400

Endpoint فہرست

Scan start کریں

POST/api/v1/scans

Enqueues 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 list کریں

GET/api/v1/scans

Calling token سے tied org کے scans return کرتا ہے، newest first۔ ?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 get کریں

GET/api/v1/scans/{scanId}

Default طور پر scan envelope + per-category severity summary return کرتا ہے۔ Full report لینے کے لیے ?include_findings=true pass کریں (noisy scans کے لیے large؛ filters کے ساتھ findings endpoint prefer کریں)۔

curl -H "Authorization: Bearer fxv_..." \
  https://fixvibe.app/api/v1/scans/8f1c4e2a-8c3a-4b6f-9c0d-9b1e8f3c2a4d

Findings list کریں

GET/api/v1/findings

Caller کے org میں ہر scan کے across filterable 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 spec

Machine-readable spec /docs/api/openapi پر (text/yaml)۔ Typed clients کے لیے اسے اپنے favourite codegen (openapi-typescript، openapi-python-client، یا کسی بھی OpenAPI 3.1 toolchain) میں drop کریں۔

REST API — Docs · FixVibe