{"id":377209,"date":"2026-10-05T08:56:17","date_gmt":"2026-10-05T08:56:17","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/ai-provider-for-cloudflare-ai-gateway\/"},"modified":"2026-10-05T08:56:00","modified_gmt":"2026-10-05T08:56:00","slug":"ai-provider-for-cloudflare-ai-gateway","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/ai-provider-for-cloudflare-ai-gateway\/","author":14788414,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.1","stable_tag":"1.0.1","tested":"7.1.3","requires":"7.0","requires_php":"7.4","requires_plugins":null,"header_name":"AI Provider for Cloudflare AI Gateway","header_author":"Bestony","header_description":"Cloudflare AI Gateway provider for the WordPress AI Client.","assets_banners_color":"","last_updated":"2026-10-05 08:56:00","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/github.com\/bestony\/AI-Provider-for-Cloudflare-AI-Gateway","header_author_uri":"https:\/\/github.com\/bestony","rating":0,"author_block_rating":0,"active_installs":0,"downloads":213,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","faq","changelog"],"tags":{"1.0.1":{"tag":"1.0.1","author":"bestony","date":"2026-10-05 08:56:00","revision":3728454}},"upgrade_notice":[],"ratings":[],"assets_icons":[],"assets_banners":[],"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.1"],"block_files":[],"assets_screenshots":[],"screenshots":[]},"plugin_section":[],"plugin_tags":[2353,262373,5739,3882,25308],"plugin_category":[],"plugin_contributors":[145631],"plugin_business_model":[],"class_list":["post-377209","plugin","type-plugin","status-publish","hentry","plugin_tags-ai","plugin_tags-ai-gateway","plugin_tags-artificial-intelligence","plugin_tags-cloudflare","plugin_tags-connector","plugin_contributors-bestony","plugin_committers-bestony"],"banners":[],"icons":{"svg":false,"icon":"https:\/\/s.w.org\/plugins\/geopattern-icon\/ai-provider-for-cloudflare-ai-gateway.svg","icon_2x":false,"generated":true},"screenshots":[],"raw_content":"<!--section=description-->\n<p>This plugin sends WordPress AI Client text generation through Cloudflare AI Gateway's OpenAI-compatible\nREST API. It supports chat history, tools, structured JSON output, and optional vision input.<\/p>\n\n<h3>Setup<\/h3>\n\n<ol>\n<li>Activate the plugin.<\/li>\n<li>Open <strong>Settings &gt; Connectors<\/strong> and save a Cloudflare API token with the account-level Workers AI\nRead permission.<\/li>\n<li>Open <strong>Settings &gt; Cloudflare AI Gateway<\/strong>, or click <strong>Settings<\/strong> in the plugin row.<\/li>\n<li>Enter the Cloudflare Account ID, or enter a complete HTTPS API base URL for a compatible custom route.<\/li>\n<li>Enter one or more model IDs such as <code>openai\/gpt-4.1<\/code>.<\/li>\n<\/ol>\n\n<p>The REST API base URL built from an Account ID is:\n    https:\/\/api.cloudflare.com\/client\/v4\/accounts\/{ACCOUNT_ID}\/ai\/v1.<\/p>\n\n<h3>External Services<\/h3>\n\n<p>This plugin connects to Cloudflare AI Gateway, a service provided by Cloudflare, Inc. The connection\nis required to generate text. The plugin sends your prompt to Cloudflare through its API and displays\nthe generated response in WordPress. No other external service is used.<\/p>\n\n<p>Data is sent only when a generative AI request is made while this provider is selected or preferred,\nand only after the site administrator has configured an Account ID or a complete API base URL. Each\nrequest sends:<\/p>\n\n<ul>\n<li>The prompt, the conversation messages, and any system instruction.<\/li>\n<li>Attached image data, when the request contains an image and the selected model supports image input.<\/li>\n<li>Tool and function declarations, and the JSON schema used for structured output, when the request uses them.<\/li>\n<li>The configured model ID and the generation settings for the request, such as token limits, temperature, and stop sequences.<\/li>\n<li>The Cloudflare API token stored in <strong>Settings &gt; Connectors<\/strong>, sent as the Authorization header.<\/li>\n<\/ul>\n\n<p>Requests go to the Cloudflare API base URL configured by the site administrator. With only an Account\nID configured, that is <code>https:\/\/api.cloudflare.com\/client\/v4\/accounts\/{ACCOUNT_ID}\/ai\/v1<\/code>. A custom\nbase URL points to the compatible gateway route or domain the administrator chose. Nothing is sent to\nthe plugin author or to any other service.<\/p>\n\n<p>Cloudflare AI Gateway documentation: https:\/\/developers.cloudflare.com\/ai-gateway\/usage\/rest-api\/\nCloudflare terms of use: https:\/\/www.cloudflare.com\/terms\/\nCloudflare privacy policy: https:\/\/www.cloudflare.com\/privacypolicy\/<\/p>\n\n<!--section=faq-->\n<dl>\n<dt id=\"why%20must%20i%20configure%20an%20account%20id%20or%20complete%20url%3F\"><h3>Why must I configure an Account ID or complete URL?<\/h3><\/dt>\n<dd><p>The REST API URL contains the Cloudflare account. A complete URL is also supported for a compatible\ngateway route or custom domain.<\/p><\/dd>\n<dt id=\"why%20are%20models%20entered%20manually%3F\"><h3>Why are models entered manually?<\/h3><\/dt>\n<dd><p>The current REST chat endpoint does not expose the usual OpenAI <code>\/models<\/code> route at the configured base\nURL. The plugin therefore uses the model IDs entered in its settings.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.1<\/h4>\n\n<ul>\n<li>Document the Cloudflare AI Gateway external service in the readme, including the data that is sent\nand the terms of use and privacy policy links.<\/li>\n<li>Remove the load_plugin_textdomain() call, which WordPress.org no longer requires.<\/li>\n<li>Add direct file access protection to every plugin PHP file.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release with Account ID and complete endpoint settings, model configuration, and an OpenAI\nChat Completions provider.<\/li>\n<\/ul>","raw_excerpt":"Cloudflare AI Gateway provider for the WordPress AI Client.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/377209","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=377209"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/bestony"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=377209"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=377209"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=377209"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=377209"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=377209"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=377209"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}