Updated Jul 15, 2026

Discovery

Discover method-aware API routes on live hosts

Schema-aware API route discovery for modern apps.

Agent

overview

What kiterunner does

kiterunner finds API routes that plain directory brute-force misses. Scan mode replays kitebuilder schemas with the methods, headers, and paths a modern endpoint expects; brute mode enumerates paths from a wordlist with -w.

Use it when hosts look API-shaped and you need route inventory before parameter or vulnerability work. Pull curated lists with --assetnote-wordlist or supply --kitebuilder-list. Tune --ignore-length and --quarantine-threshold so wildcard noise does not flood results.

Feed live hosts from a prober, then pass discovered routes into a later stage. The node takes a hosts file and writes FILE plus FOLDER. Prefer ffuf or feroxbuster for classic path and file brute-force.

source github.com/assetnote/kiterunner

use cases

Where kiterunner fits

Brute-force modern API routes

Scan hosts with kitebuilder schemas so requests carry the right methods and headers, surfacing API endpoints a plain directory brute-force never finds.

Run fast content discovery

Use brute mode with a wordlist and extensions to enumerate paths at speed across a list of target hosts.

Use the Assetnote wordlists

Pull a named Assetnote API-routes wordlist directly so the scan draws on curated, research-backed route lists without hosting them yourself.

Keep wide runs accurate

Tune the ignore-length filter and wildcard quarantine threshold so wildcard responses and noise do not flood the results on a large scan.

reference

kiterunner inputs and flags

42 inputs
NameTypeFlagDescription
hostsFILE·File of target hosts to scan.
scan-modeBOOLEANscanScan mode: replay kitebuilder route schemas against the hosts.
brute-modeBOOLEANbruteBruteforce mode: enumerate paths from a plain wordlist.
wordlistFILE-wNormal or ogl wordlist to use for scanning.
assetnote-wordlistSTRING--assetnote-wordlistPull a named Assetnote wordlist, e.g. apiroutes-210228.
kitebuilder-listFILE--kitebuilder-listOgl (kitebuilder) wordlist to use for scanning.
outputSTRING--outputOutput format: json, text, or pretty (default pretty).
max-parallel-hostsSTRING--max-parallel-hostsMax number of concurrent hosts to scan at once (default 50).

Showing key inputs. kiterunner exposes 42 inputs in total.

Full flag reference (42 inputs)
NameTypeFlagDescription
delaySTRING--delayDelay to place in between requests to a single host.
hostsFILE·Target hosts to scan (positional input).
quietBOOLEAN--quietQuiet mode; mute unnecessary pretty text.
headerSTRING--headerHeaders to add to requests (default x-forwarded-for: 127.0.0.1).
outputSTRING--outputOutput format: json, text, or pretty (default pretty).
kb-modeBOOLEANkbkb mode; manipulate the kitebuilder schema.
timeoutSTRING--timeoutTimeout to use on all requests (default 3s).
verboseSTRING--verboseLogging verbosity: error, info, debug, or trace (default info).
wordlistFILE-wNormal or ogl wordlist to use for scanning.
scan-modeBOOLEANscanScan mode; run route schemas against the target hosts.
brute-modeBOOLEANbruteBruteforce mode; enumerate paths from a plain wordlist.
filter-apiSTRING--filter-apiOnly scan APIs matching this ksuid.
user-agentSTRING--user-agentUser agent to use for requests (defaults to a Chrome UA).
config-fileFILE--configSpecify the config file.
force-methodSTRING--force-methodIgnore the methods in the ogl file and force this method.
profile-nameSTRING--profile-nameName for the profile output file.
ignore-lengthSTRING--ignore-lengthContent-length byte ranges to ignore, e.g. 100-105 or 123,34-53 (inclusive).
kb-mode-debugBOOLEAN-dDebug mode; convert the schema with error handling.
kb-mode-parseFILEparseParse a kitebuilder schema and print the prettified data.
max-redirectsSTRING--max-redirectsMaximum number of redirects to follow (default 3).
wordlist-modeBOOLEANwordlistWordlist mode; inspect cached and remote wordlists.
kb-mode-replaySTRINGreplayReplay a kitebuilder request based on the input.
kb-mode-convertFILEconvertConvert an input file format into the specified output format.
preflight-depthSTRING--preflight-depthDirectory depth to check during preflight; 0 checks only the docroot (default 1).
blacklist-domainSTRING--blacklist-domainDomains blacklisted for redirects; redirects to these are not followed.
disable-precheckBOOLEAN--disable-precheckSkip host discovery.
kitebuilder-listFILE--kitebuilder-listOgl wordlist to use for scanning.
fail-status-codesSTRING--fail-status-codesStatus codes to treat as failure; overrides success-status-codes when set.
assetnote-wordlistSTRING--assetnote-wordlistUse a wordlist from wordlist.assetnote.io by type/name, e.g. apiroutes-210228; append ;N to cap it to the first N lines.
max-parallel-hostsSTRING--max-parallel-hostsMax number of concurrent hosts to scan at once (default 50).
wildcard-detectionSTRING--wildcard-detectionSet to false to disable wildcard redirect detection (default true).
wordlist-mode-listBOOLEANlistList the wordlists cached and available.
wordlist-mode-saveSTRINGsaveSave the wordlists specified (full filename or alias).
quarantine-thresholdSTRING--quarantine-thresholdQuarantine a host as wildcard after N consecutive hits; 0 disables (default 10).
success-status-codesSTRING--success-status-codesStatus codes to treat as success; this is the default mode.
brute-mode-extensionsSTRING--extensionsExtensions to append while scanning.
kitebuilder-full-scanBOOLEAN--kitebuilder-full-scanPerform a full scan without first running a phase scan.
max-connection-per-hostSTRING--max-connection-per-hostMax connections to a single host (default 3).
kb-mode-compile-wordlistFILEcompileCompile a kitebuilder schema and write the data to the specified file.
brute-mode-dirsearch-compatBOOLEAN--dirsearch-compatReplace %EXT% with the provided extensions for dirsearch compatibility.
kb-mode-compile-output-fileSTRING·Output file for the compiled kitebuilder schema (kb compile).
kb-mode-convert-output-file-formatSTRING·kb convert mode output file format.

example

Run kiterunner

kiterunner · command
# kiterunner (kr): scan hosts with an Assetnote API-routes wordlist, JSON outputkr scan hosts.txt --assetnote-wordlist apiroutes-210228 --output json --ignore-length 34
sample output
GET     200 [    1876,   402,   58] https://example.com/api/v1/users             apiroutes-210228 90a3c1f7POST    405 [     167,     9,    2] https://example.com/api/v1/auth/login        apiroutes-210228 5e2b8d04GET     403 [     284,    14,    5] https://example.com/api/v2/admin/config      apiroutes-210228 c47af9b1PUT     401 [     122,     7,    1] https://example.com/api/v1/orders/{id}       apiroutes-210228 1fd6e880GET     200 [    9210,  1204,  173] https://example.com/api/v1/products          apiroutes-210228 7ac0b3e2DELETE  204 [       0,     0,    0] https://example.com/api/v2/sessions/{token}  apiroutes-210228 b93c1a55GET     500 [     841,    52,   11] https://example.com/api/internal/debug       apiroutes-210228 e0d47f26GET     200 [    3480,   410,   62] https://example.com/api/v3/docs              apiroutes-210228 4b1e9f37

guidance

Choosing kiterunner

Use kiterunner when the target exposes an API and you want schema-aware route discovery. It finds routes; it does not test them for flaws. For classic directory and file brute-force, prefer ffuf or feroxbuster.

ffuf

General FUZZ engine for paths, params, and vhosts. kiterunner is API-route-aware with kitebuilder schemas.

feroxbuster

Recursive content discovery with smart defaults. kiterunner targets modern API endpoints specifically.

dirsearch

Classic directory and file brute-forcer. kiterunner adds method-aware API route discovery.

faq

kiterunner questions

scan replays kitebuilder route schemas against hosts with the method, headers, and body each route expects. brute enumerates paths from a plain wordlist (-w) and can append --extensions, closer to classic directory brute-force.

Run kiterunner yourself

A host list and a wordlist feed kiterunner, which brute-forces API routes and writes the discovered endpoints as a queryable output.

Facts on this page come from the live Trickest tool library.