API-first design is valuable, but teams often optimize for elegance of the specification instead of usability for consumers.

The failure mode
The team gets all the fundamentals right:
- clean route naming,
- strict error shape,
- documented pagination,
- versioned contracts.
Then consumer teams try to build real product flows and discover the API is technically clean but ergonomically expensive.
Common traps
Pagination optimized for backend metrics
Cursor pagination may be ideal for throughput, but many product interfaces still need jump navigation and deterministic page semantics.
Versioning that explodes operational surface area
URL versioning is clear on paper, yet maintaining multiple active versions can create monitoring, support, and migration overhead that dominates the benefit.
Status-code purity without actionable context
A pristine 400 response is not useful if clients still need ad-hoc parsing to
produce user-facing messages.
Consumer-first correction
- Start with concrete consumer use cases before locking the schema.
- Ship first-party SDK helpers for repetitive client logic.
- Treat examples and docs as part of API design, not post-work.
- Prefer practical tradeoffs over strict architectural purity.
The best API disappears into the product development flow. If consumers build a wrapper immediately, the interface is signaling missing ergonomics.