A warning to hackers: be careful building on Twitter's API

07 Jan 2011

Over a year ago I built a Facebook app called SmartTwitter (now called Smart Tweets). It was a fun app to build: it was written in the Go programming language, and it spawned a couple of popular Go open-source projects, like web.go, and twitterstream. The app is trivial: it copies your status from Twitter to Facebook, but doesn’t copy stuff like @mentions, @replies, and #hashtags (by default). Since I launched the app, the service steadily grew. I did my best to keep up with the new Twitter API recommendations. For instance, when they launched the streaming API, I immediately moved to it. Every few months I requested limit increases for the app, and Twitter was usually happy to oblige.

Until today.

The app hit the 100k limit for the follow stream. I asked Twitter for an increase in the limit, but it was rejected. The reason wasn’t very clear, but they claim the app wasn’t following the Tweet display guidelines. In my opinion these rules were created to prevent spam and content theft, which are problems that Smart Twitter doesn’t contribute to. Implementing these suggestions would, in my opinion, detract from the simplicity of the app. They actually suggested looking at the official Twitter app for the display guidelines, which is ironic, because the reason I built the app was to solve some of the noise problems with the official app.

I work hard to keep this app running because I personally think it’s useful. I make no money from this app (in fact it costs me several hundred dollars a year to run). It was even featured on Techcrunch. Moreover I think it provides a valuable service to Twitter, because it encourages people to post status updates on Twitter instead of Facebook.

If anyone is considering building an app using the Twitter streaming API, I’d just use this as a warning. If the app gets popular, you’re basically at the mercy of Twitter when you want rate limit increases. Right now the app can’t be installed by new users, and I’m getting dozens of support requests each hour.

Update 1

This post was written out of frustration for Twitter not granting me the bird-dog access. They suggested I use the new Site Streams API, which gives you unlimited access to streams for users that have authorized your application with OAuth. However, this API was launched a few weeks ago, so I had no idea it existed. Telling me I should have been using it all along is strange. Also, because it doesn’t have the OAuth workflow built in, so it would take a while to develop. Meanwhile my app won’t work for new users, which, in my opinion, are extremely valuable for any application. Overall, though, Twitter has been very responsive through this process, and I thank them for that.

Update 2

The Twitter API team graciously agreed to give me birddog status while I implement the site streams API. This is a great compromise for the Smart Tweets users. Thanks Ryan and Brian!