For the last couple of years I've been working on a project to index multimedia for language instruction purposes. We had to address exactly this problem- if someone intercepts your API key, which is trivial if you have to put it in JavaScript, you're screwed. The partial solution we've implemented is disallowing requests that require a key from a browser, and requiring client applications to work server-to-server in those cases.<p>It doesn't totally solve the problem, it just moves it; but it moves it to a <i>less vulnerable location</i> if you never have to get your API key into a browser where anyone can check it out by viewing source, or, in extremis, opening FireBug.