An API is a user interface. The users just happen to be other programmers, and the interaction happens through JSON payloads and status codes instead of buttons and menus. Every discipline that applies to good UI design applies here too: minimize surprise, make the common case easy, make the uncommon case possible, and make the cost of a mistake visible immediately rather than three steps later. The difference that makes API design harder, not easier, than UI design is that a human using a confusing interface can pause, squint, and figure it out; a program calling a confusing API either fails loudly, fails silently, or works by accident until the day it doesn't.
This course is not going to hand you a checklist of rules to apply mechanically, because the honest answer to almost every API design question is "it depends on your consumers, your data, and what you're optimizing for." What it will give you is the judgment to make that call deliberately instead of by accident: knowing which tradeoffs a decision is actually making, not just which pattern looks familiar. A resource that returns 200 OK for a validation failure because someone copied a snippet without checking whether it fit the situation is not a small mistake — it is a decision nobody actually made, shipped anyway.
Good API design also has an asymmetric cost structure worth naming up front: the cost of designing carefully is paid once, by one team, before anything ships. The cost of designing carelessly is paid over and over, by every consumer who has to work around the inconsistency, guess at the undocumented behavior, or write defensive code because the API's own contract can't be trusted. A ten-minute naming discussion in a design review is cheap. A migration six months later to fix a naming inconsistency that's now baked into forty client integrations is not.