Leaving the API is one line of code.
The rewrite everyone budgets for does not exist. Self-hosted serving stacks speak the same OpenAI-compatible API your code already calls, so the plumbing migration is the base URL. The honest remainder is evals, not engineering, and it cuts both ways: the same line that lets you leave them lets you leave us.
In this article 3 sections
- Teams stay on hosted AI APIs long after they want out, because they have budgeted a rewrite. For the plumbing, that rewrite does not exist: self-hosted serving stacks expose the same OpenAI-compatible API your code already speaks.
- The application-side migration is the base URL and the key. Your prompts, your streaming handlers, your tooling: unchanged.
- The honest remainder is model behavior: a different model answers differently, so the real migration work is running your evals on your tasks. Smaller than a rewrite, and testable before you commit.
- The same property protects you on the way out: open weights plus a standard API mean leaving us is one line too. We sell to customers who can leave.
The meeting happens everywhere. Everyone in the room wants off the hosted API, pick the reason: the data that should not be leaving, the rate tier that will not survive the roadmap, the bill that scales with success. And then someone says the sentence that ends it: we're too integrated, it would be a rewrite. Six months later, same meeting, same sentence, one more retry-logic sprint in between.
The sentence deserves an audit, because the integration it describes is one config value deep.
The world standardized while you weren't looking
Something useful happened in the serving world over the past few years: the OpenAI API format became the de facto wire standard for talking to language models, and the open-source serving stacks adopted it on purpose. Same routes, same request format, same streaming protocol, for the widely used core of the surface: chat completions, streaming, embeddings. When we hand over a private endpoint, it speaks that dialect natively. Your SDK does not know it moved. If your app leaned on one vendor's proprietary extras, that is a short audit, not a rewrite, and we walk it with you: most extras have direct equivalents or thin shims.
- OPENAI_BASE_URL=https://api.vendor.example/v1
+ OPENAI_BASE_URL=https://inference.yourcompany.internal/v1
OPENAI_API_KEY=**** # your key, issued by you, revoked by youPrompts, streaming handlers, retry logic, tooling: untouched. That diff is the whole plumbing migration. Which is exactly why the rewrite budget deserves suspicion: it was priced for a world where every provider had its own wire format, and that world is gone.
What actually changes: the model
Now the honest half, because the one-line claim is only true about the plumbing. A different model is a different colleague. Ask it the same question and the answer comes back worded and structured differently; prompts tuned for one model may need adjustment; edge cases move around. This is real work. It is also bounded, testable, and cheap compared to what you budgeted: run your existing eval set (or build the small one you should have anyway) against the candidate model on your actual tasks, compare, decide. It happens before you commit, on an endpoint you can trial, not after a rewrite you cannot undo.
| ONE LINE (THE PLUMBING) | REAL WORK (THE MODEL) |
|---|---|
| THE PART EVERYONE OVERESTIMATESThe base URL and the API key | Running your evals on the new model |
| Request and response formats, streaming | Prompt adjustments where behavior shifted |
| Your retry and tooling code | Deciding quantization and sizing (we carry this) |
| Vendor-specific API extras, if you used them | A short audit: swap or shim each one |
Notice what did not appear in that table: any claim that the open model is just as good. We do not make that claim, because it ages badly and because you should not take it from a vendor anyway. The eval run replaces the claim. Your tasks, both models, side by side, and the decision is yours with the evidence in front of you. That eval pass is part of our deployment, along with the sizing and the quantization trade-off (shown, not hidden), which is where a managed host earns the fee.
The line cuts both ways, on purpose
Everything above also describes leaving us. Open weights are portable files. The endpoint speaks the standard dialect. Your data lives on your machine and departs with you. If we stop deserving the workload, the migration away is the same one line, and we built it that way deliberately, for the same reason the rest of this company deleted meters and refuses exit taxes (the egress-fee argument is the same posture one layer down). Anti-lock-in you cannot exercise is a brochure word. Customers who can leave, and stay anyway, are the only reference worth having.
One more freedom rides along: once the model is yours, nobody retires it out from under your prompts, and the version that passed your evals stays the version answering until you decide otherwise. On a hosted API, that schedule belongs to someone else.
“The same line that lets you leave them lets you leave us. That's the point.”
Straight answers
Is the OpenAI-compatible API really compatible?+
The widely used core (chat completions, streaming, embeddings) is the de facto standard the serving world implements. If you leaned on one vendor's proprietary extras, those get a short audit: most have direct equivalents or thin shims, and we walk that list with you.
What happens to my prompt engineering?+
Most of it transfers. Some needs adjustment where the new model's behavior differs, and your evals show you exactly where. Budget prompt-tuning hours, not a rewrite.
One line away from your own endpoint.
Bring us the model you want to run. We'll size it, deploy it behind the API your code already speaks, and run the evals with you before you switch anything.
Talk to an engineerYou’ve reached the end.
Put the reading to work
What are
you running?
Tell us about the workload, traffic and recovery requirements. Start with the server builder, or talk through the details with an engineer.
Written by the engineers who build and run the infrastructure it describes.Talk to an engineer
