This article by Lori MacVittie of F5 makes some good points that whoever becomes the de facto API in cloud infrastructure might win - and goes as far to say that the API replaces the CLI.
Generally agree but might take it a step further.
Just as we drove a 'de facto' standard CLI at Cisco, de facto standard "infrastructure APIs" likely will emerge. (Already seeing this happening with the AWS API)
But APIs represent a significant evolution. Why? CLI commands and output are unstructured. API commands and output are structured.
I can point to an experience I had at Cisco. There is a Cisco CLI command called ‘show BGP summary' that gives the status of BGP peer – a good window into the status of the complete routing infrastructure. In one of the releases, we changed the display a little bit and all hell broke loose - a ton of P1s to fix.
Turns out nearly all the operators ran the command output thru scripts, parsed them and used output in ops. The small formatting change we introduced broke their operations. We were forced to roll back the change.
With APIs, the output is structured and it would have been possible to introduce additional information without breaking integrations.
Even though Infrastructure APIs will take over some of what was integration with the CLI, a properly managed API allows evolution, migration and co-existence of multiple versions easily.