Any client that consumes APIs today has to hard-code back-end logic at deploy time. This means that any change that happens in the API it consumes will break the client, necessitating an update.
Imagine a client that can enter an API without knowing about implementation details, but instead just understanding the semantics of the API. We can get the implementation details of the API at run-time to allow us to change them at any point. This gives us the ability to control features of the API without breaking our clients.
It means that in the future you don’t have to redeploy your client to make changes to the implementation, and you don’t have to leave your existing users in a broken state with a dated version of your application.