Submit a Skill Scan
Queues a security scan of one agent skill: a git repository plus the path of the skill directory inside it. The scan runs asynchronously (roughly 30–90 seconds); poll the returned scan_id with Get Skill Scan.
Pinning commit is recommended. It fixes exactly what gets scanned, and it is what makes the result cacheable: an identical pinned input that has already succeeded comes back immediately with cached: true and HTTP 200 instead of being re-scanned. Pass ?force=true to bypass the cache.
The scan is attributed to the user behind your API key. user_email is supplied by the gateway, so sending it — or user_id, org_id, project_name — returns 400.
Authorizations
Query Parameters
Bypass the dedup cache and force a fresh scan even when an identical pinned input already succeeded.
Body
Body of Submit a Skill Scan. user_email is deliberately absent: the gateway derives it from your API key, and sending it returns 400. The scanner's model and source_content_hash inputs are likewise not exposed.
Full http(s) git clone URL. For github.com URLs the owner/name is derived server-side and stored as repo (used for the star count and the ?repo= filter).
"https://github.com/affaan-m/ECC.git"
Path of the skill directory, relative to the repo root.
".agents/skills/api-design"
Commit SHA to pin the checkout to. Recommended — it is what enables the dedup cache.
Branch or tag to check out when no commit is given.
Response
Cached result for an identical pinned input — the scan was not re-run. The record is recorded under your own user_email and returned complete, with cached: true.
One scan job/result. Fields are omitted rather than nulled, so most of them appear only once status is succeeded. Note error belongs to the RECORD — it is set when the scan itself failed, and the HTTP response is still 200.
queued/running mean the worker is still going; succeeded/failed are terminal.
queued, running, succeeded, failed true when this record copied an existing successful scan of an identical pinned input instead of re-scanning.
The user the scan is attributed to, lower-cased. Set by the gateway from the submitting API key.
owner/name, derived from git_url for github.com URLs.
The skill's own declared name, read out of the skill.
The model the scan actually ran on.
The repository's GitHub star count, fetched live at scan time.
Hash of the scanned skill content.
The scanner's overall verdict for the skill, passed through from the report's overall_risk_assessment.skill_verdict. UPPERCASE, e.g. SAFE or SUSPICIOUS. Deliberately not typed as an enum here: the vocabulary belongs to the analysis engine, so treat it as an opaque string and compare case-sensitively.
"SAFE"
Severity band for the findings, passed through from the report. UPPERCASE, e.g. SAFE, MEDIUM or HIGH. Same caveat as verdict — an opaque, engine-defined string.
"SAFE"
Token accounting for the scan.
The full report document. Also available on its own from Get Skill Scan Report.
Why the scan failed. Present only when status is failed.
How many times the worker has attempted this scan.

