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

FieldDescription
idThe agent id. It is also the `model` value returned on every chat completion.
object / created / owned_byStandard OpenAI model fields.
name / descriptionThe agent's name and description.
modeThe agent type: chatbot, agent, flow or workflow. Decides which endpoints the key can use.
titleDisplay title for a chat header (falls back to name).
greetingOpening message to show before the first user message.
starter_questionsSuggested 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.