Klaviyo’s API is core to our value proposition. Though we are a leader in integrations, we know we can’t build everything under the sun; that’s where our API comes in. By opening up Klaviyo to our developer community, we empower our partners and customers to build whatever they need: from a simple script to tie together 2 disparate sources of data, to a fully-fledged integration.
Our SDKs take this one step further, by offering our developers an intuitive and familiar interface for interacting with our API, in their language of choice.
The challenge: scale + speed
One of the challenges faced by API-first companies is ensuring that downstream tools keep pace with the API.
Consider the figure below:
As you can imagine, developing a workflow to scalably generate these downstream tools becomes increasingly important as the scope of the API grows and the pace of API development accelerates.
At Klaviyo, we’ve made a big investment into API automation. This means that any change to our API is immediately reflected in our downstream tools. This approach minimizes time to release and minimizes code divergence.
We have been able to do this by leveraging OpenAPI, a powerful, machine-readable standard for describing APIs.
We use OpenAPI throughout the API development process: from mocking API prototypes at the product-development stage, to auto-generating a comprehensive OpenAPI specification in production.
SDK generation with OpenAPI Generator
With an OpenAPI spec, we have a single source of truth that we can plug into a wide variety of development tools, available to both our engineering team and our global developer community: SDKs, API docs, Postman Collection, and much more.
One of the most useful tools in our OpenAPI toolbox is OpenAPI-Generator; with this, we are able to generate SDKs that work right out of the box, using just our OpenAPI spec.
However, there are certain features that don’t come built into the base generators. Informed by our developer community, as well as our experience creating and consuming both APIs and SDKs, we built an additional layer onto our SDK automation pipeline, to add these features:
- Client- and endpoint-level authentication
- More intuitive namespace
By having our SDK handle much of the boilerplate code that our developers would otherwise have to write, we free them up to focus on what they do best: creatively building better customer experiences, at scale.