01
Sign up and copy your key
Create a workspace, open the dashboard, and save the raw API key shown on first visit. The key is only revealed once.
5-minute quickstart
Point an existing OpenAI-compatible SDK at Seldon, make one request, then confirm the request appears in Activity and starts warming up Trace Audit.
Before your first request
Seldon routes requests to configured model providers. Seldon retains audit, usage, and trace data for billing, audit, reliability, debugging, security, and product operation.
Seldon does not resell prompts, outputs, traces, cached responses, or API traffic, and does not use them to train generalized AI models.
Current behavior may store redacted request and response trace payloads and exact response-cache entries. BYOK provider keys are used for the request and are not stored by Seldon.
Privacy-forward controls such as provider.zdr, provider.data_collection = "deny", and cache.no_store can be used, but can fail with no_policy_compliant_provider when provider policy metadata is unknown.
01
Create a workspace, open the dashboard, and save the raw API key shown on first visit. The key is only revealed once.
02
Use the public router URL and the Seldon key. Your application code keeps using the same OpenAI-compatible client shape.
03
Run one of the snippets below. A successful response includes choices, usage, and computed Seldon cost metadata.
04
Activity should show the request row. Trace Audit should move into collecting, analyzing, or ready once traffic is present.
Use the base router URL without `/v1`; each SDK snippet appends `/v1` where required. Keep the key in your environment, not in source code.
export SELDON_BASE_URL="https://api.seldon-ai.com"
export SELDON_API_KEY="sk-seldon-..."from openai import OpenAI
import os
client = OpenAI(
base_url=os.environ["SELDON_BASE_URL"] + "/v1",
api_key=os.environ["SELDON_API_KEY"],
)
response = client.chat.completions.create(
model="openai/gpt-4.1",
messages=[{"role": "user", "content": "Say hello from Seldon"}],
user="quickstart-user",
extra_headers={"X-Title": "quickstart"},
)
print(response.choices[0].message.content)
print(response.usage)import OpenAI from "openai";
const client = new OpenAI({
baseURL: process.env.SELDON_BASE_URL + "/v1",
apiKey: process.env.SELDON_API_KEY,
});
const response = await client.chat.completions.create(
{
model: "openai/gpt-4.1",
messages: [{ role: "user", content: "Say hello from Seldon" }],
user: "quickstart-user",
},
{ headers: { "X-Title": "quickstart" } }
);
console.log(response.choices[0]?.message?.content);
console.log(response.usage);import litellm
import os
response = litellm.completion(
model="openai/openai/gpt-4.1",
api_base=os.environ["SELDON_BASE_URL"] + "/v1",
api_key=os.environ["SELDON_API_KEY"],
messages=[{"role": "user", "content": "Say hello from Seldon"}],
user="quickstart-user",
extra_headers={"X-Title": "quickstart"},
)
print(response.choices[0].message.content)
print(response.usage)import { createOpenAI } from "@ai-sdk/openai";
import { generateText } from "ai";
const seldon = createOpenAI({
baseURL: process.env.SELDON_BASE_URL + "/v1",
apiKey: process.env.SELDON_API_KEY,
headers: { "X-Title": "quickstart" },
});
const result = await generateText({
model: seldon("openai/gpt-4.1"),
prompt: "Say hello from Seldon",
});
console.log(result.text);
console.log(result.usage);`/dashboard/activity` should show the request model, app marker, token counts, latency, and computed cost.
`/dashboard/audit` should show traces being collected. Repeated traffic is what unlocks workflow clustering and compiled-path candidates.