Change two values. Keep your SDK.
The gateway speaks the OpenAI API, so the client you already wrote does not change. Swap the base URL and the key, then name any model from any provider in the same request shape.
Nothing to rewrite.
If your code already calls OpenAI, it already calls AskCodi.
- 1Create a workspace keyKeys are scoped to a workspace and a project, so usage stays attributable and revocable.
- 2Set the base URLPoint the client at api.askcodi.com/v1 instead of the provider you were using.
- 3Name any modelUse an explicit provider model id. Change providers by changing a string, not a client.
import OpenAI from 'openai';
const client = new OpenAI({
apiKey: process.env.ASKCODI_API_KEY,
baseURL: 'https://api.askcodi.com/v1',
});
const stream = await client.chat.completions.create({
model: 'anthropic/claude-sonnet-4.5',
messages: [{ role: 'user', content: 'Review this diff.' }],
stream: true,
});The parts that usually need a second service.
Everything below is the same endpoint. No extra SDK, no second bill.
Streaming
Server-sent events stream tokens as they generate, in the same shape OpenAI uses, on every model that supports it.
Tool calling
The OpenAI function-calling schema, translated into each provider’s native tool format and back again.
Vision and audio
Image inputs on the models that accept them, and transcription through the same request shape.
Spend caps per key
Hard limits per key and per project. A runaway loop stops at the cap instead of at the invoice.
Automatic fallback
When a provider has a bad hour, the next model on your list answers instead of your users seeing an error.
Custom agents
Bundle a prompt, a skill and an MCP tool, then call the whole thing as if it were a model id.
One key, every provider worth calling.
Add a provider once and every key in the workspace can reach its models the same day.
Where a gateway earns its keep.
Coding agents in your product
Ship an in-app assistant without signing a contract with every model provider your users will ask for.
Review and analysis bots
Run the cheap model on the first pass and escalate to the expensive one only when it matters.
Batch back-office work
Classification, extraction and summarisation at volume, with a hard ceiling on what the batch can cost.
The integration questions.
The pricing detail is on the pricing page; these are the technical ones.
Is it really OpenAI-compatible?+
Yes. /chat/completions and /responses both accept the OpenAI request shape and return OpenAI-shaped responses, so the official SDKs work unmodified. Differences between providers are translated on our side, not yours.
What happens when a provider goes down?+
If you configured a fallback list, the next model answers. Without one, you get the provider error passed through honestly rather than a silent substitution you did not ask for.
Do I need a separate key per provider?+
No. One workspace key reaches every provider. That is the point: one billing relationship, one place to revoke, one usage total.
Can I stop a key spending too much?+
Set a cap per key and per project. Work stops at the cap. There is no overdraft and no surprise at the end of the month.
Does the Cofounder use this?+
Yes, the same gateway underneath. If you only want the model layer without the agent, that is a perfectly normal way to use AskCodi.
It is a base URL and a key.
Free to start, and your existing client does not change.