Как сделать секретный ключ API?
Imho программа минимум:
а) принудительно использовать https
b) передавать запрос в теле POST, а не в url.
c) не передавать секретный ключ, а передавать хеш от (данные запроса + секретный ключ).
Все остальное опционально по желанию.
Сделайте ограничение по IP. С возможностью указать несколько сетей. Просто, стандартно, привычно.
Для прозрачности - давайте подробный лог, мол по вашему ключу было столько-то таких-то запросов с такого IP-адреса. По идее градации день-IP-запрошенное действие-количество запросов будет достаточно чтобы и лог не раздувать сверх меры и давать подробную статистику пользователю. Если токенов может быть несколько - то дополнительно по токену счётчик
Не забудьте дать пользователю кнопку "ааа, срочно инвалидируйте мой токен!"