Early in my career, I tried to design complete APIs: every edge case, every verb, every status code perfectly defined.

Now? I aim for just enough.

The goal isn’t to describe everything, it’s to make the most common thing easy.

// Before
GET /users/:id/contacts/:contactId/messages/:messageId
// After
GET /messages/:id

Less nesting. Less thought. Fewer docs to maintain.

A clean API isn’t about limiting power, it’s about guiding use. Clarity scales better than coverage.

💡
The best API is one you don’t have to explain twice.