# Mistral AI

Chat with Mistral models (text, images, JSON), extract text from PDFs and images with Mistral OCR, make embeddings, check text for policy violations, transcribe and speak audio with Voxtral, run agents, and manage files.

## Connect Mistral AI

1. In the sidebar, open **Connections** and press **Add connection**.
2. Type `mistral ai` and choose **Mistral AI**.
3. Fill in the fields. Each one says **Required** or **Optional**.
4. Press **Test and save**. GoRunner checks the connection before it saves anything.

The sheet asks for:

- **API Key · Required**: Your Mistral API key.

Paste a Mistral API key (console.mistral.ai → API Keys → Create new key). The key’s workspace decides the rate limits and who is billed.

[Connections](https://docs.gorunner.io/build/connections) says how to sign in again, rename or delete it. In a product that embeds GoRunner, **Add connection** can be missing: then [your provider makes connections](https://docs.gorunner.io/embed/customer-connections) for you.

## Do things in Mistral AI

Add a **Mistral AI** step, choose a **Resource**, then an **Operation**. Choose a row to see its fields.

- [Document](https://docs.gorunner.io/apps/mistral-ai#fields-f-document): Extract Text
- [Chat](https://docs.gorunner.io/apps/mistral-ai#fields-f-chat): Complete
- [Agent](https://docs.gorunner.io/apps/mistral-ai#fields-f-agent): Complete
- [Embedding](https://docs.gorunner.io/apps/mistral-ai#fields-f-embedding): Create
- [Text](https://docs.gorunner.io/apps/mistral-ai#fields-f-text): Classify Text for Violations
- [Audio](https://docs.gorunner.io/apps/mistral-ai#fields-f-audio): Transcribe a Recording · Generate Audio
- [File](https://docs.gorunner.io/apps/mistral-ai#fields-f-file): Upload a File · List Files · Get a File · Delete a File
- [Model](https://docs.gorunner.io/apps/mistral-ai#fields-f-model): List Models

To start a workflow from Mistral AI, use a [Schedule](https://docs.gorunner.io/apps/schedule), [Webhook](https://docs.gorunner.io/apps/webhook) or [Form](https://docs.gorunner.io/apps/form) trigger.

Later steps read a step’s output by its name: see [Use data from earlier steps](https://docs.gorunner.io/build/use-data-from-earlier-steps).

## Limits

- A reply from Mistral AI can be up to 16 MB (a file download can have its own limit). A larger one fails the step; it is never cut short.
- When Mistral AI says to slow down (429), the step waits as long as it asks, if the step’s time allows. Otherwise it fails and says when to try again.

Not in your list? See [When an app isn’t here](https://docs.gorunner.io/apps/when-an-app-isnt-here#q-not-in-list).

## For developers

In the API, which calls apps pieces, Mistral AI is `pieceId: "mistralai"` with `actionId: "mistralai"`, set by `resource` and an `operation_…` field, such as `operation_agent`. [Get an app](https://docs.gorunner.io/api/apps/get-app) returns every field.

It can change something outside the run (`writes_external`). See [How versions and side effects work](https://docs.gorunner.io/apps#q-versions).

### Mistral AI › Document

### Extract Text

- **Model · Optional**: The OCR model. Default: mistral-ocr-latest.
- **Document From · Optional**: A file from an earlier step, a public link, or a file uploaded with File → Upload (purpose OCR). Options: A file, A link, An uploaded file. Default: A file.
- **Document · Required**: Upload a file, or switch to an expression to use one from an earlier step (such as {{steps.download.result}}). PDF, image (PNG, JPEG, WEBP, AVIF) or Office document, up to 50 MB. Shows when **Document From** is **A file**.
- **File ID · Required**: The uploaded file's id. Shows when **Document From** is **An uploaded file**.
- **Document URL · Required**: A public https link to the PDF or image. Shows when **Document From** is **A link**.
- **Pages · Optional**: Optional. Only these pages, counted from 0 (such as 0-4, 7). Empty reads every page.
- **Tables As · Optional**: Where tables go. Options: Markdown in the page text, Separate Markdown tables, Separate HTML tables. Default: Markdown in the page text.
- **Include Images · Optional**: Return the images found on the pages as base64 (large). Off by default.

### Mistral AI › Chat

### Complete

- **Model · Optional**: The model that answers. Default: mistral-large-latest.
- **System Prompt · Optional**: Optional. How the model should behave: its role, tone, rules.
- **Earlier Messages · Optional**: Optional. The conversation so far, oldest first, such as [{"role": "user", "content": "Hi"}, {"role": "assistant", "content": "Hello!"}]. The prompt follows it.
- **Prompt · Required**: What to ask or tell the model.
- **Images · Optional**: Attach one file per row, or switch the field to an expression to pass a whole list from an earlier step (such as {{steps.unzip.files}}). Optional. Images the model looks at (needs a vision model), up to 10 MB each.
- **Image URLs · Optional**: Optional. Public https links to images, comma or line separated.
- **Response Format · Optional**: Text, or JSON a later step can read field by field (parsed under json). Options: Text, JSON matching a schema, Any JSON object. Default: Text.
- **JSON Schema · Required**: The shape of the answer, as JSON Schema, such as {"type":"object","properties":{"summary":{"type":"string"}},"required":["summary"],"additionalProperties":false}. Shows when **Response Format** is **JSON matching a schema**.
- **Max Tokens · Optional**: Optional. The most tokens the answer may use.
- **Temperature · Optional**: Optional, 0 to 1.5 (0–0.7 recommended). Lower is more focused.
- **Reasoning Effort · Optional**: How much a reasoning model thinks before answering: less is faster and cheaper. Options: Model default, None, Minimal, Low, Medium, High, Extra high. Default: Model default.
- **Safe Prompt · Optional**: Add Mistral's safety instructions before the conversation. Off by default.

### Mistral AI › Agent

### Complete

- **Agent ID · Required**: The agent's id, as console.mistral.ai → Agents shows it.
- **Earlier Messages · Optional**: Optional. The conversation so far, oldest first, such as [{"role": "user", "content": "Hi"}, {"role": "assistant", "content": "Hello!"}]. The prompt follows it.
- **Prompt · Required**: What to ask or tell the model.
- **Images · Optional**: Attach one file per row, or switch the field to an expression to pass a whole list from an earlier step (such as {{steps.unzip.files}}). Optional. Images the model looks at (needs a vision model), up to 10 MB each.
- **Image URLs · Optional**: Optional. Public https links to images, comma or line separated.
- **Response Format · Optional**: Text, or JSON a later step can read field by field (parsed under json). Options: Text, JSON matching a schema, Any JSON object. Default: Text.
- **JSON Schema · Required**: The shape of the answer, as JSON Schema, such as {"type":"object","properties":{"summary":{"type":"string"}},"required":["summary"],"additionalProperties":false}. Shows when **Response Format** is **JSON matching a schema**.
- **Max Tokens · Optional**: Optional. The most tokens the answer may use.

### Mistral AI › Embedding

### Create

- **Model · Optional**: The embedding model (codestral-embed for code). Default: mistral-embed.
- **Text · Required**: The text to embed. To embed several at once, give a JSON list of texts, such as ["first", "second"].
- **Dimensions · Optional**: Optional. Shorter vectors, where the model offers them (codestral-embed).

### Mistral AI › Text

### Classify Text for Violations

- **Text · Required**: The text to check.
- **Model · Optional**: The moderation model. Default: mistral-moderation-latest.

### Mistral AI › Audio

### Transcribe a Recording

- **Model · Optional**: The transcription model. Default: voxtral-mini-latest.
- **Audio From · Optional**: A file from an earlier step, a public link, or a file uploaded with File → Upload. Options: A file, A link, An uploaded file. Default: A file.
- **Audio File · Required**: Upload a file, or switch to an expression to use one from an earlier step (such as {{steps.download.result}}). MP3, WAV, M4A, FLAC, OGG and other common formats. Shows when **Audio From** is **A file**.
- **File ID · Required**: The uploaded file's id. Shows when **Audio From** is **An uploaded file**.
- **Audio URL · Required**: A public https link to the recording. Shows when **Audio From** is **A link**.
- **Language · Optional**: Optional. The spoken language as a two-letter code (en, fr, de …); more accurate when given.
- **Tell Speakers Apart · Optional**: Mark which speaker says what. Off by default.

### Generate Audio

- **Text · Required**: The text to speak.
- **Voice · Optional**: Optional. A preset or custom voice id (console.mistral.ai → Audio → Voices). Empty is Mistral's default voice.
- **Model · Optional**: Optional. The speech model; empty is Mistral's default.
- **File Format · Optional**: The audio file's format. Options: MP3, WAV, FLAC, Opus, PCM (raw). Default: MP3.

### Mistral AI › File

### Upload a File

- **File · Required**: Upload a file, or switch to an expression to use one from an earlier step (such as {{steps.download.result}}).
- **Purpose · Optional**: What the file is for. Options: OCR and audio, Batch, Fine-tuning. Default: OCR and audio.

### List Files

- **Purpose · Optional**: Only files uploaded for this purpose. Options: Any, OCR and audio, Batch, Fine-tuning. Default: Any.
- **Name Contains · Optional**: Optional. Only files whose name contains this text.
- **Return All · Optional**: Read every file, page by page (at most 5000; past that the step fails rather than stop early). Off by default.
- **Limit · Optional**: How many files to return (1–5000). Default: 50. Shows when **Return All** is off.

### Get a File and Delete a File

- **File ID · Required**: The file's id, as Upload a File or List Files returns it.

### Mistral AI › Model

### List Models

Nothing to fill in.

Source: https://docs.gorunner.io/apps/mistral-ai
