Depende da aplicação. Geralmente, como API RESTful não mantém estado (ou não era pra manter), são utilizados tokens de acesso. Existem algumas técnicas diferentes pra isso. Duas das mais famosas hoje são JWT e OAuth2.0. Não são ferramentas, são especificações, frameworks, basicamente um documento te dizendo o que você faz para ter segurança com tokens de acesso na tua aplicação.
JWT é mais simples de entender, porém a senha do usuário é sempre necessária para adquirir o token, e isso pode se tornar uma falha de segurança, caso a aplicação armazene essas credenciais no browser ou em algum lugar não seguro.
Isso que você usou de api_key e api_secret tá com cara de OAuth. OAuth e OAuth2.0, apesar de parecerem uma continuação, são BEM diferentes. No 2, o framework foi completamente flexibilizado e tornou-se bem mais agradável de entender e desenvolver. Mas ainda assim, a curva de aprendizado existe e pode levar um tempinho até a gente pegar direito como funciona. Eu prefiro OAuth2.0 do que JWT, mas às vezes JWT é suficiente.