Loading...
Loading...
Run a managed pentest of a web app or API through the app.strix.ai REST API — no local Docker, LLM key, or install needed. Create an API token, register domain/repository assets, launch and poll scans, triage vulnerabilities, export SARIF, download PDF/DOCX pentest reports for SOC 2 and other compliance evidence (Enterprise plan), start PR reviews, and set up schedules and webhooks. Use when the user wants continuous or scheduled pentesting-as-a-service, an auditor-ready pentest report, scans tracked in a team dashboard, or security testing from a sandboxed agent/CI environment with no infrastructure.
npx skill4agent add usestrix/strix managed-pentesting-with-strixhttps://docs.app.strix.ai/openapi.jsonhttps://app.strix.ai/api/v1Authorization: Bearer <token>| Scope | Grants |
|---|---|
| list/read/report scans · create/rerun/cancel scans |
| read findings · update status & notes |
| read domains/repos · register/update them |
| read schedules · create/trigger recurring scans |
| trigger PR security reviews |
| manage webhook subscriptions |
| create/revoke API tokens |
export STRIX_API_TOKEN="<token>"
BASE=https://app.strix.ai/api/v1
auth=(-H "Authorization: Bearer $STRIX_API_TOKEN")jq401402403422# Domain (black-box / live target). Requires domain verification before external scanning.
# asset_type must be one of: web_app | api | attack_surface.
curl -sS "$BASE/domains" "${auth[@]}" -H "Content-Type: application/json" \
-d '{"domain":"staging.example.com","asset_type":"web_app"}' | jq '{id:.domain.id, status, reachable, verification}'
# Repository (white-box / code review). `full_name` is "owner/name".
# Send one repository object, or a bare JSON array for several — not an object
# wrapping a "repositories" key (that is rejected with 400).
curl -sS "$BASE/repositories" "${auth[@]}" -H "Content-Type: application/json" \
-d '[{"full_name":"org/app","provider":"github"}]' | jq '.repositories[] | {id, full_name}'GET /domainsGET /repositoriesassets:read?page=&limit=POST /scansscans:writedomain_idsrepository_idsinternal_targetsscan_id=$(curl -sS "$BASE/scans" "${auth[@]}" -H "Content-Type: application/json" -d '{
"engagement_type": "live_test",
"domain_ids": ["<domain-uuid>"],
"focus": "IDOR, auth bypass, SSRF",
"context": "Staging. Test account creds are configured as a test user.",
"notify_on_completion": true
}' | jq -r .scan_id)
echo "$scan_id"CreateScanRequest| Field | Purpose |
|---|---|
| |
| targets (at least one) |
| narrow to specific paths / branches |
| authenticated scanning, incl. |
| extra HTTP headers (e.g. API keys) for the target |
| steer the agents |
| attach uploaded source/docs archives for white-box context |
| email when done |
{ scan_id, title, status }statuspendingGET /scans/{scanId}scans:readpending → running → completedfailedcancelledwhile :; do
s=$(curl -sS "$BASE/scans/$scan_id" "${auth[@]}" | jq -r .status)
echo "status=$s"; [[ "$s" =~ ^(completed|failed|cancelled)$ ]] && break
sleep 60
doneexecutive_summarymethodologyrecommendationsfindingsvulnerabilities[]title, severity, status, cvss, cwe, endpoint, method, impact, technical_analysis, poc_description, poc_script_codecode_filecode_diffcode_beforecode_aftercurl -sS "$BASE/scans/$scan_id" "${auth[@]}" \
| jq '["critical","high","medium","low","info"] as $order
| .vulnerabilities
| sort_by(.severity as $s | $order | index($s))
| .[] | {title, severity, endpoint, cwe}'critical | high | medium | lowopen | in_progress | fixed | ignoredsort_by(.severity)GET /vulnerabilitiesvulnerabilities:read:write# SARIF 2.1.0 for GitHub code scanning / ASPM ingestion
curl -sS "$BASE/scans/$scan_id/sarif" "${auth[@]}" -o findings.sarif
# Report. The format and file type are query params (`Accept` is ignored):
# format=technical (default) | retest | attestation | executive_summary
# type=pdf (default) | docx
# Any report download requires the Enterprise plan; formats beyond `technical`,
# DOCX, and white-label branding are Enterprise-only too. Scan must be completed.
curl -sS "$BASE/scans/$scan_id/report?format=technical&type=pdf" "${auth[@]}" -o strix-report.pdfpr_reviews:writecurl -sS "$BASE/pr-reviews/start" "${auth[@]}" -H "Content-Type: application/json" \
-d '{"repository_full_name":"org/app","pr_number":123}'GET /pr-reviewsGET /pr-reviews/{id}schedules:writewebhooks:writescan.completedvulnerability.created