Especially if the service is free, it's not reasonable for companies to bend over backwards to build, support, and maintain an API. One can expect users to build on undocumented and unstable interfaces, but they shouldn't expect the care one might receive if they had a contract to support that functionality.
If you make a service with popular third party extensions and then you make a change that breaks those popular third party extensions, the users are gonna be mad. At you.
The obvious way to reduce the likelihood of that is to publish an API for the third parties to use that won't break. You can say you have no obligation to provide that, and that's fine, but then it's going to break and the users are gonna be mad. At you.