The distinction is generational more than technical. “Web services” was the term of art for the SOAP and WS-* world: XML envelopes, WSDL contracts, a stack of specifications for security, transactions, addressing and reliable messaging, and a great deal of enterprise ceremony. “Web API” was the term the next generation used for what replaced it: plain HTTP, JSON payloads, an API key, and documentation you could read without a training course.
That reaction shaped everything that followed — the preference for simplicity, the embrace of HTTP and JSON, the developer-first ethos, the suspicion of heavyweight standards. The whole web API movement defined itself against SOAP’s complexity.
In casual conversation today the terms have collapsed into each other, and people say “web service” when they mean any HTTP endpoint. Inside an enterprise that has been running since before 2010, though, the distinction is still live and still meaningful, because both generations are almost certainly still running in production side by side.