Please simplify API
What is it with enterprise companies and the obsession to make the simple complex?
I have a golden rule, if an API can not be understood and implemented in less then 30 minutes its useless and over engineered.
Ultimately, all an API is, IS a FFI (a Foreign Function Interface):
It should just be a list of calls, with their parameters, some super basic authentication with well defined return payload structure. The API documentation should therefor just really document those Method calls and their parameter types.
But of course, we can't have nice things, and instead we need to build huge towering castles of burning manure.
Thank you for your feedback. We will actively work to improve the interface.
Just starting my journey on trying to get hold of Microsoft Advertising data. I feel ill seeing that you are still pushing SOAP.
Looking through the Python and PHP examples doesn't fill me with joy either.
Was planning on using Data Factory to pull this data. Microsoft coming up (very) short again...
Very complicated API. Why are you obsessed with OAuth? When user logs into his account he should be able to request API key with chosen scopes which would be sufficient to authorize the API (it can have expiration date).
David Finkelstein commented
We cannot even get the basic authentication working and getting support from Microsoft is like pulling teeth
Wyatt Benno commented
Ok. I have oauth tokens now. When I look at the docs... it shows code samples and no endpoints. I want to use the oauth tokens in a post header to pull reports.
should return a JSON response with pagination details.
This is the way most modern apis work. Post request with auth, and then a simple response with data or errors.
While looking at the docs I see a lot of example code. When I try the Python code, it wants me to add the whole example/ file because all of the files are interlinked. It should be: 'This is how you pull reports', 'TYPE API KEYS HERE'. Not download a full example directory and modify it to maybe work for your use cases.
Where are the endpoints in the docs? Is it POST, GET, etc? What needs to be in the header to auth the request?
Every 6 months I come back to Bing Ads API. Each time I spend 2 or 3 entire days trying to implement it. And each time I stumble upon some error or some lack of BASIC FUNCTIONALITY. Something as simple as adding a campaign seems like an impossible task. And I'm not new to programming or working with API. I've implemented Google Ads API 5 years ago. And still, I have not been able to implement Bing Ads API for what I need. And what I need is simple. Upload campaigns, ads, groups, keywords, and download reports. Very basic stuff. But for Bing Ads, it's not basic at all. It's so over-engineered and the error messages are USELESS. for example, adding a campaign, I get an error that my ArrayOfCampaign is empty. BUT ITS NOT. Goodbye Bing Ads.
An anecdote. Over this past week I've been attempting to pull together daily campaign spend across Facebook, AdWords, and Bing Ads. The end goal being a daily cost table for another developer to integrate with existing conversion data.
On day one, I was able to build out the basic application structure, database, and administration page; integrate with Adwords and Facebook, and collect historical data from each. It was turning out to be a productive week. Day two, I started adding Bing Ads to the mix. It's now day three and half and I finally have some Bing Ads data. It's been a struggle.
I recommend starting over with a focus on making the API intuitive, based on modern web norms. I also recommend doing some usability studies. Grab some .net, django, php, and nodejs developers with zero Bing Ads API experience, and measure the ramp-up time against your competitors (FB and Google). Keep in mind that most developers are not specialized marketing professionals, we might work with your API a couple days a year.
If you're looking for specific issues, I've encountered, here are a few that stick out.
* Nobody uses SOAP anymore. That's not to say it's the worst protocol in the world, but there's a lack of support both in programming modules and support sites when things go wrong. And they do.
* The API is fragile and unintuitive. I don't know how it is a fault to put a start date prior to an end date in a SOAP request, but this actually happens. XML elements are intuitively unordered, and what conscientious developer wouldn't put start before end? 
* Please stop modeling the supporting programming modules on the C# implementation. The python library should be pythonic. That means laying off classes that are basically arrays and dicts, not handing class instances back from methods, not using factory patterns and so on. It wouldn't hurt to lay off the enums as well. The python library feels foreign and incomprehensible. Thankfully, I have some experience in C#/.net, so I could sort of understand what was going on, having been accustomed to those idioms from previous C# development.
* We need a better authorization scheme for the 97% of us trying to connect a Bing Ads and application that exist under the same Microsoft account. OAuth 2 is a thorn (this has nothing to do with Bing Ads). Let us generate a permanent, retractable token in the Bing Ads admin that we can connect with without having go through the authentication dance up front. Alternatively, take a page out of the Facebook, and allow developers to generate long-lived access tokens on a web page to get started with before needing to wire up a complete OAuth workflow.
* The API is at version 12? That's a lot of legacy. While I'm sure many of those revisions never were public facing, I have no idea which were and which were not. It feels like a minefield of old documentation, especially with regard to authorization which turned into my biggest hang-up.
* I don't understand the use-case of generating a report file remotely, cycling for a status of "success", then downloading (and unzipping) it. Who wins with this arrangement? It is standard practice to return a HTTP response with results as the content, be it json, xml, or csv.
* The API should not be so complicated that using a programing package/module is necessary. With Google or Facebook, for example, it's just basic HTTP requests all the way down. You can use a module for reuse and such as things get more complicated, but it's easy to get started and to understand the basics of the API with constructed HTTP requests, which almost all developers are familiar with. There shouldn't be a need to abstract away the complexity.
Hopefully, some of this is constructive and doesn't come off as a rant. I think Bing Ads is great, but think the API needs to be simplified. Thanks for taking the time to read my feedback.
Could you please be more concrete which part is the most painful?