I was going to write this as a comment, but it got too long:
I've got about 50% of the way through my JS app using your wrapper, but I'm heading back to work after some extended leave and there's no way I'm going to get it finished. That said, what I used worked great, only one suggestion, it would be great if the requests could be synchronous (rather than a-sync), because then when queuing up multiple requests to the same method you don't need to create a watcher.
E.G. I wanted to retrieve 5 individual questions, mixing and matching them from different sites. So:
for (var x=0;x<sitedata.length;x++){
var soapi = new Soapi.RouteFactory(sitedata[x][0], apiKey);
var q = soapi.QuestionsById(sitedata[x][1]);
q.getResponse(function success(data) {
//.....
})
}
then needs a setInterval
to detect when all the responses have come back (increasing a progress meter along the way). Not a huge thing, probably won't upset too many people, but I found myself constantly creating watchers to then fire another function.
Apart from that, I applaud a job well done and I look forward to your 30" monitor winning application (although in my opinion you'll be hard pressed to beat Six to EightSix to Eight - if it gets released before the cutoff date).