Providers
30+ providers. Your keys, or ours.
Bring your own API keys and pay providers directly, or use Platform Access and skip the provider account.
How access worksRoute AI requests across providers, fall back when one breaks, cap spend per key, and trace every call in real time.
The two-minute tour
Connect a provider, build a route, ship one API key, and watch the requests arrive.
Routing, live
Each request is checked against its key, its spending limit, and its route. LatentKit ranks the models by your strategy, skips providers that are failing, and falls back on its own when one does.
Purposes
Tag the models in a route with purposes like support-reply or summarize. Your app sends the label, and the route decides which model answers. Swap the model in the console and the code never changes.
const reply = await client.chat.create({
purpose: "support-reply",
messages,
});
support-replyPriority2 modelsThen the rest of the route, in order.
lk_applied_purpose "support-reply" model claude-sonnet-4-5
const summary = await client.chat.create({
purpose: "summarize",
messages,
});
summarizeCost2 modelsThen the rest of the route, in order.
lk_applied_purpose "summarize" model deepseek-chat
const fields = await client.chat.create({
purpose: "extract",
messages,
response_format: { type: "json_object" },
});
extractBalanced2 modelsWeights split the first attempt. Every other model stays a fallback.
lk_applied_purpose "extract" model gpt-4.1-mini
One console
Everything between your app and the model lives in one place, so the team that ships the feature can also run it.
Providers
Bring your own API keys and pay providers directly, or use Platform Access and skip the provider account.
How access worksAPI keys
Shown once, capped per month, rotated in a click, switched off instantly.
Key controlsPlayground
Real requests through a key's live route, with the model, latency, and cost on every reply.
See the PlaygroundRequest logs
Which model answered, what it tried first, why it fell back, and what it cost.
What gets recordedDevelopers
Requests never name a model, so switching providers, adding fallbacks, or changing cost rules is a console change, not a deploy. Streams, tool calls, and structured output come back in one shape, whichever provider answers.
npm install @latentkit/sdkpip install latentkitcomposer require latentkit/latentkit-phpnpm install -g @latentkit/cliimport { LatentKit } from "@latentkit/sdk";
const client = new LatentKit(); // reads LATENTKIT_API_KEY
const reply = await client.chat.create({
purpose: "support-reply",
messages: [{ role: "user", content: "Where is my order?" }],
});
console.log(reply.content, reply.model);
from latentkit import LatentKit
with LatentKit() as client: # reads LATENTKIT_API_KEY
reply = client.chat.create(
purpose="support-reply",
messages=[{"role": "user", "content": "Where is my order?"}],
)
print(reply["content"], reply["model"])
use LatentKit\LatentKit;
$client = new LatentKit(); // reads LATENTKIT_API_KEY
$reply = $client->chat->create(
purpose: 'support-reply',
messages: [['role' => 'user', 'content' => 'Where is my order?']],
);
echo $reply['content'];
curl https://ai.latentkit.com/v1/chat \
-H "Authorization: Bearer $LATENTKIT_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"purpose": "support-reply",
"messages": [{ "role": "user", "content": "Where is my order?" }]
}'
Why a gateway
Calling providers directly works until the second provider, the first outage, or the first surprise invoice.
For companies
Company workspaces add team roles, your own dashboard domain and branding, scheduled rollouts, an audit trail, and limits set for you.
Pricing
Your own provider keys carry no LatentKit markup. Platform Access is provider cost plus 5%, from prepaid credits.
Start free with your own provider keys. No credit card.