Since our last update we've been hard at work optimising the v3 API, improving performance by lowering the average latency. We've also been fixing bugs, improving the risk score and detection systems. In short it's more accurate and performative since we last spoke.
The adoption rate of the v3 API has been much higher than our projections, we expected a very slow ramp up considering there's no third-party libraries for it yet and we specifically said it's an open beta and there may be bugs. Even so we've seen heavy deployment by CORS users (client-side Javascript implementations of our API). In hindsight this should be expected since we updated our Javascript example code to use the v3 API already.
In addition to that we've also seen some of the game-server plugins and WordPress plugins update to the v3 API which has brought thousands of end-users to the v3 API very quickly. We're very thankful to all the developers who took time out of their schedules to do this and we are taking the stability of v3 very seriously as a result.
To help with the transition to the new API we've updated our API documentation again, we added a new section called API Responses which goes into greater detail about the new response format and what you can expect will and won't change between queries.
In our last blog post we detailed how we had updated our lookup pages to use the new v3 API and vastly revamped its interface. We've been migrating more of our own services to v3 and that has been instrumental in uncovering edge cases in the API that we weren't happy with and improving those, especially around the risk score and staggered detection types but also assigning values to keys when data is missing or lacking in fidelity.
The last thing we wanted to mention is the PHP library we maintain for the service. As mentioned in our launch post we were going to update the library to support the v3 API and two weeks ago we did just that. In the past day though we updated the library again to correct some issues and add HMAC (Hash-based Message Authentication Code) support for improved security. For those unaware this is a feature that lets you verify the API responses haven't been tampered with by comparing SHA-256 hashes of the payload using a pre-shared key from your customer dashboard.
You can find the updated library on github here and we've also created an upgrade guide here as this new library is incompatible with the previous library and so requires you to update some of your own code. The major change is that we've moved from numeric values to booleans for the options array and response array. There's also a lot more options available so you can be more granular in what you detect.
We're still on schedule for a stable release of the v3 API, we're getting a lot done including a milestone with regards to performance. In our testing we're now consistently seeing 3ms answer times from the v3 API, this is partly due to its new data caching architecture so as more users transition to v3 we're seeing higher cache hit rates for data and that improves latency. We're also seeing a large improvement for batched queries, comparing v2 to v3 we're 60% faster at delivering an answer for a request containing 1,000 addresses which is an incredible speed improvement.
So that's the update for this month, we'll do another when there's a lot of new things to discuss. Thanks for reading and have a wonderful rest of your week!