The most criminal is not using plain language. Developers using acronyms, cryptic words, combined words, and other non-sensical language is just not good practice. I’m not talking RESTful resources, I’m just talking about being able to look at the host and path for your API and understand what the hell it does in seconds.

Not brining the value out into the design. Developers burying what an API does into query parameters, and complex bodies, and not reflecting the value an API delivers in the API path. Why hide it? Take the time to expose the value via simple, intuitive API paths that people understand.

Not playing with other popular APIs like Twilio, Stripe, Github, Facebook, Twitter, and others to see what common patterns they can emulate. Often leading to reinventing the wheel, naming things in strange ways, and producing a design that isn’t intuitive.