Our company isn't very good at prioritizing inter-team dependencies. For example, team A depends on team B to deliver a new API, but team B fails to deliver. The API is the most important thing for the company, but often Team B is prioritizing their own projects. Team A ends up repeatedly pinging and negotiating with team B, but then ultimately implements their own hacky workaround, degrading the product and introducing technical debt.
I have a few ideas for how to fix things, for example by having each team maintain a backlog for their dependent teams, or instituting some sort of story point "currency" that the requesting team can spend. But I first wanted to ask people here how they solve this problem. Ad hoc conversations? Constant pinging and negotiation? Something more formal? Maybe this can't be solved with process and must be solved culturally instead.
Become an autonomous team, break down all dependencies.