Several years ago there was a big DSL hype which - more or less - faded away. It is very hard to construct a DSL and once established it is cast in stone. In contrast, APIs are much simpler and more flexible.
Take a look at this person's CV [0] and his "Domains and Customers" section [Page 20], you will see where all DSLs are applied.
Not if you're using embedded DSLs, which are basically rich APIs supporting variables and control structures. They can be as fluid as simpler APIs, yet have strictly greater expressive power.