{"id":287860,"date":"2026-03-23T12:17:08","date_gmt":"2026-03-23T12:17:08","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/ai-provider-for-mistral\/"},"modified":"2026-04-21T07:09:25","modified_gmt":"2026-04-21T07:09:25","slug":"ai-provider-for-mistral","status":"publish","type":"plugin","link":"https:\/\/es-mx.wordpress.org\/plugins\/ai-provider-for-mistral\/","author":16839563,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.2.0","stable_tag":"1.2.0","tested":"7.0","requires":"6.9","requires_php":"7.4","requires_plugins":null,"header_name":"AI Provider for Mistral","header_author":"Lauri Saarni","header_description":"Independent WordPress AI Client provider for Mistral.","assets_banners_color":"fce195","last_updated":"2026-04-21 07:09:25","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/github.com\/saarnilauri\/ai-provider-for-mistral","header_author_uri":"https:\/\/profiles.wordpress.org\/laurisaarni\/","rating":0,"author_block_rating":0,"active_installs":20,"downloads":403,"num_ratings":0,"support_threads":1,"support_threads_resolved":1,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.1.0":{"tag":"1.1.0","author":"laurisaarni","date":"2026-03-23 12:15:58"},"1.1.1":{"tag":"1.1.1","author":"laurisaarni","date":"2026-03-31 05:34:34"},"1.2.0":{"tag":"1.2.0","author":"laurisaarni","date":"2026-04-21 07:09:25"}},"upgrade_notice":{"0.1.0":"<p>Initial release.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3495144,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3495144,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256},"icon.svg":{"filename":"icon.svg","revision":3495144,"resolution":false,"location":"assets","locale":false}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3495144,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3495144,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.1.0","1.1.1","1.2.0"],"block_files":[],"assets_screenshots":[],"screenshots":[]},"plugin_section":[],"plugin_tags":[2353,5739,25308,253206],"plugin_category":[],"plugin_contributors":[258422],"plugin_business_model":[],"class_list":["post-287860","plugin","type-plugin","status-publish","hentry","plugin_tags-ai","plugin_tags-artificial-intelligence","plugin_tags-connector","plugin_tags-mistral","plugin_contributors-laurisaarni","plugin_committers-laurisaarni"],"banners":{"banner":"https:\/\/ps.w.org\/ai-provider-for-mistral\/assets\/banner-772x250.png?rev=3495144","banner_2x":"https:\/\/ps.w.org\/ai-provider-for-mistral\/assets\/banner-1544x500.png?rev=3495144","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":"https:\/\/ps.w.org\/ai-provider-for-mistral\/assets\/icon.svg?rev=3495144","icon":"https:\/\/ps.w.org\/ai-provider-for-mistral\/assets\/icon.svg?rev=3495144","icon_2x":false,"generated":false},"screenshots":[],"raw_content":"<!--section=description-->\n<p>This plugin provides a third-party Mistral integration for the PHP AI Client SDK. It enables WordPress sites to use Mistral models for text generation and related AI capabilities.\nIt is not affiliated with, endorsed by, or sponsored by Mistral AI.<\/p>\n\n<p><strong>Features:<\/strong><\/p>\n\n<ul>\n<li>Text generation with Mistral models<\/li>\n<li>Image generation with Mistral mistral-medium-2505 model<\/li>\n<li>Function calling support (for compatible models)<\/li>\n<li>Vision input support (for compatible models)<\/li>\n<li>Automatic provider registration<\/li>\n<\/ul>\n\n<p>Available models are dynamically discovered from the Mistral API.<\/p>\n\n<p><strong>Requirements:<\/strong><\/p>\n\n<ul>\n<li>PHP 7.4 or higher<\/li>\n<li>PHP AI Client plugin must be installed and activated<\/li>\n<li>Mistral API key<\/li>\n<\/ul>\n\n<h3>For Developers<\/h3>\n\n<h4>Filters<\/h4>\n\n<p><strong><code>ai_provider_for_mistral_model_sort_callback<\/code><\/strong><\/p>\n\n<p>Filters the comparator used to order Mistral models in the metadata directory. Return any callable with the <code>usort()<\/code> signature <code>function (ModelMetadata $a, ModelMetadata $b): int<\/code>. The default comparator, the directory instance, and the unsorted model list are passed as context, so your filter can delegate to the default for everything except the cases you want to override.<\/p>\n\n<p>Example \u2014 pin <code>codestral-latest<\/code> to the top and fall back to the default order for everything else:<\/p>\n\n<pre><code>add_filter(\n    'ai_provider_for_mistral_model_sort_callback',\n    function ( callable $default ): callable {\n        return function ( $a, $b ) use ( $default ) {\n            if ( $a-&gt;getId() === 'codestral-latest' ) return -1;\n            if ( $b-&gt;getId() === 'codestral-latest' ) return 1;\n            return $default( $a, $b );\n        };\n    }\n);\n<\/code><\/pre>\n\n<h3>External services<\/h3>\n\n<p>This plugin connects to the Mistral AI API (https:\/\/api.mistral.ai\/v1) to provide AI text generation and image generation capabilities.<\/p>\n\n<p>Data is sent to the Mistral API when your application code makes AI generation requests through the PHP AI Client. The data sent includes your prompts, model configuration, and API key. No data is sent automatically \u2014 requests only occur when explicitly triggered by code using the PHP AI Client SDK.<\/p>\n\n<p>This service is provided by Mistral AI (https:\/\/mistral.ai\/):\n- Terms of Service: https:\/\/mistral.ai\/terms\/\n- Privacy Policy: https:\/\/mistral.ai\/terms\/#privacy-policy<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Ensure the PHP AI Client plugin is installed and activated<\/li>\n<li>Upload the plugin files to <code>\/wp-content\/plugins\/ai-provider-for-mistral\/<\/code><\/li>\n<li>Activate the plugin through the 'Plugins' menu in WordPress<\/li>\n<li>Configure your Mistral API key via the <code>MISTRAL_API_KEY<\/code> environment variable or constant<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"how%20do%20i%20get%20a%20mistral%20api%20key%3F\"><h3>How do I get a Mistral API key?<\/h3><\/dt>\n<dd><p>Visit the <a href=\"https:\/\/console.mistral.ai\/\">Mistral Console<\/a> to create an account and generate an API key.<\/p><\/dd>\n<dt id=\"does%20this%20plugin%20work%20without%20the%20php%20ai%20client%3F\"><h3>Does this plugin work without the PHP AI Client?<\/h3><\/dt>\n<dd><p>No, this plugin requires the PHP AI Client plugin to be installed and activated. It provides the Mistral-specific implementation that the PHP AI Client uses.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.2.0<\/h4>\n\n<ul>\n<li>Default sort now surfaces flagship Mistral models (Large, Medium, Magistral, Codestral, \u2026) first and sinks legacy open-weights and non-chat models to the bottom.<\/li>\n<li>New <code>ai_provider_for_mistral_model_sort_callback<\/code> filter lets integrators replace the sort comparator.<\/li>\n<li>Declare document input modality on all chat models and serialize <code>{type: \"document_url\"}<\/code> content chunks \u2014 document QnA now works through any chat model via a remote URL (upload via the Files API for private documents).<\/li>\n<li>Declare audio input modality on Voxtral models so the AI Client surfaces them as audio-capable chat models.<\/li>\n<\/ul>\n\n<h4>1.1.1<\/h4>\n\n<ul>\n<li>Fix an issue with the image generation model<\/li>\n<\/ul>\n\n<h4>1.1.0<\/h4>\n\n<ul>\n<li>Refactor to follow wp.org plugin guidelines<\/li>\n<\/ul>\n\n<h4>1.0.2<\/h4>\n\n<ul>\n<li>Add provider description and logo for connector screen<\/li>\n<\/ul>\n\n<h4>1.0.1<\/h4>\n\n<ul>\n<li>Clean up plugin distribution<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Adjust the tool calling to work with Mistral API.<\/li>\n<li>Redesign banners and icons<\/li>\n<\/ul>\n\n<h4>0.3.3<\/h4>\n\n<ul>\n<li>Fix image generation model loading when using as a plugin.<\/li>\n<\/ul>\n\n<h4>0.3.2<\/h4>\n\n<ul>\n<li>Add support for image generation<\/li>\n<li>Fix issue in output schema<\/li>\n<\/ul>\n\n<h4>0.3.1<\/h4>\n\n<ul>\n<li>Add support for output schema<\/li>\n<\/ul>\n\n<h4>0.3.0<\/h4>\n\n<ul>\n<li>Rename plugin to \"AI Provider for Mistral\" (new slug: ai-provider-for-mistral, new namespace: AiProviderForMistral)<\/li>\n<li>Throw TokenLimitReachedException when Mistral returns finish_reason \"length\"<\/li>\n<\/ul>\n\n<h4>0.2.0<\/h4>\n\n<ul>\n<li>Rewrite the plugin to use better naming that reflects that this is independent product and it is not official Mistral product.<\/li>\n<li>Add unit and integration tests<\/li>\n<\/ul>\n\n<h4>0.1.1 - 0.1.3<\/h4>\n\n<p>Improve package \/ plugin distribution<\/p>\n\n<h4>0.1.0<\/h4>\n\n<ul>\n<li>Initial release<\/li>\n<li>Support for Mistral text generation models<\/li>\n<li>Function calling support for compatible models<\/li>\n<li>Vision input support for compatible models<\/li>\n<\/ul>","raw_excerpt":"Independent WordPress AI Client provider for Mistral.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/es-mx.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/287860","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/es-mx.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/es-mx.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/es-mx.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=287860"}],"author":[{"embeddable":true,"href":"https:\/\/es-mx.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/laurisaarni"}],"wp:attachment":[{"href":"https:\/\/es-mx.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=287860"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/es-mx.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=287860"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/es-mx.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=287860"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/es-mx.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=287860"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/es-mx.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=287860"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/es-mx.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=287860"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}