REST API discovery, GraphQL detection, parameter fuzzing.
59
69%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
View guide
Passed
No findings from the security scan
Fix and improve this skill with Tessl
tessl review fix ./packages/decepticon/decepticon/skills/standard/recon/web-recon/api-enumeration/SKILL.mdSurface REST/GraphQL endpoints and the parameter surface of known endpoints. This sub-skill covers everything between "the directory tree is mapped" and "I know what to fuzz".
# Common API paths
ffuf -u https://<target>/api/FUZZ -w /usr/share/wordlists/api-endpoints.txt -mc 200,201,401,403,405
# Version enumeration
for v in v1 v2 v3; do
ffuf -u "https://<target>/api/$v/FUZZ" -w api-wordlist.txt -mc 200,201,401,403
done
# Check for Swagger/OpenAPI docs
for doc in swagger.json openapi.json api-docs docs/api swagger/v1/swagger.json; do
code=$(curl -s -o /dev/null -w "%{http_code}" "https://<target>/$doc")
echo "$code $doc"
done# Common GraphQL endpoints
for path in graphql graphiql playground api/graphql; do
# Introspection query
curl -s -X POST "https://<target>/$path" \
-H "Content-Type: application/json" \
-d '{"query":"{__schema{types{name}}}"}' | head -c 200
echo " → $path"
doneLook for in responses:
api_key, apiKey, access_token, bearer, jwtAuthorization header patterns# GET parameter fuzzing
ffuf -u "https://<target>/page?FUZZ=test" -w /usr/share/wordlists/params.txt -mc 200 -fs <default_size>
# POST parameter fuzzing
ffuf -u "https://<target>/login" -X POST \
-d "FUZZ=test" -H "Content-Type: application/x-www-form-urlencoded" \
-w /usr/share/wordlists/params.txt -mc 200 -fs <default_size>
# Header fuzzing
ffuf -u "https://<target>/" -H "FUZZ: test" \
-w /usr/share/wordlists/headers.txt -mc 200 -fs <default_size>a04f96b
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.