Ask HN: What's the worst API you've run into? - sebleon
======
stephenr
Facebook, far and above anything else.

It's unreliable, unstable, poorly documented, and yet every manager wants to
use it because hey Facebook are a big company their Api must be great right?

------
africajam
RETS, (Real Estate Transaction Standard) without a doubt. Its an ancient xml
protocol that is still important today but really painful to work with!

~~~
ohyeshedid
Seconded. To be fair, though, it's often not the API itself but the mapping
and strange restrictions tied into access to it. Also, the often missing
documentation of what is mapped to where, and why. I'll never touch it again!

------
eb0la
SNMP (simple network management protocol)

Not exactly the best way to control a network device. But it is what we have.

Plus, every machine tries to do something different with the non-standard
stuff. And different parts of the APIs (called MIBs) from the same vendor
follow different reference conventions, so you end up asking a lot of (mostly
useless) data to be able to change something from up to down.

Avoid it if you can and use something simpler, like sshing to the device.

------
drdaeman
Hmmm... Anything enteprisey. I once had to interop with Viacess-Orca RiGHTv
IPTV/DRM clusterfuck, and wouldn't recommend anyone to get remotely close. Not
just to that, but to anything SOAP.

Then, maybe, PayPal's NVP APIs. Quite a mess (although, I guess, I can
understand why it's that way), with docs not really covering the fine details,
esp. all the possible failures.

~~~
jamesmp98
" Viacess-Orca RiGHTv IPTV/DRM "

a what?

~~~
drdaeman
An system used for IPTV services by one of ISPs (a large telco) I've worked
for. Basically, a giant piece of Java EE that strives to make everyone's life
harder. Consumers get all the niceties of DRM, service provides get fun time
trying to tie it with their accounting systems (that's what I had to do) and
trying to figure out when it breaks, etc.

------
fiftyacorn
Ive been using sports API's for side projects this year and found google-fit
api the worst. The problem is that it was conceptually different, based on a
timeline, and lower level while the other API's were based on individual
sessions

------
luca_ing
The old Microsoft Crypto API (the newer one is better, but still bad)

It's been a few years, but from memory:

IIRC you could e.g. install new keys, but not quite list them (somehow only
almost), and you couldn't remove them again.

Amusingly you could also tell the API was developed by three different people,
who preferred different API styles (I remember one was fond of callbacks, the
others apparently not so much). Reading the documentation was pretty funny
because you got pretty good at spotting which functions had been created by
Alice, Bob or Charlie. That was the only thing that was fun about it :-)

~~~
Someone
I guess you mean the API discussed here:
[http://sethnielson.blogspot.nl/2008/12/repost-playing-
around...](http://sethnielson.blogspot.nl/2008/12/repost-playing-around-with-
cryptoapi-in.html) (Badly formatted and code is missing)

------
collyw
Salesforce is a pain in the arse to deal with. I would be surprised if its the
worst, but it makes easy stuff far more difficult than necessary.

------
bbcbasic
This was a bit painful to use:

[http://reaxml.realestate.com.au/docs/reaxml1-xml-
format.html](http://reaxml.realestate.com.au/docs/reaxml1-xml-format.html)

Its an xml format for uploading property listings. Came with a dtd but was
hard to really fathom out which combinations are valid.

------
k__
Some SOAP GPS API I had to use recently.

Didn't know it could take so much code for polling simple data for IDs.

------
taspeotis
Not me personally but this got some traction twice on HN:
[https://mollyrocket.com/casey/stream_0029.html](https://mollyrocket.com/casey/stream_0029.html)

------
jetti
Most market exchanges, more specifically CBOE (Chicago Board Options
Exchange). They use FIX Protocol for their API but they don't follow their own
spec and so it is just guessing as what they actually want.

~~~
kasey_junk
It is sooooooo bad. Lots of exchanges have bad API but CBOE is for sure the
worst.

------
ysarbabi
I can't count them!!! but the best one is telegram bot API:
[https://core.telegram.org/bots/api](https://core.telegram.org/bots/api)

------
nness
Jira's can be very unwieldy. It is a hard one to google answers for and the
Python interface is practically undocumented. It's seems to be often out-
performed by the site itself.

------
jamesmp98
I'm not a fan of Steam's API. Mainly, y issue is that it is very limited. I
had to use Python and Beautiful Soup to extract the data out of webpages for a
project recently

------
Raed667
WebRTC: The concepts are pretty straight forward, but getting something to
work natively without a wrapper or a commercial service seems near-impossible.

------
iamwil
Why had no one mentioned Netsuite? Their API really makes things difficult for
developers. I hate them so much.

------
Tempest1981
Our IT guy used to refer to SMTP as Satanic Mail Transfer Protocol. I think he
was joking -- it doesn't look too bad.

------
sathley
CSS

------
Can_Not
I forgot what it was called, but instead of JSON or XML, this HTTP API used:

    
    
        FOO=ABCDEFG|BAR=QWERTYUIOP

------
cauterized
Phabricator's. Weird gaps, missing fields, bizarre unnecessary complexity,
incomprehensible structures.

------
rcavezza
The Hubspot API is particularly awful.

------
potench
Omniture: eVar7, prop5...? Terrible.

------
josh_fyi
PerfectScript from WordPerfect 5

~~~
eb0la
Just discovered my fist wordprocessor had some kind of scripting inside...

... because you're talking about that Wordperfect 5.0 with blue screen on a
text terminal, right?

I knew you could do some mail merge stuff, but nothing more.

Thanks!

------
aprdm
Zabbix. It's really terrible.

------
BaCtErIaLaMbDa
boardcast of localhost

------
cia48621793
WebRTC: There's simply too much to configure and the modularization is also
exaggerated.

WinAPI: Because of compatibility some old API procedures with ugly designs
have to remain, for example CallWndProc. Bonus: WinAPI is Pascal calling
convention based (__stdcall vs __cdecl).

Unity Engine: Because pascal case sucks (I consider CamelCase for C# master
race).

Webpack/Gulp: again the same clause of WebRTC but
‘parenthesized’/‘bracketized’

