Mistral provider summary
Bifrost routes Mistral with OpenAI-compatible chat and streaming, native transcription and OCR, and embeddings. Parameter conversion maps OpenAI fields (for example max_completion_tokens → max_tokens) to Mistral equivalents.
Common Mistral model IDs used in Bifrost routes:
mistral-large-latest(Latest)mistral-medium-latest(Balanced)mistral-small-latest(Fast)mistral-embed(Embeddings)
| Property | Details |
|---|---|
| Description | Mistral AI models for chat, embeddings, transcription, and OCR. |
| Provider route on Bifrost | mistral/<model> |
| Provider doc | Mistral |
| API endpoint for provider | https://api.mistral.ai |
| Supported endpoints | /v1/chat/completions, /v1/embeddings, /v1/audio/transcriptions, /v1/ocr |
Supported operations
Mistral provides chat, Responses API (via chat upstream), transcription (with streaming), OCR, embeddings, and model listing. Text Completions, Speech, Files, and Batch return UnsupportedOperationError. Image generation is supported by the Mistral API but not yet in Bifrost's integration. See Supported operations in Bifrost docs.
| Operation | Non-streaming | Streaming | Upstream endpoint |
|---|---|---|---|
| Chat Completions | Yes | Yes | /v1/chat/completions |
| Responses API | Yes | Yes | /v1/chat/completions |
| Transcriptions (STT) | Yes | Yes | /v1/audio/transcriptions |
| OCR | Yes | No | /v1/ocr |
| Embeddings | Yes | No | /v1/embeddings |
| List Models | Yes | No | /v1/models |
| Text Completions | No | No | - |
| Image Generation | No | No | - |
| Speech (TTS) | No | No | - |
| Files | No | No | - |
| Batch | No | No | - |
Supported OpenAI parameters
Quick reference of OpenAI parameters accepted when routing through Mistral via Bifrost. The main adjustment is max_completion_tokens → max_tokens.
[ "stream", "temperature", "top_p", "max_tokens", "max_completion_tokens", "stop", "tools", "tool_choice", "user", "reasoning" ]
Supported Mistral models
Use the provider prefix mistral/ in Bifrost model routes for deterministic provider targeting.
| Family | Model ID | Bifrost route | Typical usage |
|---|---|---|---|
| Mistral Large | mistral-large-latest | mistral/mistral-large-latest | Most capable model |
| Mistral Medium | mistral-medium-latest | mistral/mistral-medium-latest | Balanced performance |
| Mistral Small | mistral-small-latest | mistral/mistral-small-latest | Fast, lower-cost |
| Mistral Embed | mistral-embed | mistral/mistral-embed | Embeddings |
| Mistral Rerank | mistral-rerank-latest | mistral/mistral-rerank-latest | Reranking |
API reference
OpenAI-compatible Bifrost gateway routes mapped to Mistral upstream APIs. Content aligned with Bifrost Mistral provider docs.
1) Chat Completions
Primary chat endpoint with OpenAI-compatible request/response handling. For standard parameter reference, see OpenAI Chat Completions. See Chat Completions in Bifrost docs.
| Parameter | Mistral | Notes |
|---|---|---|
| max_completion_tokens | max_tokens | Conversion required |
| temperature | Direct pass-through | |
| top_p | Direct pass-through | |
| stop | Stop sequences | |
| tools | Function definitions | |
| tool_choice | String only | auto, any, none — not structured |
| user | Direct pass-through | Max 64 characters |
| frequency_penalty, presence_penalty | Direct pass-through |
Critical conversions
// max_completion_tokens → max_tokens
{"max_completion_tokens": 4096} → {"max_tokens": 4096}
// Tool choice: Mistral supports string only
{"tool_choice": {"type": "function", "function": {"name": "specific_tool"}}}
→ {"tool_choice": "any"} // or "none", "auto"Filtered before upstream: prompt_cache_key, cache_control (stripped from content blocks), verbosity, store, service_tier.
Message conversion supports all roles (user, assistant, system, tool, developer) and content types: text, images, audio, and files.
| Aspect | Support | Notes |
|---|---|---|
| Function definitions | Yes | Full parameter schema support |
| Tool choice "auto" | Yes | Default mode |
| Tool choice "any" | Yes | Requires any tool |
| Tool choice "none" | Yes | No tools |
| Specific tool forcing | No | Simplified to "any" |
| Parallel tools | Yes | Multiple tools in one turn |
Responses use standard OpenAI shape: choices[].message.content, choices[].message.tool_calls, usage, and finish_reason (stop, tool_calls, length).
curl -X POST http://localhost:8080/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "mistral/mistral-large-latest",
"messages": [{"role": "user", "content": "Hello"}]
}'2) Responses API
The Responses API is converted internally to Chat Completions with format transformation. Upstream routes to /v1/chat/completions. Same parameter support and tool handling as Chat Completions; response format uses output items instead of a single message content field. See Responses API in Bifrost docs.
ResponsesRequest → ChatRequest → ChatCompletion → ResponsesResponse
curl -X POST http://localhost:8080/v1/responses \
-H "Content-Type: application/json" \
-d '{
"model": "mistral/mistral-large-latest",
"input": "Summarize this in one sentence."
}'3) Transcription
Mistral provides native audio transcription with streaming support. Bifrost gateway route: /v1/audio/transcriptions; upstream: /v1/audio/transcriptions. Requests are sent as multipart/form-data. See Transcription in Bifrost docs.
| Parameter | Bifrost | Mistral | Notes |
|---|---|---|---|
| file | Binary audio | Multipart form | Converted to multipart |
| model | Model name | model | |
| language | ISO-639-1 | language | Optional language hint |
| prompt | Optional | prompt | Context for recognition |
| response_format | Format type | response_format | json, text, etc. |
| temperature | float | temperature | Sampling temperature |
| timestamp_granularities | Array | Array field | Segment/word timestamps |
Multipart form structure
--boundary Content-Disposition: form-data; name="file"; filename="audio.mp3" [binary audio data] --boundary Content-Disposition: form-data; name="model" voxtral-mini-latest --boundary Content-Disposition: form-data; name="language" en --boundary--
Transcription response
{
"text": "transcribed text",
"language": "en",
"duration": 3.5,
"segments": [
{
"id": 0,
"start": 0.0,
"end": 1.5,
"text": "transcribed segment",
"temperature": 0.0,
"avg_logprob": -0.45,
"compression_ratio": 1.2,
"no_speech_prob": 0.001
}
],
"words": [
{"word": "transcribed", "start": 0.0, "end": 0.8}
]
}curl -X POST http://localhost:8080/v1/audio/transcriptions \ -H "Content-Type: multipart/form-data" \ -F file=@audio.mp3 \ -F model=mistral/voxtral-mini-latest
Transcription streaming (SSE)
| Event type | Content | Notes |
|---|---|---|
| transcription.language | Language code | Language detected |
| transcription.text.delta | Text delta | Incremental text |
| transcription.segment | Full segment | Complete segment data |
| transcription.done | Final usage | Completion with tokens |
4) Embeddings
Mistral supports text embeddings via /v1/embeddings. See Embeddings in Bifrost docs.
| Parameter | Notes |
|---|---|
| input | Text or array of texts |
| model | Embedding model name |
| dimensions | Custom output dimensions (Optional) |
| encoding_format | "float" or "base64" |
Response returns embedding vectors with token usage.
curl -X POST http://localhost:8080/v1/embeddings \
-H "Content-Type: application/json" \
-d '{
"model": "mistral/mistral-embed",
"input": ["text to embed"]
}'5) OCR
Native OCR for extracting text and content from documents and images via the mistral-ocr-latest model. Gateway route: /v1/ocr. See OCR in Bifrost docs.
| Parameter | Notes |
|---|---|
| model | OCR model (e.g. mistral/mistral-ocr-latest) |
| document | Document input |
| include_image_base64 | Return extracted images as base64 |
| pages | Page indices to process |
| image_limit | Max images per page |
| image_min_size | Minimum image size (px) |
| table_format | Format for extracted tables (e.g. markdown, html) |
| extract_header | Extract page headers |
| extract_footer | Extract page footers |
| confidence_scores_granularity | page, block, word, document |
| bbox_annotation_format | Bounding box annotation format |
| document_annotation_format | Document-level annotation format |
| document_annotation_prompt | Custom annotation prompt |
Document types
| type | Required field | Use case |
|---|---|---|
| document_url | document_url | PDF URL or base64 data URL |
| image_url | image_url | Image URL |
curl -X POST http://localhost:8080/v1/ocr \
-H "Content-Type: application/json" \
-d '{
"model": "mistral/mistral-ocr-latest",
"document": {
"type": "document_url",
"document_url": "https://example.com/document.pdf"
},
"table_format": "markdown"
}'6) List Models
Lists available Mistral models with context length and capabilities. See List Models in Bifrost docs.
Lists available Mistral models with context length and capabilities.
curl http://localhost:8080/v1/models
Unsupported features
These operations return UnsupportedOperationError when routed through Bifrost's Mistral provider. See Unsupported features in Bifrost docs.
| Feature | Reason |
|---|---|
| Text Completions | Not offered by Mistral API |
| Image Generation | Not yet implemented in Bifrost (Mistral API supports this) |
| Speech/TTS | Not offered by Mistral API |
| File Management | Not offered by Mistral API |
| Batch Operations | Not offered by Mistral API |
Implementation caveats
| Caveat | Impact | Severity |
|---|---|---|
| Cache control stripped | Cache control directives removed from messages; prompt caching unavailable | Medium |
| Parameter filtering | prompt_cache_key, verbosity, store removed for Mistral compatibility | Low |
| Tool choice limitations | Cannot force specific tool; structured tool_choice simplified to "any" | Medium |
| User field truncation | User IDs over 64 characters are silently dropped | Low |
| Image generation not supported | Mistral API supports it but not yet implemented in Bifrost | Low |
Authoritative references
- Bifrost Mistral provider reference: docs.getbifrost.ai/providers/supported-providers/mistral
- Mistral API documentation: docs.mistral.ai
- Bifrost provider support overview: docs.getbifrost.ai/providers/supported-providers/overview