Models API

GET /llm/models 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.

List the models

Send the request with your company's API key in the x-api-key header, as you do for chat requests:

bash
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.

What a model entry tells you

Every entry uses snake_case fields:

FieldWhat it tells you
idThe model's identifier. Send it as model in a chat request (Chat completions).
display_nameThe name the console shows for the model.
descriptionWhat the model is good at.
categoryThe model's capability class, the Frontier, Pro or Lite badge the console shows.
billingpayg or subscription, described in Subscription and pay-as-you-go entries.
is_defaultMarks the model behind the kartlos-premium alias.
is_standardMarks the model behind the kartlos-standard alias.
is_newMarks a recently added model.
icon_svg_dark, icon_svg_lightThe model's icon for the dark and the light console theme.
supports_toolsThe model can call tools you define.
supports_thinkingThe model reasons before it answers.
supports_structured_outputThe model returns JSON that follows a schema you provide.
reasoningThe model's thinking options, or null when it does not reason; see Thinking options.
input_modalitiesThe kinds of input the model accepts.
context_lengthThe context window in tokens: prompt and answer together.
max_output_tokensThe 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.

Subscription and pay-as-you-go entries

billing says how a model is paid for:

Thinking options

For a model with supports_thinking, the reasoning object describes its thinking:

KeyWhat it tells you
mandatoryWhether thinking is mandatory, so it cannot be turned off.
default_enabledWhether thinking is on by default.
supported_effortsThe effort values the model accepts.
default_effortThe 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.

What your key sees

When the call fails

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.

Questions, answered

What is the difference between this list and the Models page in the console?

None: both come from the same catalogue, so they cannot disagree. Models is the console view; GET /llm/models is the same list for your code.

Why do some entries have no price fields?

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.

What do the is_default and is_standard flags mean?

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).

Does the endpoint need its own API key?

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.

Where do I find a model's thinking effort options?

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.

Should I hard-code a model ID or fetch the list at runtime?

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.

Why does GET /llm/models return 503?

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.

Why is the embedding model not in the list?

Embeddings use one fixed model, qwen/qwen3-embedding-8b, which is not part of the chat menu and does not appear in GET /llm/models. Call it on the embeddings endpoint (Embeddings).