Code based discovery identifies APIs by parsing source repositories, so it is strongest for early inventory and fast identification of endpoints. Traffic based discovery observes live requests, which reveals authentication details, payload behaviour, and usage context. Used together, they give a fuller picture than either method alone, especially for documenting, testing, and validating API exposure.
Why Code-Based and Traffic-Based Discovery Solve Different Inventory Problems
Code-based discovery and traffic-based discovery answer the same broad question from two different angles: what exists in the codebase, and what actually behaves like an API in production. That distinction matters because inventory accuracy affects exposure management, testing scope, and ownership. Code-based methods are usually better for early-stage coverage, while traffic-based methods are better for discovering shadow or externally used endpoints that never appear in a repository scan. The OWASP Non-Human Identity Top 10 is relevant here because API discovery often uncovers machine-to-machine authentication patterns that need separate ownership and lifecycle tracking.
In practice, many security teams first learn the gap between code and traffic discovery only after an undocumented endpoint has already been exercised in production.
How Code and Traffic Discovery Complement Each Other in Practice
Code-based discovery works by analysing repositories, manifests, route definitions, OpenAPI files, and related application artefacts to infer which endpoints should exist. That makes it valuable when teams want early visibility, build-time review, and a record of intended interfaces before deployment. It is strongest where developers keep the implementation and documentation aligned, but it can miss dynamically generated routes, environment-specific behaviour, and integrations that are not expressed cleanly in source.
Traffic-based discovery works by observing requests and responses as systems are used. This approach reveals what is actually being called, which clients are using the API, how authentication is enforced, what payload shapes appear in real use, and whether dormant or undocumented interfaces are still active. It is especially useful for understanding external exposure, runtime dependency, and the practical impact of legacy endpoints that remain reachable long after the code that created them has changed.
- Code-based discovery is better for completeness at build time and for mapping intended ownership.
- Traffic-based discovery is better for validating live exposure and revealing operational reality.
- Code and traffic together help reconcile declared APIs with observed APIs, which reduces blind spots.
- Neither method alone is sufficient when teams need a reliable inventory for security testing or decommissioning.
The key operational difference is that code tells you what developers planned, while traffic tells you what users and systems are actually relying on. The guidance breaks down when code is heavily generated, traffic is too sparse or encrypted for useful inspection, or the two data sources are never reconciled into one inventory.
Where the Difference Breaks Down: Dynamic, Hidden, and Overlapping APIs
Tighter discovery coverage often increases analysis overhead, requiring organisations to balance completeness against noise and reconciliation effort.
There is no universal consensus that one method should be treated as the “source of truth” for API inventory. In practice, that depends on whether the organisation values design intent, runtime reality, or compliance evidence more highly. A code scan may be the better control point for engineering ownership, while traffic observation may be the better control point for exposure assurance. The edge case is serverless, generated, or proxy-mediated APIs, where source and traffic can diverge sharply and neither view is fully reliable on its own.
Traffic-based discovery can also surface authentication and session patterns that matter beyond endpoint counting. For example, it may show whether a token is reused across services, whether a route is effectively machine-to-machine only, or whether a deprecated endpoint still accepts live credentials. That is not just an inventory concern; it changes how teams test, monitor, and retire the interface. When those conditions exist, the most useful conclusion is usually not “which method is better,” but “which method best supports the decision being made right now.”
Standards & Framework Alignment
This section maps relevant standards and security frameworks to the operational risks and controls described in this guidance.
OWASP Non-Human Identity Top 10 and MITRE ATT&CK address the attack and risk surface, while NIST CSF 2.0 and CIS Controls v8 set the governance and control requirements practitioners need to meet.
| Framework | Control / Reference | Relevance |
|---|---|---|
| OWASP Non-Human Identity Top 10 | NHI-01 — Inventory and Ownership | API discovery often reveals machine-to-machine interfaces and their owners. |
| Recommendation — Inventory API-authenticated machine interactions and assign accountable ownership for each discovered interface. | ||
| NIST CSF 2.0 | ID.AM-1 — Physical devices and systems are inventoried | API discovery is fundamentally an asset and exposure inventory problem. |
| Recommendation — Maintain an authoritative inventory of APIs and reconcile code and traffic sources continuously. | ||
| CIS Controls v8 | 1 — Inventory and Control of Enterprise Assets | Discovered APIs behave like exposed assets that need inventory and governance. |
| Recommendation — Record exposed APIs as managed assets and remove unknown or orphaned interfaces from scope. | ||
| MITRE ATT&CK | T1190 — Exploit Public-Facing Application | Traffic discovery helps reveal externally reachable API surfaces attackers may target. |
| Recommendation — Map externally observed APIs to public-facing attack surface and prioritise testing on exposed routes. | ||
Practitioner Guidance
What to prioritise: Use code-based discovery first when you need engineering inventory, release validation, or a repeatable baseline for planned APIs. Use traffic-based discovery first when you suspect undocumented exposure, shadow usage, or disagreement between documentation and reality.
What to verify: Confirm that the two discovery methods are reconciled into one governed inventory, with clear ownership for endpoints that appear in traffic but not in source. If they disagree, treat the mismatch as a finding, not a data-quality nuisance.
Decision rule: If the question is “what should exist,” code-based discovery is primary. If the question is “what is actually exposed and used,” traffic-based discovery is primary. If the question is “what must be tested or retired safely,” use both.
Practitioner takeaway: The biggest mistake is treating API discovery as a single method problem when the real control objective is to reconcile design intent with runtime exposure.
Related resources from NHI Mgmt Group
- What is the difference between traffic-based API discovery and agentless API discovery?
- How do security teams decide between traffic-based discovery and code-based discovery?
- What is the difference between role-based access and API key governance for NHI security?
- What is the difference between network detection and identity-based discovery for AI agents?