CEO at Clearbit
Alex founded Clearbit from his apartment in 2014. He likes his tea hot and Earl Grey.
There's a fair amount that's been written [https://clearbit.com/blog/versioning-apis] on how to version APIs, but what nobody talks about is what goes on behind the scenes--how versioning is implemented at a code level. One reason behind this is that the implementation is often a mess, a nestled spaghetti of conditional statements littering your codebase that usually looks something like this: if params[:version] == 1 show_something else show_something_else end At Clearbit we've been con
We've been busy improving our APIs based on your feedback, and I'm excited to announce a few additions we've just shipped. Versioning The biggest change is the addition of versioning to our APIs. We use a date based version which you can pass through in a API-Version header when making API requests. curl 'https://person.clearbit.com/v1/people/email/alex@clearbit.com' \ -H 'API-Version: 2015-05-11' All of our clients support setting a version. For example with our Ruby library: Clear
We've been dealing with a fair amount of signups that are either triggered programmatically or by using fake email addresses. This is a bit of a hassle for us--not only are these signups taking advantage of the 50 free calls on our free tier (which actually costs us), it's also a pain for our sales team to sift through fake leads. Identifying these signups programmatically was proving to be quite difficult though. The attackers were using a variety of proxy IPs and there weren't obvious similar
Versioning APIs is never fun but if you provide a public API it's something you'll almost certainly run up against eventually. At Clearbit we've just started adding breaking changes to our API and have had to start thinking about how we're going to approach versioning. There seems to be a few main approaches that people have tried: Use the URL This is a fairly straightforward solution - simply add an incrementing version number in the URL and route different API versions to different endpoints
We're often seeing new and inventive ways our customers are using our APIs, and one that got us particularly excited was Svbtle's [https://svbtle.com] signup. As soon as you've entered your email in Svbtle's registration form they make a request to Clearbit's Person API [https://clearbit.com/docs#person-api], look up the email, and use the returned information to populate the rest of the form. Go ahead and give it a shot [https://svbtle.com/signup]! This is a pretty neat way of reducing signup