Integration guides · 2026-09-08
Choosing an LLM API as a Small EU Company or Startup
See which API selection criteria genuinely bind a small EU team, which decisions can safely wait, and how to set up a first integration you will not have to rewrite.
Three things that genuinely bind a small team
On a small team most selection criteria can wait; three cannot. They are the ones whose reversal is expensive once you get them wrong.
Everything else — which model writes better, which context window is enough, which price suits you — is decided by measurement after real usage, not in the first week.
- Where data is processed: if you sell to enterprises the question comes up in the sales call, and changing architecture afterwards is expensive.
- Whether inputs are used for training: it has to be in the contract, not on the product page.
- The cost of changing provider: a one-line model identifier change, or a rewrite of the client and the error handling?
Decisions you can defer
Trying to pick the best model for the first release means deciding without measuring, and it usually costs a week. Start with a cheap, fast row, accumulate your real requests, then compare two or three rows on those same requests.
The same holds for the retrieval stack. Do not pin the embedding row to the most expensive option on day one; without measuring on your own collection you cannot know which works better.
Setting up the first integration
Use your existing OpenAI-compatible client; changing the base URL and the key is enough. Do not hard-code the model identifier — read it from an environment variable, which is the cheapest way to run your first comparison.
Turn on response streaming from the start: a page sitting blank while the user waits for the first token generates more complaints than the choice of model. On streaming rows the final frame carries usage, so your cost tracking stays intact.
Keep cost visible from day one
The most common surprise on a small team is that the bill grows with output tokens rather than request count. Output costs a multiple of input on most rows, and some rows reason whether you ask them to or not; those hidden tokens bill as output.
Two simple measures are enough: put a sensible output limit on every request, and prefer rows that spend no reasoning tokens for batch work. Look at the first week's distribution in the usage panel and set the limit once; after that it stays predictable.
Frequently asked questions
Which model should a small team start with?
Start with a cheap, fast row and accumulate your real requests. Choosing a model before measuring is the most common way to lose time on a first release.
When should I deal with the contract side?
Before you sell to an enterprise customer. The data processing agreement and the sub-processor list can be progressed independently of the technical integration.
How long does changing provider take?
Through a gateway, changing the model identifier is enough. Try it once for real; an exit plan you have never exercised provides no assurance.