# Mistral

> Use your own Mistral AI key with ShopAssist; processing stays in the EU.

Source: https://shopassist.coec.dk/docs/ai/mistral · Updated 2026-10-01

## Create a key [#create-key]

As of October 2026, in Mistral's console:

1. Open **console.mistral.ai → Workspace → Billing** and choose a paid plan.
2. Open **API keys → Create new key**, name it "ShopAssist" and copy it.

## Account tier [#tier]

A paid plan. The experimental free plan has very low limits and may be used for training.

## Recommended models [#models]

| Model | Id | Tier | Context window | Images | Processing |
| --- | --- | --- | --- | --- | --- |
| Mistral Large 3 | `mistral-large-2512` | Standard | 256,000 tokens | Yes | EU |
| Mistral Medium 3 | `mistral-medium-3504` | Premium | 128,000 tokens | Yes | EU |
| Mistral Small 4 (EU) | `mistral-small-2603` | Standard | 256,000 tokens | No | EU |

## Fields [#fields]

| Field   | Notes                                                                                |
| ------- | ------------------------------------------------------------------------------------ |
| API key | From the console                                                                     |
| Model   | A model from the list, or any current `mistral-`, `ministral-` or `magistral-` model |

## Data location [#data-location]

> **Data location:** Processed in the EU. Inputs and outputs are kept for 30 days for abuse monitoring unless you have zero data retention.

## Connection test [#probe]

| Check | Required | What it tests | On failure |
| --- | --- | --- | --- |
| `auth` | Yes | The key is accepted (lists models or sends a tiny request) | `auth_failed`, `insufficient_quota`, `gemini_free_tier`, `endpoint_blocked`, `provider_unavailable`, `model_not_found` |
| `tools` | Yes | The model calls a tool with valid arguments and continues after the result | `tools_unsupported`: the model can't run the shopping tools |
| `ttft` | No (degraded) | The first answer event arrives within 8 seconds | `ttft_slow`: works, but shoppers wait |
| `parallel_tools` | No | Two tools are called in one step | `parallel_tools_unsupported`: slightly slower answers |
| `vision` | No | The model names the colour of a test image | `vision_unsupported`: visual search is off |
| `context` | Self-hosted only | A fact at the start of an 8,000-token prompt is recalled | `context_too_small`: the endpoint truncates prompts |

## Cost [#cost]

Estimate based on list prices on 2026-09-28; your provider bills you directly.

| Provider | Model | USD per 1,000 conversations | ≈ EUR per 1,000 conversations |
| --- | --- | --- | --- |
| Azure OpenAI | GPT-6 Luna | $3.61 | €3.10 |
| Mistral | Mistral Small 4 | $4.71 | €4.05 |
| OpenAI | GPT-5.6 Luna | $7.62 | €6.55 |
| Google Gemini | Gemini 3.1 Flash-Lite | $8.85 | €7.61 |
| OpenAI | GPT-5 mini | $9.85 | €8.47 |
| Google Gemini | Gemini 3.5 Flash-Lite | $12.02 | €10.34 |
| Mistral | Mistral Large 3 | $14.70 | €12.64 |
| OpenAI | GPT-5.4 mini | $26.55 | €22.83 |
| Anthropic | Claude Haiku 4.5 | $36.10 | €31.05 |
| Anthropic | Claude Sonnet 5 | $72.20 | €62.09 |

## Troubleshooting [#troubleshooting]

* **401 / `auth_failed`:** the key was deleted or belongs to another workspace.
* **429 / `rate_limited`:** raise the workspace limits.
* **`tools_unsupported`:** choose a model with function calling.
