Models
The OpenAI-compatible model list. An API key belongs to exactly one agent, so the list always contains one entry — and that entry also describes the agent: its name, greeting and starter questions.
GET/v1/models
Example
bash
curl https://cloud.xpectrum.dev/v1/models \
-H "Authorization: Bearer xpectrum_XXXXXXXXXXXXXXXX"json
{
"object": "list",
"data": [
{
"id": "e040c4d0-9b1e-4718-aaf9-eeb2d450b467",
"object": "model",
"created": 1750000000,
"owned_by": "xpectrum",
"name": "Support Assistant",
"description": "Answers questions about our product.",
"mode": "chatbot",
"title": "Support Assistant",
"greeting": "Hi! How can I help you today?",
"starter_questions": [
"What are your opening hours?",
"How do refunds work?"
]
}
]
}Fields
| Field | Description |
|---|---|
| id | The agent id. It is also the `model` value returned on every chat completion. |
| object / created / owned_by | Standard OpenAI model fields. |
| name / description | The agent's name and description. |
| mode | The agent type: chatbot, agent, flow or workflow. Decides which endpoints the key can use. |
| title | Display title for a chat header (falls back to name). |
| greeting | Opening message to show before the first user message. |
| starter_questions | Suggested prompts to display on an empty thread. |
ℹ One call to render a client
Fetch this once at startup and render the
title, greeting and starter_questions from it, so the UI follows what is configured in the console without a redeploy. Standard OpenAI clients only read the four OpenAI fields and ignore the rest.With the Xpectrum SDK
typescript
import { XpectrumChat } from "xpectrum";
const chat = new XpectrumChat({
baseUrl: "https://cloud.xpectrum.dev/v1",
apiKey: "xpectrum_XXXXXXXXXXXXXXXX",
});
const agent = await chat.getAgent();
// -> { id, name, mode, title, greeting, starterQuestions: [...] }
const models = await chat.listModels(); // raw OpenAI-style listℹ model is informational
Because the API key already selects the agent, the
model value you send to /chat/completions is not used for routing — any string works. This endpoint exists so OpenAI SDKs and tools that list models keep working unmodified.