{"id":364722,"date":"2026-10-11T06:18:48","date_gmt":"2026-10-11T06:18:48","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/b-all-in-one-ai-providers\/"},"modified":"2026-10-11T10:43:16","modified_gmt":"2026-10-11T10:43:16","slug":"b-ai-provider-connectors","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/b-ai-provider-connectors\/","author":22028296,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.0","stable_tag":"1.0.0","tested":"7.1.3","requires":"7.0","requires_php":"7.4","requires_plugins":null,"header_name":"AI Provider Connectors","header_author":"bPlugins","header_description":"Connect 11 popular AI providers (OpenRouter, Mistral, Cohere, Groq, xAI, DeepSeek, Perplexity, Together, Fireworks, Hugging Face, Replicate) or any OpenAI-compatible endpoint to the WordPress AI Client, test API keys with one click, and choose which provider is used first.","assets_banners_color":"f0f6ff","last_updated":"2026-10-11 10:43:16","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/github.com\/ah-polash\/b-ai-provider-connectors","header_author_uri":"https:\/\/bplugins.com","rating":0,"author_block_rating":0,"active_installs":0,"downloads":87,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.0":{"tag":"1.0.0","author":"bplugins","date":"2026-10-11 10:43:16","revision":3739351}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3738967,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3738967,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256},"icon.svg":{"filename":"icon.svg","revision":3738967,"resolution":false,"location":"assets","locale":false}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3738967,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3738967,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.0"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3739351,"resolution":"1","location":"assets","locale":"","width":2560,"height":1600},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3739351,"resolution":"2","location":"assets","locale":"","width":2560,"height":1600},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3739351,"resolution":"3","location":"assets","locale":"","width":2560,"height":1600}},"screenshots":{"1":"Settings \u2192 AI Providers: switch the 11 bundled providers on or off, add an API key, and test the connection from one screen.","2":"Priority: drag providers into the order the WordPress AI Client should try them.","3":"Custom providers: connect any OpenAI-compatible endpoint, including a local Ollama, LM Studio or vLLM server."}},"plugin_section":[],"plugin_tags":[2353,259757,259397,253206,223725],"plugin_category":[],"plugin_contributors":[183994,226291],"plugin_business_model":[],"class_list":["post-364722","plugin","type-plugin","status-publish","hentry","plugin_tags-ai","plugin_tags-ai-provider","plugin_tags-connectors","plugin_tags-mistral","plugin_tags-openrouter","plugin_contributors-abuhayat","plugin_contributors-bplugins","plugin_committers-bplugins"],"banners":{"banner":"https:\/\/ps.w.org\/b-ai-provider-connectors\/assets\/banner-772x250.png?rev=3738967","banner_2x":"https:\/\/ps.w.org\/b-ai-provider-connectors\/assets\/banner-1544x500.png?rev=3738967","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":"https:\/\/ps.w.org\/b-ai-provider-connectors\/assets\/icon.svg?rev=3738967","icon":"https:\/\/ps.w.org\/b-ai-provider-connectors\/assets\/icon.svg?rev=3738967","icon_2x":false,"generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/b-ai-provider-connectors\/assets\/screenshot-1.png?rev=3739351","caption":"Settings \u2192 AI Providers: switch the 11 bundled providers on or off, add an API key, and test the connection from one screen."},{"src":"https:\/\/ps.w.org\/b-ai-provider-connectors\/assets\/screenshot-2.png?rev=3739351","caption":"Priority: drag providers into the order the WordPress AI Client should try them."},{"src":"https:\/\/ps.w.org\/b-ai-provider-connectors\/assets\/screenshot-3.png?rev=3739351","caption":"Custom providers: connect any OpenAI-compatible endpoint, including a local Ollama, LM Studio or vLLM server."}],"raw_content":"<!--section=description-->\n<p>AI Provider Connectors extends the WordPress AI Client and the core Connectors screen (Settings \u2192 Connectors) with four features:<\/p>\n\n<ul>\n<li><strong>11 ready-to-use AI providers.<\/strong> Connector cards for OpenRouter, Mistral AI, Cohere, Groq, xAI (Grok), DeepSeek, Perplexity, Together AI, Fireworks AI, Hugging Face and Replicate. Paste an API key, save it, and every feature that uses the WordPress AI Client (such as the AI plugin's excerpt and summary tools) can route through that provider \u2014 exactly like the built-in Anthropic, OpenAI and Google providers.<\/li>\n<li><strong>Test Connection button.<\/strong> A \"Test Connection\" button next to the \"Connected\" badge \u2014 and inside the expanded edit panel \u2014 for every supported provider. Clicking it re-validates the stored API key against the provider's live API and shows the result in a tooltip.<\/li>\n<li><strong>Custom providers.<\/strong> Add up to five OpenAI-compatible endpoints of your own \u2014 a hosted API that is not bundled, or a local model server such as Ollama, LM Studio or vLLM \u2014 and they behave exactly like the bundled ones.<\/li>\n<li><strong>AI Providers dashboard.<\/strong> A Settings \u2192 AI Providers screen where you switch providers on or off, see at a glance which ones are connected, run connection tests, manage custom providers, and drag providers into the order the AI Client should try them. When a feature needs an AI provider, the first connected provider in your list that supports the task is used.<\/li>\n<\/ul>\n\n<h4>Bundled providers<\/h4>\n\n<ul>\n<li>OpenRouter<\/li>\n<li>Mistral AI<\/li>\n<li>Cohere<\/li>\n<li>Groq<\/li>\n<li>xAI (Grok)<\/li>\n<li>DeepSeek<\/li>\n<li>Perplexity<\/li>\n<li>Together AI<\/li>\n<li>Fireworks AI<\/li>\n<li>Hugging Face<\/li>\n<li>Replicate<\/li>\n<\/ul>\n\n<h4>Already supported by Test Connection<\/h4>\n\n<ul>\n<li>Anthropic, OpenAI, Google \u2014 when their respective AI Provider plugins are active.<\/li>\n<\/ul>\n\n<p>Non-AI connectors (such as Akismet) are not live-tested because they require provider-specific verification flows.<\/p>\n\n<h4>Security and best practices<\/h4>\n\n<ul>\n<li>All connection tests run server-side; API keys are never sent to the browser.<\/li>\n<li>Tests and the priority page are gated by the <code>manage_options<\/code> capability, the standard REST nonce, and admin nonces.<\/li>\n<li>Keys can be supplied via the Connectors screen, via a PHP constant, or via an environment variable \u2014 checked in that order. The names follow the WordPress convention <code>{PROVIDER_ID}_API_KEY<\/code>, for example <code>OPENROUTER_API_KEY<\/code>, <code>HUGGINGFACE_API_KEY<\/code> or <code>REPLICATE_API_KEY<\/code>; custom providers use their own ID the same way.<\/li>\n<li>Connectors and API keys are managed entirely by WordPress core; this plugin only registers providers with the AI Client, just like the official AI Provider plugins.<\/li>\n<\/ul>\n\n<h4>Source code<\/h4>\n\n<p>The full source code is developed in the open on GitHub: https:\/\/github.com\/ah-polash\/b-ai-provider-connectors<\/p>\n\n<h3>External services<\/h3>\n\n<p>When you click <strong>Test connection<\/strong>, open the AI Providers screen (which checks providers that have a key), or when the WordPress AI Client sends a prompt through one of the bundled providers, this plugin sends requests to that provider's API using the API key you stored. Only providers you enabled and configured are contacted. Custom providers contact whatever endpoint you entered. Each provider's terms and privacy policy apply:<\/p>\n\n<ul>\n<li>OpenRouter \u2014 https:\/\/openrouter.ai\/terms, https:\/\/openrouter.ai\/privacy<\/li>\n<li>Mistral AI \u2014 https:\/\/legal.mistral.ai\/terms\/get-started\/, https:\/\/legal.mistral.ai\/terms\/privacy-policy\/<\/li>\n<li>Cohere \u2014 https:\/\/cohere.com\/terms-of-use, https:\/\/cohere.com\/privacy<\/li>\n<li>Groq \u2014 https:\/\/groq.com\/terms-of-use, https:\/\/groq.com\/privacy-policy<\/li>\n<li>xAI \u2014 https:\/\/x.ai\/legal\/terms-of-service, https:\/\/x.ai\/legal\/privacy-policy<\/li>\n<li>DeepSeek \u2014 https:\/\/platform.deepseek.com\/downloads\/DeepSeek%20Terms%20of%20Use.html, https:\/\/platform.deepseek.com\/downloads\/DeepSeek%20Privacy%20Policy.html<\/li>\n<li>Perplexity \u2014 https:\/\/www.perplexity.ai\/hub\/legal\/terms-of-service, https:\/\/www.perplexity.ai\/hub\/legal\/privacy-policy<\/li>\n<li>Together AI \u2014 https:\/\/www.together.ai\/terms-of-service, https:\/\/www.together.ai\/privacy<\/li>\n<li>Fireworks AI \u2014 https:\/\/fireworks.ai\/terms-of-service, https:\/\/fireworks.ai\/privacy-policy<\/li>\n<li>Hugging Face \u2014 https:\/\/huggingface.co\/terms-of-service, https:\/\/huggingface.co\/privacy<\/li>\n<li>Replicate \u2014 https:\/\/replicate.com\/terms, https:\/\/replicate.com\/privacy<\/li>\n<\/ul>\n\n<p>The <strong>AI Providers<\/strong> settings screen shows a short video. Its preview thumbnail is loaded from YouTube's image server (i.ytimg.com), and the player itself is only embedded from youtube-nocookie.com after you press play. YouTube terms: https:\/\/www.youtube.com\/t\/terms \u2014 Google privacy policy: https:\/\/policies.google.com\/privacy<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>b-ai-provider-connectors<\/code> folder to the <code>\/wp-content\/plugins\/<\/code> directory, or install it from the Plugins screen.<\/li>\n<li>Activate the plugin through the <strong>Plugins<\/strong> screen.<\/li>\n<li>Visit <strong>Settings \u2192 Connectors<\/strong>. The 11 bundled providers appear in the list alongside any AI Provider plugins you already have installed. Paste an API key into any of them, save, then click <strong>Test Connection<\/strong> to verify.<\/li>\n<li>Visit <strong>Settings \u2192 AI Providers<\/strong> to switch providers on or off, add custom OpenAI-compatible providers, and choose which provider is tried first.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"which%20wordpress%20version%20do%20i%20need%3F\"><h3>Which WordPress version do I need?<\/h3><\/dt>\n<dd><p>WordPress 7.0 or newer \u2014 the plugin builds on the Connectors API and the AI Client that ship with core since 7.0.<\/p><\/dd>\n<dt id=\"who%20can%20run%20the%20test%20or%20change%20the%20priority%3F\"><h3>Who can run the test or change the priority?<\/h3><\/dt>\n<dd><p>Only users with the <code>manage_options<\/code> capability.<\/p><\/dd>\n<dt id=\"does%20the%20test%20send%20my%20api%20key%20anywhere%20new%3F\"><h3>Does the test send my API key anywhere new?<\/h3><\/dt>\n<dd><p>No. Each test re-uses the API key already stored for the connector (or supplied via an environment variable \/ PHP constant) and calls the same provider endpoint a normal client would use.<\/p><\/dd>\n<dt id=\"how%20does%20the%20test%20know%20if%20the%20key%20is%20valid%3F\"><h3>How does the test know if the key is valid?<\/h3><\/dt>\n<dd><p>Each provider exposes a lightweight endpoint that returns 200 for a valid key and 401\/403 for an invalid one (Replicate uses <code>Authorization: Token<\/code>, all others use <code>Authorization: Bearer<\/code>). Perplexity has no public <code>\/models<\/code> endpoint, so the test sends an intentionally-malformed <code>chat\/completions<\/code> request and treats 400\/422 (auth passed, payload invalid) as a valid key, 401 as invalid.<\/p><\/dd>\n<dt id=\"how%20do%20i%20hide%20a%20bundled%20provider%20i%20do%20not%20use%3F\"><h3>How do I hide a bundled provider I do not use?<\/h3><\/dt>\n<dd><p>Switch it off on <strong>Settings \u2192 AI Providers<\/strong>. Disabled providers disappear from the Connectors screen and are never used by AI features; any key you saved is kept in case you switch it back on.<\/p><\/dd>\n<dt id=\"can%20i%20use%20a%20local%20model%20server%3F\"><h3>Can I use a local model server?<\/h3><\/dt>\n<dd><p>Yes. Add a custom provider with the server's OpenAI-compatible base URL (for example <code>http:\/\/localhost:11434\/v1<\/code> for Ollama). If the server does not need a key, enter any placeholder on the Connectors screen.<\/p><\/dd>\n<dt id=\"why%20do%20openrouter%20and%20hugging%20face%20verify%20keys%20differently%3F\"><h3>Why do OpenRouter and Hugging Face verify keys differently?<\/h3><\/dt>\n<dd><p>Both publish their model list without authentication, so the AI Client's standard \"list models\" check would accept any key. This plugin verifies those two against an authenticated endpoint instead.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release: 11 bundled AI providers, custom OpenAI-compatible providers, Test connection button on the Connectors screen, and the AI Providers settings screen with enable\/disable and priority.<\/li>\n<\/ul>","raw_excerpt":"Connect 11 AI providers or any OpenAI-compatible endpoint to WordPress, test API keys in one click, and pick which provider is used first.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/364722","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=364722"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/bplugins"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=364722"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=364722"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=364722"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=364722"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=364722"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=364722"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}