Quickstart
UberLLM is a single endpoint for every model. It speaks the OpenAI and Anthropic wire formats, so most tools and SDKs work by changing one setting: the base URL. Your existing code stays the same.
- OpenAI-compatible base URL:
https://api.uberllm.dev/v1 - Anthropic-compatible base URL:
https://api.uberllm.dev(endpoint/v1/messages)
1. Create an API key
- Sign in at uberllm.dev and open Dashboard → Keys.
- Click Create key, name it, and (optionally) set a spend limit or per-minute rate limit.
- Copy the key — it is shown once. Keys look like
ull_followed by 43 characters (ull_R7f2...). Store it in an environment variable, never in source control.
export UBERLLM_API_KEY="ull_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
2. Add credits
Inference is prepaid. Open Dashboard → Credits and top up (minimum $5) via Stripe. There is no markup on inference — you pay the provider's token price. A 5% fee applies only to the credit purchase itself. See Pricing.
3. Make your first call
Point any OpenAI-compatible client at https://api.uberllm.dev/v1 with your
ull_ key as the API key.
curl (streaming)
curl -N https://api.uberllm.dev/v1/chat/completions \
-H "Authorization: Bearer $UBERLLM_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "deepseek/deepseek-v3.1",
"stream": true,
"messages": [{"role": "user", "content": "Say hello in one sentence."}]
}'
Python (official openai SDK)
import os
from openai import OpenAI
client = OpenAI(
base_url="https://api.uberllm.dev/v1",
api_key=os.environ["UBERLLM_API_KEY"],
)
stream = client.chat.completions.create(
model="deepseek/deepseek-v3.1",
messages=[{"role": "user", "content": "Say hello in one sentence."}],
stream=True,
)
for chunk in stream:
print(chunk.choices[0].delta.content or "", end="", flush=True)
TypeScript (official openai SDK)
import OpenAI from "openai";
const client = new OpenAI({
baseURL: "https://api.uberllm.dev/v1",
apiKey: process.env.UBERLLM_API_KEY,
});
const stream = await client.chat.completions.create({
model: "deepseek/deepseek-v3.1",
messages: [{ role: "user", content: "Say hello in one sentence." }],
stream: true,
});
for await (const chunk of stream) {
process.stdout.write(chunk.choices[0]?.delta?.content ?? "");
}
4. Confirm it worked
Open Dashboard → Activity. You will see the request logged with the model, the provider it was routed to, token counts, latency, and the exact cost deducted from your balance.
Next steps
- OpenAI SDK drop-in — full guide including non-streaming, tools.
- Anthropic SDK — use
client.messagesagainst/v1/messages. - Models & routing —
:floor/:nitro, theproviderobject, and fallbacks. - Editor integrations: Cursor, Cline, Roo Code, Aider, Continue.
- Frameworks: LangChain, Vercel AI SDK.