Gowalla said a writeable API was coming soon. Today, the check-in API is available to developers. Though it took longer than anyone expected, the announcement and the API have some nice aspects to help developers use the new features.
Along the the announcement of the API, Gowalla provided guidelines for its use. These best practices help explain why Gowalla was hesitant to have a check-in API and also communicate a set of values to developers, which could be useful within any community. From the developer announcement:
- Encourage users of your application to check in at places they are actually located.
- Avoid incentives or game mechanics that reward checking in from distant locations.
- Never “auto check-in” a person without their explicit permission. This is seriously uncool.
- Encourage social interaction over bot-like behavior.
- Rapid, repeated check-ins with the intent to automate the location and swapping of items will not be tolerated.
- Go easy on the API. Cache data where you can, respond to error messages, and be thoughtful about your user experience.
- Applications that disregard the guidelines above risk violation of Gowalla’s Terms of Service and may have their API access suspended without warning.
Example App (with Code)
Rather than just turn developers loose to the documentation, Gowalla provides an example app. You can demo it and even download the code. Providing working examples can jumpstart a developer's work. It also helps reinforce the guidelines by showing the best practices in action.
Sandbox for Testing
Getting an app just right requires a lot of testing. When each test is a write to a live system, that sullies the data (and with the case of check-ins, could annoy your friends). Gowalla provides a special endpoint of the API just for testing check-ins.
The above doesn't even mention the thorough documentation, complete with full JSON response. With these excellent examples of an API launch, we find ourselves almost forgetting how long developers have requested this feature from Gowalla.