Hey HN,
We’re Sean and Daniel, founders of OneGraph (https://www.onegraph.com). We're a single GraphQL endpoint that brings together all your SaaS APIs.
We make it easy to build integrations for your app into services like Salesforce, Stripe, GitHub, Clearbit, and Gmail. Since each service’s API is unique you usually have to read their documentation, implement their specific authentication, make very specific calls to their servers, etc.—it seems normal right now, but all of this adds up.
Both of us have done plenty of integrations into these services for different startups over the years, so we knew intimately how painful it can be, especially when you have to coordinate data from multiple services.
Then GraphQL came along, and we saw that it could be a query language for all of the APIs we wanted. We can express our data requirements—even between services—succinctly, and let a single execution engine figure out how to translate those requirements to specific API calls.
We’ve built a GraphQL service that does just that - it knows how to talk to each backend API we support to pull out exactly the data you need. Here’s an example of how it works:
{
youTubeVideo(id: "YX40hbAHx3s") {
snippet {
title
uploadChannel {
snippet {
title
}
twitterLinks { # twitter accounts associated with the channel
twitter(first: 5) {
tweets {
text
}
}
}
}
}
}
}
(You can see the full result of the query
https://gist.github.com/sgrove/5f17d046e535763c3c85258054ed0...
or play with it yourself
https://bit.ly/2NL89GA)
We charge based on the services you’re integrating with, whether you want white-label authentication for your users, and overall usage. Eventually we’ll offer an on-premise solution for bigger enterprises that need it.
We’d really appreciate your feedback on OneGraph. We have a lot we want to improve on, and would love to hear where you want us to go next.
I would expect concurrent API requests made via GraphQL to make this worse - since it's very easy to accidentally construct a GraphQL query which results in a flurry of API requests under the hood.
How are you handling this? Are you doing your own internal rate-limiting, or are modern APIs more generous with their limits than they used to be?