Good API design is invisible. Bad API design causes endless support tickets. Here's what I've learned designing APIs at Google.
URL Structure
Response Format
Pagination Strategies
| Strategy | Pros | Cons |
|---|---|---|
| Offset/Limit | Simple, random access | Inconsistent with inserts/deletes |
| Cursor-based | Consistent, performant | No random page access |
| Keyset | Very fast, consistent | Requires sortable unique column |
Versioning
Rate Limiting Headers
Golden Rules
- Be consistent (naming, casing, error format)
- Use HTTP status codes correctly (don't return 200 for errors)
- Include request IDs for debugging
- Document everything (OpenAPI/Swagger)
- Version from day one