The problem with the premise that APIs fulfill the promise of SOA is that APIs are necessary but not sufficient to describe the interaction between two services. For example, protocol semantics such as retry in case of network failure is absolutely critical to the definition of the contract. The Slack developer &quot;API&quot; is a good example -- not only do they specify your standard REST&#x2F;websockets APIs, but they include semantics such as rate limiting.