Accounts and API keys really sound like a good idea if nothing else stops people other than your reputed developers who can access your API.
It should be fairly simple to have a simple database table that logs the last time a particular API was accessed, and was refused reuse if it was accessed too many times over a given period of time. If possible, come back the next time the API is available for reuse in the exit, so developers can throttle accordingly, instead of going for a trial and error approach.
Do you expect the same data to be used over and over again, or will it be completely random? How about caching output and cache maintenance only to the developer until the API is ready for reuse? This approach is much less dependent on accounts and keys.
Leigh source share