Skip to content

Releases: mistralai/client-python

python - v2.1.2 - 2026-03-20 15:16:14

20 Mar 15:16
ec0e7c4

Choose a tag to compare

Generated by Speakeasy CLI

mistralai 2.1.2

Python SDK Changes:

  • mistral.beta.conversations.start():
    • request.tools[] Changed (Breaking ⚠️)
  • mistral.beta.conversations.list(): response.[].union(ModelConversation).tools[] Changed (Breaking ⚠️)
  • mistral.beta.conversations.get(): response.union(ModelConversation).tools[] Changed (Breaking ⚠️)
  • mistral.beta.conversations.start_stream():
    • request.tools[] Changed (Breaking ⚠️)
  • mistral.beta.agents.create():
    • request.tools[] Changed (Breaking ⚠️)
    • response.tools[] Changed (Breaking ⚠️)
  • mistral.beta.agents.list(): response.[].tools[] Changed (Breaking ⚠️)
  • mistral.beta.agents.get(): response.tools[] Changed (Breaking ⚠️)
  • mistral.beta.agents.update():
    • request.tools[] Changed (Breaking ⚠️)
    • response.tools[] Changed (Breaking ⚠️)
  • mistral.beta.agents.update_version(): response.tools[] Changed (Breaking ⚠️)
  • mistral.beta.agents.list_versions(): response.[].tools[] Changed (Breaking ⚠️)
  • mistral.beta.agents.get_version(): response.tools[] Changed (Breaking ⚠️)
  • mistral.chat.complete():
    • request Changed (Breaking ⚠️)
    • response.choices[] Changed (Breaking ⚠️)
  • mistral.chat.stream(): request Changed (Breaking ⚠️)
  • mistral.fim.complete(): response.choices[] Changed (Breaking ⚠️)
  • mistral.agents.complete():
    • request Changed (Breaking ⚠️)
    • response.choices[] Changed (Breaking ⚠️)
  • mistral.agents.stream(): request Changed (Breaking ⚠️)

Generated with Speakeasy CLI 1.754.0

Publishing Completed

python - v2.1.1 - 2026-03-20 12:22:50

20 Mar 12:22
325c500

Choose a tag to compare

Generated by Speakeasy CLI

mistralai 2.1.1

Python SDK Changes:

  • mistral.chat.complete(): response.choices[] Changed (Breaking ⚠️)
  • mistral.fim.complete(): response.choices[] Changed (Breaking ⚠️)
  • mistral.agents.complete(): response.choices[] Changed (Breaking ⚠️)

Generated with Speakeasy CLI 1.754.0

Publishing Completed

python - v2.1.0 - 2026-03-20 08:53:19

20 Mar 08:53
86e592f

Choose a tag to compare

Generated by Speakeasy CLI

mistralai 2.1.0

Python SDK Changes:

  • mistral.beta.agents.update_version(): response Changed (Breaking ⚠️)
  • mistral.beta.agents.get(): response Changed (Breaking ⚠️)
  • mistral.agents.stream(): request Changed (Breaking ⚠️)
  • mistral.agents.complete(): request Changed (Breaking ⚠️)
  • mistral.beta.conversations.start_stream(): request Changed (Breaking ⚠️)
  • mistral.chat.stream(): request Changed (Breaking ⚠️)
  • mistral.chat.complete(): request Changed (Breaking ⚠️)
  • mistral.beta.conversations.restart(): request Changed (Breaking ⚠️)
  • mistral.beta.agents.list_versions(): response.[] Changed (Breaking ⚠️)
  • mistral.beta.conversations.start(): request Changed (Breaking ⚠️)
  • mistral.beta.conversations.list(): response.[] Changed (Breaking ⚠️)
  • mistral.beta.conversations.get(): response Changed (Breaking ⚠️)
  • mistral.beta.agents.update():
    • request Changed (Breaking ⚠️)
    • response Changed (Breaking ⚠️)
  • mistral.beta.agents.get_version(): response Changed (Breaking ⚠️)
  • mistral.beta.agents.list(): response.[] Changed (Breaking ⚠️)
  • mistral.beta.agents.create():
    • request Changed (Breaking ⚠️)
    • response Changed (Breaking ⚠️)
  • mistral.beta.conversations.restart_stream(): request Changed (Breaking ⚠️)
  • mistral.beta.conversations.append_stream():
    • request.completion_args.reasoning_effort Added
  • mistral.audio.voices.update(): Added
  • mistral.beta.conversations.append():
    • request.completion_args.reasoning_effort Added
  • mistral.audio.voices.list(): Added
  • mistral.audio.speech.complete(): Added
  • mistral.models.retrieve(): response.union(base).capabilities.reasoning Added
  • mistral.models.list(): response.data[].union(base).capabilities.reasoning Added
  • mistral.audio.voices.get_sample_audio(): Added
  • mistral.audio.voices.get(): Added
  • mistral.audio.voices.delete(): Added
  • mistral.audio.voices.create(): Added

Generated with Speakeasy CLI 1.754.0

Publishing Completed

python - v2.0.5 - 2026-03-18 15:31:29

18 Mar 15:31
b2428fd

Choose a tag to compare

Generated by Speakeasy CLI

mistralai 2.0.5

Python SDK Changes:

  • mistral.beta.connectors.get_auth_url(): Added
  • mistral.chat.complete(): request.reasoning_effort Added
  • mistral.chat.stream(): request.reasoning_effort Added
  • mistral.agents.complete(): request.reasoning_effort Added
  • mistral.agents.stream(): request.reasoning_effort Added

Generated with Speakeasy CLI 1.754.0

Publishing Completed

python - v2.0.4 - 2026-03-16 15:29:36

16 Mar 15:29
1f25e81

Choose a tag to compare

Generated by Speakeasy CLI

mistralai 2.0.4

Python SDK Changes:

  • mistral.beta.observability.judges.judge_conversation(): Added
  • mistral.chat.complete(): request.guardrails Added
  • mistral.chat.stream(): request.guardrails Added
  • mistral.agents.complete(): request.guardrails Added
  • mistral.agents.stream(): request.guardrails Added

Generated with Speakeasy CLI 1.729.0

Publishing Completed

python - v2.0.3 - 2026-03-16 11:06:10

16 Mar 11:06
93b9b7a

Choose a tag to compare

Generated by Speakeasy CLI

mistralai 2.0.3

Python SDK Changes:

  • mistral.beta.conversations.append_stream():
    • request.inputs.union(Array<InputEntries>)[].union(MessageInputEntry).content.union(Array<MessageInputContentChunks>)[].union(ThinkChunk).thinking[].union(ReferenceChunk).reference_ids[] Changed (Breaking ⚠️)
    • response.[].data.union(message.output.delta).content.union(OutputContentChunks).union(ThinkChunk).thinking[].union(ReferenceChunk).reference_ids[] Changed (Breaking ⚠️)
  • mistral.chat.complete():
    • request.messages[].union(system).content.union(Array<SystemMessageContentChunks>)[].union(thinking).thinking[].union(ReferenceChunk).reference_ids[] Changed (Breaking ⚠️)
    • response.choices[].message.content.union(Array<ContentChunk>)[].union(reference).reference_ids[] Changed (Breaking ⚠️)
  • mistral.beta.conversations.start():
    • request.inputs.union(Array<InputEntries>)[].union(MessageInputEntry).content.union(Array<MessageInputContentChunks>)[].union(ThinkChunk).thinking[].union(ReferenceChunk).reference_ids[] Changed (Breaking ⚠️)
    • response.outputs[].union(MessageOutputEntry).content.union(Array<MessageOutputContentChunks>)[].union(ThinkChunk).thinking[].union(ReferenceChunk).reference_ids[] Changed (Breaking ⚠️)
  • mistral.beta.conversations.append():
    • request.inputs.union(Array<InputEntries>)[].union(MessageOutputEntry).content.union(Array<MessageOutputContentChunks>)[].union(ThinkChunk).thinking[].union(ReferenceChunk).reference_ids[] Changed (Breaking ⚠️)
    • response.outputs[].union(MessageOutputEntry).content.union(Array<MessageOutputContentChunks>)[].union(ThinkChunk).thinking[].union(ReferenceChunk).reference_ids[] Changed (Breaking ⚠️)
  • mistral.beta.conversations.get_history(): response.entries[].union(MessageInputEntry).content.union(Array<MessageInputContentChunks>)[].union(ThinkChunk).thinking[].union(ReferenceChunk).reference_ids[] Changed (Breaking ⚠️)
  • mistral.beta.conversations.get_messages(): response.messages[].union(MessageInputEntry).content.union(Array<MessageInputContentChunks>)[].union(ThinkChunk).thinking[].union(ReferenceChunk).reference_ids[] Changed (Breaking ⚠️)
  • mistral.beta.conversations.restart():
    • request.inputs.union(Array<InputEntries>)[].union(MessageInputEntry).content.union(Array<MessageInputContentChunks>)[].union(ThinkChunk).thinking[].union(ReferenceChunk).reference_ids[] Changed (Breaking ⚠️)
    • response.outputs[].union(MessageOutputEntry).content.union(Array<MessageOutputContentChunks>)[].union(ThinkChunk).thinking[].union(ReferenceChunk).reference_ids[] Changed (Breaking ⚠️)
  • mistral.beta.conversations.start_stream():
    • request.inputs.union(Array<InputEntries>)[].union(MessageInputEntry).content.union(Array<MessageInputContentChunks>)[].union(ThinkChunk).thinking[].union(ReferenceChunk).reference_ids[] Changed (Breaking ⚠️)
    • response.[].data.union(message.output.delta).content.union(OutputContentChunks).union(ThinkChunk).thinking[].union(ReferenceChunk).reference_ids[] Changed (Breaking ⚠️)
  • mistral.classifiers.classify_chat():
    • request.input.union(InstructRequest).messages[].union(user).content.union(Array<ContentChunk>)[].union(reference).reference_ids[] Changed (Breaking ⚠️)
  • mistral.classifiers.moderate_chat():
    • request.inputs.union(Array<>)[].union(tool).content.union(Array<ContentChunk>)[].union(reference).reference_ids[] Changed (Breaking ⚠️)
  • mistral.beta.conversations.restart_stream():
    • request.inputs.union(Array<InputEntries>)[].union(MessageInputEntry).content.union(Array<MessageInputContentChunks>)[].union(ThinkChunk).thinking[].union(ReferenceChunk).reference_ids[] Changed (Breaking ⚠️)
    • response.[].data.union(message.output.delta).content.union(OutputContentChunks).union(ThinkChunk).thinking[].union(ReferenceChunk).reference_ids[] Changed (Breaking ⚠️)
  • mistral.chat.stream():
    • request.messages[].union(tool).content.union(Array<ContentChunk>)[].union(reference).reference_ids[] Changed (Breaking ⚠️)
    • response.[].data.choices[].delta.content.union(Array<ContentChunk>)[].union(reference).reference_ids[] Changed (Breaking ⚠️)
  • mistral.fim.complete(): response.choices[].message.content.union(Array<ContentChunk>)[].union(thinking).thinking[].union(ReferenceChunk).reference_ids[] Changed (Breaking ⚠️)
  • mistral.fim.stream(): response.[].data.choices[].delta.content.union(Array<ContentChunk>)[].union(thinking).thinking[].union(ReferenceChunk).reference_ids[] Changed (Breaking ⚠️)
  • mistral.agents.complete():
    • request.messages[].union(system).content.union(Array<SystemMessageContentChunks>)[].union(thinking).thinking[].union(ReferenceChunk).reference_ids[] Changed (Breaking ⚠️)
    • response.choices[].message.content.union(Array<ContentChunk>)[].union(reference).reference_ids[] Changed (Breaking ⚠️)
  • mistral.agents.stream():
    • request.messages[].union(system).content.union(Array<SystemMessageContentChunks>)[].union(thinking).thinking[].union(ReferenceChunk).reference_ids[] Changed (Breaking ⚠️)
    • response.[].data.choices[].delta.content.union(Array<ContentChunk>)[].union(reference).reference_ids[] Changed (Breaking ⚠️)
  • mistral.models.list(): response.data[].union(base).capabilities Changed
  • mistral.models.retrieve(): response.union(base).capabilities Changed

Generated with Speakeasy CLI 1.754.0

Publishing Completed

python - v2.0.2 - 2026-03-13 13:56:02

13 Mar 13:56
ed25660

Choose a tag to compare

Generated by Speakeasy CLI

mistralai 2.0.2

Python SDK Changes:

  • mistral.beta.conversations.start(): response.guardrails[] Changed (Breaking ⚠️)
  • mistral.beta.conversations.append(): response.guardrails[] Changed (Breaking ⚠️)
  • mistral.beta.conversations.restart(): response.guardrails[] Changed (Breaking ⚠️)

Generated with Speakeasy CLI 1.729.0

Publishing Completed

python - v2.0.1 - 2026-03-12 07:59:19

12 Mar 07:59
8da1e18

Choose a tag to compare

Generated by Speakeasy CLI

mistralai 2.0.1

Python SDK Changes:

  • mistral.chat.complete():
    • request.messages[].union(user).content.union(Array<ContentChunk>)[].union(audio_url) Removed (Breaking ⚠️)
    • response.choices[].message.content.union(Array<ContentChunk>)[].union(audio_url) Removed (Breaking ⚠️)
  • mistral.classifiers.classify_chat():
    • request.input.union(InstructRequest).messages[].union(user).content.union(Array<ContentChunk>)[].union(audio_url) Removed (Breaking ⚠️)
  • mistral.classifiers.moderate_chat():
    • request.inputs.union(Array<>)[].union(user).content.union(Array<ContentChunk>)[].union(audio_url) Removed (Breaking ⚠️)
  • mistral.agents.stream():
    • request.messages[].union(user).content.union(Array<ContentChunk>)[].union(audio_url) Removed (Breaking ⚠️)
    • response.[].data.choices[].delta.content.union(Array<ContentChunk>)[].union(audio_url) Removed (Breaking ⚠️)
  • mistral.agents.complete():
    • request.messages[].union(user).content.union(Array<ContentChunk>)[].union(audio_url) Removed (Breaking ⚠️)
    • response.choices[].message.content.union(Array<ContentChunk>)[].union(audio_url) Removed (Breaking ⚠️)
  • mistral.fim.stream(): response.[].data.choices[].delta.content.union(Array<ContentChunk>)[].union(audio_url) Removed (Breaking ⚠️)
  • mistral.fim.complete(): response.choices[].message.content.union(Array<ContentChunk>)[].union(audio_url) Removed (Breaking ⚠️)
  • mistral.chat.stream():
    • request.messages[].union(user).content.union(Array<ContentChunk>)[].union(audio_url) Removed (Breaking ⚠️)
    • response.[].data.choices[].delta.content.union(Array<ContentChunk>)[].union(audio_url) Removed (Breaking ⚠️)
  • mistral.beta.conversations.restart_stream():
    • request.guardrails[] Changed
  • mistral.beta.agents.update():
    • request Changed
    • response Changed
  • mistral.beta.agents.update_version(): response Changed
  • mistral.beta.agents.list_versions(): response.[] Changed
  • mistral.beta.agents.get_version(): response Changed
  • mistral.beta.agents.get(): response Changed
  • mistral.beta.agents.list(): response.[] Changed
  • mistral.beta.agents.create():
    • request Changed
    • response Changed
  • mistral.beta.conversations.start(): request Changed
  • mistral.beta.conversations.start_stream(): request Changed
  • mistral.beta.conversations.restart():
    • request.guardrails[] Changed
  • mistral.beta.conversations.get(): response.union(ModelConversation) Changed
  • mistral.beta.conversations.list(): response.[].union(ModelConversation) Changed

Generated with Speakeasy CLI 1.729.0

Publishing Completed

python - v2.0.0 - 2026-03-10 17:12:01

10 Mar 17:12
f5e9908

Choose a tag to compare

A technical release focused on improving developer experience.

What's new

Namespace package (mistralai.*)

The SDK is now a PEP 420 namespace package. All imports move from mistralai to mistralai.client:

# v1
from mistralai import Mistral

# v2
from mistralai.client import Mistral

Azure and GCP SDKs are now sub-packages under the same namespace:

from mistralai.azure.client import MistralAzure
from mistralai.gcp.client import MistralGCP  # renamed from MistralGoogleCloud

Schema naming conventions

42 request/response types renamed to follow consistent conventions:

  • Request bodies: {Verb}{Entity}Request (e.g. CreateAgentRequest)
  • Responses: {Verb}{Entity}Response (e.g. ListFilesResponse)
  • Entities: {Entity} (e.g. BatchJob, Checkpoint)

See MIGRATION.md for the full rename table.

Forward compatibility

  • Enums now accept unknown values, new API values won't crash old SDK versions
  • Discriminated unions get an Unknown variant for the same reason

Automatic schema conflict resolution

Speakeasy's nameResolutionFeb2025 flag is enabled, automatically detecting and resolving ambiguous type names during generation (e.g. ToolsConversationRequestTool).

Breaking changes

  • All import paths changed (see above)
  • 42 type renames (see MIGRATION.md)
  • FunctionTool.type: Optional[FunctionToolType]Literal["function"]
  • GCP class: MistralGoogleCloudMistralGCP

python - v2.0.0rc1 - 2026-03-02 15:39:49

02 Mar 15:39
d6f1994

Choose a tag to compare

Generated by Speakeasy CLI

mistralai 2.0.0rc1

Python SDK Changes:

  • mistral.beta.libraries.documents.list(): response.data[].process_status Added
  • mistral.beta.libraries.documents.upload(): response.process_status Added
  • mistral.beta.libraries.documents.get(): response.process_status Added
  • mistral.beta.libraries.documents.update(): response.process_status Added
  • mistral.beta.libraries.documents.status(): response.process_status Added

Generated with Speakeasy CLI 1.729.0

Publishing Completed