Choosing an LLM provider by benchmark scores is like choosing a restaurant by its menu photos. The model matters, but so does everything around the model, and the surrounding stuff is what actually bites you in production. This is the checklist I run a provider through before I point anything real at it.
Uptime and SLA
An SLA is a promise with numbers attached, so read the numbers. Uptime percentages are misleadingly close together until you convert them:
| SLA | Downtime per year | Downtime per month |
|---|---|---|
| 99.9% | 8.76 hours | 43.8 minutes |
| 99.95% | 4.38 hours | 21.9 minutes |
| 99.99% | 52.6 minutes | 4.4 minutes |
99.9% sounds excellent and still allows almost an hour of monthly outage. If your product depends on the endpoint, 99.9% versus 99.99% is the difference between "annoying" and "forgettable." Also check two things beyond the headline number:
•What counts as downtime. Some SLAs only cover total outages, not degraded throughput or high error rates.
•What you get when they miss it. A credit is worth little if the credit is capped or requires you to file a claim. The remedy should be concrete.
A provider that will not publish an SLA at all is telling you something, and it is not good.
Latency and throughput
Latency has two numbers you care about and they measure different things:
•Time to first token (TTFT). How long before the response starts streaming. This is what a user feels as "snappy."
•Tokens per second (throughput). How fast the rest of the response arrives. This is what determines whether a long answer feels slow.
Both vary by model and by load, so do not trust a marketing number. Measure it yourself:
import time
from openai import OpenAI
client = OpenAI(base_url="https://api.token8341.com/v1",
api_key="sk-your-key")
start = time.perf_counter()
stream = client.chat.completions.create(
model="deepseek-chat",
messages=[{"role": "user", "content": "Write 200 words about caching"}],
stream=True,
)
ttft = None
tokens = 0
for chunk in stream:
if ttft is None:
ttft = time.perf_counter() - start
tokens += 1
elapsed = time.perf_counter() - start
print(f"TTFT: {ttft:.2f}s, total: {elapsed:.2f}s, "
f"{tokens / elapsed:.1f} tok/s")Run that at a few different times of day and under your own expected concurrency. A provider that is fast at 10 a.m. and slow at 7 p.m. has a capacity problem you need to know about.
Cost
Per-token price is the easy part. The full cost picture includes:
•Input vs. output prices, since output usually costs several times input.
•Cache-hit pricing. For repetitive workloads, a prompt cache can cut cost more than any discount.
•Rate limits and throttling. A cheap endpoint you can only hit sparingly is not cheap once you add queueing and retries.
•Currency and payment friction. Cross-border card fees and conversion costs are real for small teams.
Ask for the price of your actual workload, not the price per million tokens in isolation.
Model coverage and compatibility
•Is the API OpenAI-compatible? If it is, you can use the standard SDKs and switch later without rewriting. If it is proprietary, you are marrying the provider.
•Can you reach several model families through one key? A catalog with one or two models locks you in as tightly as a proprietary API. A catalog with many models gives you a fallback and a path to cheaper routing.
•Are embeddings, function calling, and streaming supported, not just plain chat? These are the features that decide whether the endpoint fits a real app or just a demo.
Data handling and support
•Data retention. Does the provider keep your prompts and completions for training? Get this in writing.
•Region and residency. Where are the requests processed? For some users this is a legal requirement, not a preference.
•Support quality. Try opening a support ticket before you commit. The speed and usefulness of the first response is a strong predictor of what an outage will be like.
•Status transparency. A public status page and incident history tell you whether the provider is honest about its own reliability.
The short version
Run every candidate through these five questions:
1.What is the SLA, and what is the remedy when it is missed?
2.What are the measured TTFT and throughput under my load?
3.What does my real workload cost, cache hits included?
4.Is the API OpenAI-compatible, with several models behind one key?
5.Will they tell me where data is processed and how support responds?
None of these require deep expertise. They require that you ask before the outage, not after. The providers that answer them comfortably tend to be the ones that have actually run production traffic, rather than just listed a model.
TokenWorks is an easy fit against most of this list: a 99.9% SLA, an OpenAI-compatible endpoint at https://api.token8341.com/v1, one key covering GPT-4o, Claude, Gemini, DeepSeek, Qwen, ERNIE, Doubao, Spark, and Pangu, and metered per-token billing with cache-hit pricing.