GET / returns the list of models your API key sees, in the OpenAI list format. Call it
to find the id to send in a chat request, to offer model choices in your own application, or to
read a model's prices and thinking options. The Models page in the
console shows the same list.
Send the request with your company's API key in the x-api-key header, as you do for chat requests:
curl https://platform.datamind.ai/llm/models \ -H "x-api-key: $DATAMIND_API_KEY"
The answer is the OpenAI list envelope: "object": "list", and "data" holds one entry per model.
Fetch the list while your application runs rather than hard-coding model IDs, so it follows
catalogue changes without a redeploy.
Every entry uses snake_case fields:
| Field | What it tells you |
|---|---|
id | The model's identifier. Send it as model in a chat request (Chat completions). |
display_name | The name the console shows for the model. |
description | What the model is good at. |
category | The model's capability class, the Frontier, Pro or Lite badge the console shows. |
billing | payg or subscription, described in Subscription and pay-as-you-go entries. |
is_default | Marks the model behind the kartlos-premium alias. |
is_standard | Marks the model behind the kartlos-standard alias. |
is_new | Marks a recently added model. |
icon_svg_dark, icon_svg_light | The model's icon for the dark and the light console theme. |
supports_tools | The model can call tools you define. |
supports_thinking | The model reasons before it answers. |
supports_structured_output | The model returns JSON that follows a schema you provide. |
reasoning | The model's thinking options, or null when it does not reason; see Thinking options. |
input_modalities | The kinds of input the model accepts. |
context_length | The context window in tokens: prompt and answer together. |
max_output_tokens | The longest answer the model produces in one response, in tokens. |
A pay-as-you-go entry also carries its prices in USD per 1M tokens: price_per_1m_input,
price_per_1m_output and price_per_1m_cached. A subscription entry carries no price fields at
all.
billing says how a model is paid for:
subscription: Kartlos Premium and Kartlos Standard. Your plan covers them, they work inside
DataMind OS, and a request to one with an API key is refused.payg: pay-as-you-go models. These are the models your key can call, and they carry the three
price fields.For a model with supports_thinking, the reasoning object describes its thinking:
| Key | What it tells you |
|---|---|
mandatory | Whether thinking is mandatory, so it cannot be turned off. |
default_enabled | Whether thinking is on by default. |
supported_efforts | The effort values the model accepts. |
default_effort | The model's default effort level. |
Send an effort from supported_efforts in a chat request, or turn thinking off when it is not
mandatory (Chat completions). An effort outside
the list is refused.
A non-200 answer is not an empty catalogue. Treat it as "use your fallback" and keep serving from the last good list or a model you know works.
If the catalogue cannot be read, the endpoint answers 503 with the message
Model catalog is unavailable. The platform does not answer with an empty list in that case;
retry later. The status and code details are on
Errors and retries.
None: both come from the same catalogue, so they cannot disagree.
Models is the console view; GET / is the same list for
your code.
Those are subscription entries: your plan covers them, so there is nothing per token to price.
Only an entry with billing payg carries price_per_1m_input, price_per_1m_output and
price_per_1m_cached.
They mark the models behind the two Kartlos aliases, kartlos-premium and kartlos-standard. The
alias is what DataMind OS uses; a key cannot call it
(Use the API).
No. Use the same company key as for chat requests, in the x-api-key header.
Use the API shows how to send it and where the key comes from.
In the model's reasoning entry: supported_efforts lists the effort values you can send,
default_effort is the default level, and mandatory says whether thinking can be turned off.
How to send them is on Chat completions.
Fetch it at runtime. The response is the live catalogue, so new models and price changes reach your application without a redeploy. If you pin an ID, keep in mind that a model can leave the menu, and a request naming it is then refused until you switch to one from the list.
The platform cannot read the model catalogue at that moment, so it answers 503 with
Model catalog is unavailable instead of an empty list. Retry later, and do not treat the answer
as an empty menu. Errors and retries lists the statuses and what to retry.
Embeddings use one fixed model, qwen/, which is not part of the chat menu and
does not appear in GET /. Call it on the embeddings endpoint
(Embeddings).