I'm designing an API (first time) and it'll be a very public one (for a free online service).

I'm considering between returning structures such as `InsertResult` which can have the properties for when it fails or succeed (i.e. how much rows), the error messages and so on. Now, the other way is to just throw exceptions from the API insert method. I know this is kind of a "general and open" question but, what is considered more clean and polished for an API?

**Scenario**

The API is a DLL (which internally calls and consume Web Services from 4 or 5 different sources and that depending on things like geolocation decides which service to interact with). It's built using C# and Mono. Usage scenarios includes the API as library from desktop, mobile and web clients. That's indeed the problem, suppose an offline use case, from the web client it simply won't happen but from the mobile or desktop it can (from the mobile more frequently) what to do then? how to manage say an Insert call to store a mock from a mobile app just when it got offline. Or when another (server related) error happens.