You want to make it as easy as possible for a client writer to inform the user of abnormal conditions. The easier it is to write a client, the more likely your service will be quickly adopted. Therefore, present error messages both as an easily machine-parsed code, and as a textual description. →
Too much of the marketing of development environments seems to ignore the fact that the thing coders spend the majority of their time doing is either writing code, or thinking about writing code. “Just fill in this wizard, and you've deployed your very own web service” does not impress me much when all the service does is say “Hello World” →