POST / turns text into embedding vectors. It speaks the OpenAI embeddings format,
so an existing OpenAI client works once you point it at the DataMind Platform base URL and pass the
key in the x-api-key header. Use it for search, similarity checks, clustering or recommendations
in your own application.
Send a JSON body with model and input:
curl https://platform.datamind.ai/llm/embeddings \
-H "x-api-key: $DATAMIND_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "qwen/qwen3-embedding-8b",
"input": ["Quarterly revenue by region", "Monthly active customers"]
}'model is the one available id, qwen/ qwen3-embedding-8b.input is one string, or an array of strings. You get one vector back for each input.The response is the standard OpenAI embeddings response, passed through unchanged: the vectors are
in data, one entry per input, and usage reports the token counts. For the key, the header rules
and SDK setup, see Use the API.
| Model id | qwen/ |
In GET / | Not listed |
| Region | The global route, whichever region your company is set to |
| Retention | Zero data retention, forced on every request |
The models list covers the chat models your key can call, so this model is not part of it (Models API). Call it on this endpoint.
Embeddings always run on the global route. For a company set to the EU region, this endpoint is the one deliberate exception: the Region setting does not change where embeddings run (see Settings).
The same guards as for chat requests apply:
input text is checked. A
match stops the request before any model sees it.A request that fails the body checks is answered with status 400 and the code invalid_request, and
the message says what to fix:
| What arrived | The message | What to do |
|---|---|---|
| A body that is not a JSON object | Request body must be a JSON object | Send JSON with Content-Type: application/. |
No model, or an empty one | 'model' is required | Send the model id. |
| Another model id | Unknown embedding model "<model>" - available: qwen/ | Use qwen/. |
An empty input | 'input' must not be empty | Send text to embed. |
No input, or another type | 'input' is required (string or array) | Send a string, or an array of strings. |
With Prohibit PII transmission on, input text that matches a personal-data check is refused
the same way, with status 400 and the code content_filter; the request is not forwarded, and the
message names the kinds of data found, never the values.
Failures on the model side are relayed unchanged, with the model side's own status and body. Two outcomes come from the platform itself, in the standard error shape:
| Status | Code | Message | What to do |
|---|---|---|---|
| 502 | upstream_unavailable | Failed to reach the upstream provider | Retry shortly. |
| 504 | upstream_timeout | Upstream provider timed out | Retry with a short back-off. |
For the full list of statuses and codes and for retry advice, see Errors and retries.
One: qwen/. Any other id is refused with
Unknown embedding model "<model>" - available: qwen/.
Yes. Send input as an array of strings; each string gets its own entry in the response.
The standard OpenAI embeddings response, passed through unchanged: the vectors are in data, one
entry per input, and usage reports the token counts.
No. An embeddings call is not billed: it draws on no plan allowance, and it does not count against the spend cap. The usual guards still apply, as for chat: your company needs an active plan, and the per-minute and concurrency limits apply. The Usage page covers how billed calls are counted.
No. Embeddings always run on the global route, whichever region the company is set to; this endpoint is the one deliberate exception to region routing. The Region field is on the company card in Settings.
No. Any OpenAI-compatible client works: point it at https:/, pass the key
in the x-api-key header, and call its embeddings method with qwen/. The setup
is the same as for chat requests; see Use the API.
The model field must be qwen/, the only model the endpoint serves. Send that
id and the request goes through.
When Prohibit PII transmission is on for your company, the input text is checked before
anything is sent. A match stops the request there, with status 400 and the code content_filter, and
the message names the kinds of data found, never the values. Remove the personal data and send
again; an Administrator manages the policy in Settings.