Need help with your APIs? I offer API discovery, governance & evangelism services. Explore services →
API Evangelist API Evangelist
Discovery
Learnings
Guidance
Toolbox
Alignment
API Evangelist LLC

The Technical Roots of API Sprawl

July 21st, 2026 · Kin Lane
The Technical Roots of API Sprawl

The organizational roots of sprawl set the stage, but modern architecture is what turns a trickle of new APIs into a flood. In this third post of the series I want to look at the technical drivers–the shifts in how we build and deploy software that quietly multiply APIs and endpoints faster than anyone is documenting them. None of these shifts are mistakes. Each one earned its place for good reasons. But every one of them trades a single, legible system for many distributed pieces, and every piece speaks through an API.

Start with microservices and SaaS. Decomposing a monolith into many small, independent services buys you real things: faster code updates, language flexibility, and granular scaling. I am not here to argue against microservices. But the arithmetic is unavoidable–every service you carve out introduces new APIs so those services can talk to each other. A single application that used to have one internal boundary now has fifty, and each boundary is an interface someone has to document, secure, version, and eventually retire. Add the SaaS tools every team now wires in, each with its own API surface, and the count climbs again. Microservices did not create sprawl, but they industrialized the rate at which new interfaces appear, and documentation practices almost never keep pace with that rate.

Then there is the hybrid and multi-cloud reality. Applications, services, databases, and platforms now live spread across on-premises systems and multiple cloud providers, and the way all those pieces exchange data is–of course–APIs. There are excellent reasons to run this way: resilience, cost, avoiding lock-in, meeting data residency requirements. But distribution has a cost, and part of that cost is paid in APIs. The more places your workloads live, the more interfaces you need to move data between them, and the harder it becomes for any single team to hold the whole picture in their head. A monolith in one data center had a knowable surface. A workload smeared across three clouds and a data center does not, and the seams between environments are exactly where undocumented APIs like to hide.

The third technical root is rapid development cycles, and this is the sneaky one. Modern DevOps built on continuous integration and continuous delivery is designed to ship smaller changes faster, and it is one of the best things to happen to software delivery. But speed has a side effect I have watched play out again and again: version creep. Under pressure to ship, developers add a new API or a new version rather than evolving the existing one. It is faster in the moment–stand up v2 next to v1, ship, move on–and it is death by a thousand cuts over time. You accumulate undocumented, poorly governed interfaces because the pipeline optimized for velocity and nobody put a gate in front of “just add another version.”

Version creep compounds into endpoint proliferation. Each new version tends to introduce new endpoints, so you are not just multiplying whole APIs, you are multiplying the surface inside each one. v1 had twelve endpoints, v2 has fifteen, v3 has eighteen, and the first two never went away because deprecation is nobody’s job on a Friday afternoon. Now you are maintaining forty-five endpoints where a disciplined evolution of the original might have kept you at eighteen. Every one of those extra endpoints is a thing to secure, monitor, document, and pay for. This is what it looks like when an architecture optimized for short-term speed quietly mortgages your long-term coherence.

Here is the pattern that ties all three together: each of these shifts trades one legible thing for many distributed things, and distribution is inherently harder to see. A monolith is a single surface you can reason about. Microservices, multi-cloud, and rapid releases each shatter that single surface into many, and the shards are the APIs. The benefit is real and I would not give it back–but the tax is real too, and the tax is paid in visibility. You cannot casually keep track of what you have anymore, which means the informal, in-your-head inventory that used to be good enough is now dangerously incomplete. The architecture outgrew the manual approach to knowing your own estate.

This is exactly why I keep coming back to machine-readable descriptions of everything you operate. When new APIs and endpoints appear this fast, from this many places, the only sustainable answer is to make each one describe itself–an OpenAPI contract per API, an APIs.json index per collection, discovery that reads your traffic and your repositories rather than relying on someone to remember. You are not going to slow down microservices, un-distribute your clouds, or give up CI/CD, nor should you. What you can do is make the systems that generate the sprawl also generate the map of it, so that visibility scales at the same rate the interfaces do. That is the only way the map ever catches up to the territory.

In the next post I will get into the specific creatures that live in the gaps these technical shifts create: shadow, rogue, and zombie APIs–the undocumented, unauthorized, and abandoned interfaces that turn sprawl from an efficiency problem into a genuine security problem.