How do you secure your APIs from attacks and unauthorized access?

Security is a critical aspect of API development. What methods do you use to keep your APIs safe from unauthorized access or attacks? Do you prefer token-based authentication like OAuth2 or simpler methods like API keys? Share your best practices for keeping APIs secure.