4. it has a @twitter account
• communicates feature updates, new versions, etc
• exposes itself in API directories
• provides health / uptime / downtime info
6. it’s beautifully described
• generous and easily navigated documentation
• code examples for “relevant” languages
• metadata for code generation and testing
10. it has a sandbox for experiments
• limited functionality or content
• simulations of errors and out-of-bounds situations
• no limits on usages – doesn’t consume quota
12. it has out-of-the-box clients
• lowers barrier of entry
• hides complexity related to authentication, parsing, etc
• adapts API to client paradigms
14. it knows and serves its user
• uses the right technologies for the domain
• respects security and authentication requirements
• adopts common nomenclature and naming
16. it’s aware of its constraints
• continuously evaluates its performance and availability
• monitors 3rd party APIs and dependencies
• handles unexpected events gracefully with the user in mind
18. it’s prepared for (r)evolution
• versioned from day 1 in line with best practices
• communicates and implements a versioning strategy
• handles “old” clients gracefully