Tommy

The Dependency Map · Episode 48

Api As Digital Dependency Chain

1,873 words

Tommy the Hamburger is charting the Dependency Map. This is where I take the ordinary shit people trust without thinking and trace every fucking hidden line holding it up. I'm going to show you exactly which upstream motherfuckers, systems, and failure points decide whether your life keeps working or not. Nothing is standalone, nothing is self sustaining, and the moment you see the chain clearly, is the moment the comfort hidden right the fuck in front of your face starts rotting off. People talk about APIs like they are neutral plumbing. Simple connectors. Clean interfaces. A polite technical contract between systems. You send a request, you get a response, everybody goes home. That framing is way too innocent. In modern software, APIs are often not just connectors. They are permission gates. They decide whether your app can see data, move money, authenticate users, fetch maps, send messages, verify identity, check inventory, route deliveries, calculate tax, run search, or talk to anything bigger than itself. That is the dependency here: APIs as hidden service couplings that let businesses pretend they own capabilities that are actually rented from somewhere else. What people think an API provides is access. A feature. A shortcut. Integration. Faster shipping. Lower build cost. What it often really provides is conditional dependency. The company did not build payments. It integrated a payments API. It did not build communications. It integrated messaging. It did not build geospatial intelligence. It integrated maps. It did not build fraud detection, identity verification, cloud storage, social login, analytics, or image generation. It plugged into those systems and called the result a product. That works right up until the upstream system changes its mind. So trace it cleanly. Your app promises a function. That function depends on an API call. The API call depends on credentials, permissions, schema stability, rate limits, pricing, and uptime. Those things are controlled by another company. That company has its own margins, legal risk, security posture, abuse concerns, strategy shifts, and investor pressure. Your "feature" is therefore a chain of external tolerances you do not control. And if one of those tolerances tightens, your product starts coughing blood. Failure point one is revocable permission. Developers like to talk about integration as if access were stable once the code works. It is not. API access is permission that can be throttled, restricted, repriced, or yanked entirely. The keys can still validate while the policy changes underneath them. Yesterday you were within limits. Today you are over quota. Yesterday the endpoint was public enough. Today it moved behind an enterprise plan. Yesterday the use case was tolerated. Today legal, abuse, or business policy says go fuck yourself. Failure point two is schema drift. Even without a dramatic shutdown, upstream changes can slowly poison your system. A field gets renamed. A response shape changes. A value starts arriving null. An auth flow adds one more required step. A webhook behaves differently. A version deprecates. The upstream team calls it an improvement. Your downstream service calls it an outage with better branding. Failure point three is rate limit humiliation. A system can work beautifully at low volume and then collapse exactly when success arrives. More users means more calls. More calls means throttling. Throttling means queues, failures, retries, and angry people hammering refresh on a feature that only exists because another company has decided how much of its infrastructure you are allowed to touch per minute. That is a nasty kind of dependence because the better your product works, the harder it can slam into someone else's wall. Failure point four is pricing ambush. This is where the fake cheapness of integration turns into a knife. The API looked affordable when usage was small, or when the free tier was doing the heavy lifting, or when the business deck treated future cost as a rounding error. Then adoption grows, rates change, tiers get redrawn, volume discounts vanish, or some once bundled feature gets moved into a pricier plan. Suddenly your unit economics are being dictated by a company whose roadmap does not give a shit about your margins. Failure point five is abstraction fraud. The app looks self contained to the user. Nice interface. clean branding. cute little promise. But behind the glass it is often a stack of dependencies wearing one trench coat. Login from here. storage from there. notifications from somewhere else. moderation from another vendor. documents rendered by a third service. billing through one API. fulfillment through another. The user thinks they bought one product. In reality they are touching a stitched together relay race of external systems hoping nobody drops the baton. Failure point six is vendor lock in by convenience. Once a team builds around one provider's data model, auth expectations, SDK quirks, dashboard logic, billing semantics, and operational assumptions, switching becomes expensive as hell. Not impossible. Just painful enough that leadership keeps postponing it. That means the company becomes less a customer than a resident. It lives inside the provider's ecosystem long enough that leaving starts looking like surgery. Failure point seven is cascading blame fog. When the feature breaks, who owns the failure? Your support team gets the ticket. Your engineering team gets the pager. Your product team gets the heat. But the root problem may sit inside a vendor incident, a policy change, a silent quota issue, a degraded dependency, or a revocation buried in a dashboard nobody checked that morning. To the customer it is your broken promise. To the business it is somebody else's infrastructure. And in the middle is a swamp of finger pointing and status page bullshit. That is why this dependency gets so nasty. APIs make borrowed capability feel owned. They turn rented access into product identity. They let companies move fast by standing on top of other people's systems, then punish them later for forgetting that those systems were never theirs. You can watch it in ordinary software life. The app that lets users sign in with a social account until the auth provider changes terms or blocks suspicious traffic and now half the customer base cannot get through the front door. The small service that promises real time shipping quotes until the carrier API slows down during peak season and now checkout feels broken. The platform that uses a third party moderation API to keep content clean until false positives spike and innocent users get buried by machine enforcement nobody local can explain. The product that depends on a payment processor's dispute logic until account reviews freeze payouts and the company suddenly remembers that "our revenue" was really "revenue held in someone else's risk system." That is the deeper humiliation here. A lot of digital businesses are not as independent as they sound. They are orchestration layers. Coordination shells. Thin wrappers around upstream capability. Sometimes that is fine. Sometimes that is exactly how software should be built. But if the business talks like it owns the function while the reality is that it rents the function, then what it really owns is exposure. Do not miss the systems above this. Software incentives reward speed. Investors reward growth before resilience. Customers expect feature abundance. Engineers are told not to reinvent the wheel. Cloud infrastructure normalizes service composition. Vendor ecosystems are designed to feel sticky and developer friendly on the way in, then operationally expensive on the way out. All of that pushes teams toward dependency chains they barely map until one of the links starts grinding their teeth into powder. This is why API talk gets stupid fast. One camp says just build everything yourself, which is fantasy unless you want to spend ten years making a bad version of every service already on the market. Another camp says integrations are the modern stack, stop whining, which is how you end up with companies whose core functions are just a permission bundle taped to a dashboard. The real issue is not whether to use APIs. The real issue is whether people understand that every integration imports another company's constraints, incentives, outages, legal posture, and future mood swings directly into their own product. The practical questions are sharp. Which promises in your product rely on endpoints you do not control? How much of your user experience dies if one vendor slows down, throttles, or changes terms? Can you swap providers without open heart surgery? Do your margins still work if the API gets more expensive? Do you store enough of your own critical data to survive a bad upstream week? Does leadership understand that "integrated" is not the same as "owned"? If the answers are ugly, then the problem is not just technical architecture. It is dependency architecture. That means the posture here is defensive composure, not macho independence theater. Map every critical external service. Know which features are impossible without each one. Cache what you reasonably can. Design degraded modes instead of total collapse. Keep abstraction boundaries clean enough that switching vendors is painful, not fatal. Do not let a free tier or smooth SDK trick you into building your whole identity around upstream mercy. And if somebody in product or leadership says "it's just an API," ask them whether the company can still keep its promises if that provider changes pricing, kills a route, adds review friction, or has a very bad fucking Tuesday. Because that answer tells you whether you built a product or assembled a dependency shrine. There is another filthy angle too: APIs quietly transfer strategic power upward. The upstream provider gets to decide which partners get priority, which use cases get tolerated, which data gets exposed, which abuse policies tighten, which enterprise clients get special treatment, and which smaller customers just absorb the shock. If your company depends on a platform API owned by a giant, then part of your roadmap is always living inside someone else's strategy deck whether you admit it or not. Fuck me sideways, a lot of platform strategy is just praying someone else's permissions desk stays in a good mood. And when the chain snaps, the failure feels surreal because nothing in the interface explains the politics underneath it. Users do not see revoked keys, changed auth scopes, updated billing rules, altered response objects, compliance reviews, or anti abuse enforcement. They just see a feature that worked yesterday and is broken today. The business scrambles, engineers triage, support apologizes, managers demand timelines, and the whole company suddenly remembers that a major piece of its product was sitting on conditional access the whole goddamn time. That is the hard landing. APIs are not just technical conveniences. They are rented bridges between your promises and someone else's infrastructure, policies, costs, and tolerance for your existence. When the chain holds, people call it modern composability, leverage, and rapid development. When it breaks, they call it outage, vendor risk, lock in, pricing shock, or integration failure, even when what really failed was the decision to build permanent promises on top of permissions that were never guaranteed in the first fucking place. That's the Dependency Map. Every convenience is sitting on top of a stack of other things staying stable, and once you see the chain, you stop calling it normal and start calling it fucking fragile.