diff --git a/modules/ROOT/examples/live-demos/tinymceai/index.js b/modules/ROOT/examples/live-demos/tinymceai/index.js
new file mode 100644
index 0000000000..e979506efb
--- /dev/null
+++ b/modules/ROOT/examples/live-demos/tinymceai/index.js
@@ -0,0 +1,6 @@
+tinymce.init({
+ selector: 'textarea#tinymceai',
+ height: '800px',
+ plugins: ["tinymceai", "advlist", "anchor", "autolink", "charmap", "code"],
+ toolbar: "undo redo | tinymceai | styles | bold italic underline strikethrough | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | link image"
+});
diff --git a/modules/ROOT/nav.adoc b/modules/ROOT/nav.adoc
index 35fd12a1c3..7fe983a16e 100644
--- a/modules/ROOT/nav.adoc
+++ b/modules/ROOT/nav.adoc
@@ -260,6 +260,24 @@
**** xref:ai-bedrock.adoc[Amazon Bedrock integration guide]
**** xref:ai-gemini.adoc[Google Gemini integration guide]
**** xref:ai-proxy.adoc[AI proxy server reference guide]
+*** TinyMCE AI
+**** xref:tinymceai-introduction.adoc[Introduction]
+**** xref:tinymceai-chat.adoc[Chat]
+**** xref:tinymceai-review-plugin.adoc[Review]
+**** xref:tinymceai-actions-plugin.adoc[Actions]
+**** xref:tinymceai-models.adoc[AI Models]
+**** xref:tinymceai-limits.adoc[Limits]
+**** xref:tinymceai-integration-options.adoc[Integration Options]
+***** xref:tinymceai.adoc[Plugin quick start]
+***** REST API
+****** xref:tinymceai-api-overview.adoc[API Overview]
+****** xref:tinymceai-api-quick-start.adoc[API quick start]
+****** xref:tinymceai-streaming.adoc[Streaming]
+**** xref:tinymceai-jwt-authentication-intro.adoc[JWT Authentication]
+***** xref:tinymceai-permissions.adoc[Permissions]
+***** Guides
+****** xref:tinymceai-with-jwt-authentication-nodejs.adoc[JWT authentication (Node.js)]
+****** xref:tinymceai-with-jwt-authentication-php.adoc[JWT authentication (PHP)]
*** xref:casechange.adoc[Case Change]
*** xref:checklist.adoc[Checklist]
*** Comments
diff --git a/modules/ROOT/pages/available-menu-items.adoc b/modules/ROOT/pages/available-menu-items.adoc
index 65d7edf122..19e1c3d121 100644
--- a/modules/ROOT/pages/available-menu-items.adoc
+++ b/modules/ROOT/pages/available-menu-items.adoc
@@ -58,6 +58,12 @@ include::partial$misc/plugin-menu-item-id-boilerplate.adoc[]
:plugincode: ai
include::partial$misc/plugin-menu-item-id-boilerplate.adoc[]
+:plugincategory: premium
+:pluginname: TinyMCE AI
+:plugincode: tinymceai
+:pluginpage: tinymceai.adoc
+include::partial$misc/plugin-menu-item-id-boilerplate.adoc[]
+
:plugincategory: opensource
:pluginname: Anchor
:plugincode: anchor
diff --git a/modules/ROOT/pages/available-toolbar-buttons.adoc b/modules/ROOT/pages/available-toolbar-buttons.adoc
index 065e97ac95..fa62ebcb2c 100644
--- a/modules/ROOT/pages/available-toolbar-buttons.adoc
+++ b/modules/ROOT/pages/available-toolbar-buttons.adoc
@@ -35,6 +35,12 @@ include::partial$misc/plugin-toolbar-button-id-boilerplate.adoc[]
:plugincode: ai
include::partial$misc/plugin-toolbar-button-id-boilerplate.adoc[]
+:plugincategory: premium
+:pluginname: TinyMCE AI
+:plugincode: tinymceai
+:pluginpage: tinymceai.adoc
+include::partial$misc/plugin-toolbar-button-id-boilerplate.adoc[]
+
:plugincategory: premium
:pluginname: Enhanced Code Editor
:plugincode: advcode
diff --git a/modules/ROOT/pages/editor-command-identifiers.adoc b/modules/ROOT/pages/editor-command-identifiers.adoc
index 134b326630..87ce38f82d 100644
--- a/modules/ROOT/pages/editor-command-identifiers.adoc
+++ b/modules/ROOT/pages/editor-command-identifiers.adoc
@@ -215,6 +215,7 @@ Commands are available for the following plugins:
* xref:advancedlists[Advanced Lists]
* xref:Enhanced Tables[Enhanced Tables]
* xref:anchor[Anchor]
+* xref:tinymceai[TinyMCE AI]
* xref:autoresize[Autoresize]
* xref:casechange[Case Change]
* xref:charactermap[Character Map]
@@ -525,6 +526,13 @@ The following commands require the xref:tableofcontents.adoc[Table of Contents (
include::partial$commands/tableofcontents-cmds.adoc[leveloffset=+3]
+[[tinymceai]]
+==== TinyMCE AI
+
+The following commands require the xref:tinymceai.adoc[TinyMCE AI (`+tinymceai+`)] plugin.
+
+include::partial$commands/tinymceai-cmds.adoc[leveloffset=+3]
+
[[advtemplate]]
==== Templates
diff --git a/modules/ROOT/pages/events.adoc b/modules/ROOT/pages/events.adoc
index 22f2175abb..82eb741ce1 100644
--- a/modules/ROOT/pages/events.adoc
+++ b/modules/ROOT/pages/events.adoc
@@ -245,6 +245,7 @@ The following plugins provide events.
* xref:a11ychecker-events[Accessibility Checker events]
* xref:autosave-events[Autosave events]
* xref:character-map-events[Character Map events]
+* xref:tinymceai-events[TinyMCE AI events]
* xref:comments-events[Comments events]
* xref:format-painter-events[Format Painter events]
* xref:fullscreen-events[Fullscreen events]
@@ -292,6 +293,13 @@ The following event is provided by the xref:charmap.adoc[Character Map plugin].
|InsertCustomChar |`+{ chr: string }+` |Fired before a special character is inserted into the editor.
|===
+[[tinymceai-events]]
+=== TinyMCE AI events
+
+The following events are provided by the xref:tinymceai.adoc[TinyMCE AI plugin].
+
+include::partial$events/tinymceai-events.adoc[]
+
[[comments-events]]
=== Comments events
diff --git a/modules/ROOT/pages/tinymceai-actions-plugin.adoc b/modules/ROOT/pages/tinymceai-actions-plugin.adoc
new file mode 100644
index 0000000000..7093cccb26
--- /dev/null
+++ b/modules/ROOT/pages/tinymceai-actions-plugin.adoc
@@ -0,0 +1,263 @@
+= TinyMCE AI Quick Actions
+
+:navtitle: Quick Actions
+:description: quick actions feature for TinyMCE AI plugin
+:description_short: quick actions feature
+:keywords: AI, quick actions, actions, tinymceai
+
+Quick actions streamline routine content transformations by offering one-click AI-powered suggestions directly within the editor. This feature enhances speed, relevance, and usability, particularly for repeatable or simple tasks. The feature comes with an easy-to-use window interface but can also act as a conversation starter with the xref:tinymceai-chat.adoc[Chat].
+
+The Quick Actions feature is available as a plugin UI and via the xref:tinymceai-actions-plugin.adoc#actions-api[Actions API]. This page covers both:
+
+* Plugin sections describe user-facing features and configuration.
+* API sections cover REST API access (starting at xref:tinymceai-actions-plugin.adoc#actions-api[Actions API]).
+
+[[demo]]
+== Demo
+
+liveDemo::tinymceai[]
+
+Actions are fast, stateless operations that transform content directly. Unlike Reviews that provide suggestions, Actions immediately modify content based on the selected operation.
+
+**When to use Actions vs Reviews:** Use Actions when transforming a selection or small section of text (fix grammar, translate, adjust tone). Use Reviews when analyzing entire documents for quality improvements and getting suggestions without automatically changing the content.
+
+image::https://placehold.net/default.png[TinyMCE AI quick actions showing AI-powered suggestions and Q&A functionality]
+
+[[integration]]
+== Integration
+
+To start using the Quick Actions feature, first load the TinyMCE AI plugin in the editor configuration. See xref:tinymceai.adoc[Plugin Reference] for installation and enabling AI features.
+
+Then, add the menu that opens the list of Quick Actions (`tinymceai-actions`) image:https://placehold.net/default.png[Quick Actions icon,24px] to the main toolbar and/or context toolbar (selection toolbar) configurations.
+
+[NOTE]
+====
+AI features are added to the selection toolbar by default when the plugin is enabled. The `tinymceai_context_toolbar` configuration option controls which AI features appear in the selection toolbar. Configure it to show specific features, for example: `tinymceai_context_toolbar: 'showai aiquickactions aireview'` or `tinymceai_context_toolbar: 'showai aireview'` to show only certain features.
+====
+
+To learn more about toolbar configuration, refer to the xref:toolbar-configuration-options.adoc[toolbar configuration] guide.
+
+image::https://placehold.net/default.png[TinyMCE AI Quick Actions dropdown in the toolbar]
+
+Finally, individual Quick Actions can also be added to the toolbar as shortcuts for even easier access. For example, add the `tinymceai-improve-writing` image:https://placehold.net/default.png[Improve Writing icon,24px] button, or the `tinymceai-explain` image:https://placehold.net/default.png[Explain icon,24px] button (find it in the demo above). Whole categories can be added to the toolbar, too. xref:tinymceai-actions-plugin.adoc#default-actions[Learn more about available actions].
+
+The final example configuration looks as follows:
+
+[source,js]
+----
+tinymce.init({
+ selector: '#editor',
+ plugins: 'tinymceai',
+ tinymceai_token_provider: function() {
+ return fetch('/api/token').then(response => response.text());
+ },
+
+ // Adding Quick Actions to the main editor toolbar.
+ toolbar: 'undo redo showai aiquickactions aireview | styles | bold italic underline strikethrough | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | link image',
+
+ // Adding Quick Actions to the context toolbar (selection toolbar). Since some of the actions are selection-sensitive,
+ // accessing them might be easier for users using this kind of toolbar.
+ tinymceai_context_toolbar: 'showai aiquickactions aireview',
+
+ // Configure the main Quick Actions menu
+ tinymceai_quickactions_menu: [
+ 'tinymceai-chat-commands',
+ 'tinymceai-improve-writing',
+ 'tinymceai-continue',
+ 'tinymceai-fix-grammar',
+ 'tinymceai-adjust-length',
+ 'tinymceai-change-tone',
+ 'tinymceai-translate'
+ ],
+
+ // Configure a sub-menu (e.g., chat commands)
+ tinymceai_chat_commands_menu: [
+ 'tinymceai-explain',
+ 'tinymceai-summarize',
+ 'tinymceai-highlight-key-points'
+ ],
+
+ tinymceai_sidebar_type: 'static'
+});
+----
+
+[[types-of-actions]]
+== Types of actions
+
+There are two types of actions available in the quick actions feature:
+
+* Chat actions, such as "Explain" or "Summarize", open the xref:tinymceai-chat.adoc[Chat] interface with the selected text added as context and automatically start the conversation with a pre-filled prompt.
+
+* Preview actions, such as "Continue writing", "Make shorter", "Improve writing", or "Fix grammar", display the AI response in a preview interface where users can review and accept or reject the suggested changes.
+
+The behavior of each action can be defined when xref:tinymceai-actions-plugin.adoc#custom-actions[creating custom ones].
+
+[[default-actions]]
+== Default Actions
+
+By default, the Quick Actions feature includes several built-in actions that speed up the content editing process. All Quick Actions can be accessed through the menu button image:https://placehold.net/default.png[Quick Actions icon,24px] (`tinymceai-actions`) but also individually when handpicked by the integrator in the xref:toolbar-configuration-options.adoc[editor toolbar configuration]. Whole action categories can be added to the toolbar too.
+
+Keep in mind that xref:tinymceai-actions-plugin.adoc#custom-actions[custom actions] can be added to the list and xref:tinymceai-actions-plugin.adoc#removing-default-actions[defaults can be removed].
+
+Here's the full list of available actions:
+
+* **"Chat commands"** category (`'chat-commands'`)
+ ** `'explain'`
+ ** `'summarize'`
+ ** `'highlight-key-points'`
+* `'improve-writing'`
+* `'continue'`
+* `'fix-grammar'`
+* **"Adjust length"** category (`'adjust-length'`)
+ ** `'make-shorter'`
+ ** `'make-longer'`
+* **"Change tone"** category (`'change-tone'`)
+ ** `'make-tone-casual'`
+ ** `'make-tone-direct'`
+ ** `'make-tone-friendly'`
+ ** `'make-tone-confident'`
+ ** `'make-tone-professional'`
+* **"Translate"** category (`'translate'`)
+ ** `'translate-to-english'`
+ ** `'translate-to-chinese'`
+ ** `'translate-to-french'`
+ ** `'translate-to-german'`
+ ** `'translate-to-italian'`
+ ** `'translate-to-portuguese'`
+ ** `'translate-to-russian'`
+
+[[custom-actions]]
+== Custom Actions
+
+The `tinymceai_custom_commands` configuration property allows adding new commands to the Quick actions feature. The items can be type `action` (a quick action that goes straight to the preview rendering) or type `chat` (opens the chat interface). The `displayedPrompt` is used in the menu items, while the `prompt` is what is actually sent to the AI. The `model` is required for `action` type commands. Learn more about xref:tinymceai-actions-plugin.adoc#types-of-actions[types of actions].
+
+[source,js]
+----
+tinymce.init({
+ selector: '#editor',
+ plugins: 'tinymceai',
+ toolbar: 'tinymceai-actions',
+ tinymceai_token_provider: function() {
+ return fetch('/api/token').then(response => response.text());
+ },
+ tinymceai_custom_commands: [
+ {
+ displayedPrompt: 'Add a quote from a famous person',
+ prompt: 'Add a quote from a known person, which would make sense in the context of the selected text.',
+ type: 'action',
+ model: 'gemini-2-5-flash'
+ },
+ {
+ displayedPrompt: 'Summarize in 5 bullet points',
+ prompt: 'Summarize the selected text in 5 bullet points.',
+ type: 'chat'
+ },
+ {
+ displayedPrompt: 'Rewrite adding more sarcasm',
+ prompt: 'Rewrite using a sarcastic tone.',
+ type: 'action',
+ model: 'gemini-2-5-flash'
+ }
+ ]
+});
+----
+
+[[configuring-quick-actions-menu]]
+== Configuring Quick Actions menu
+
+Which actions appear in the Quick Actions menu can be configured by specifying the list of actions to include. The `tinymceai_quickactions_menu` configuration option controls the main menu items.
+
+Sub-menus have their own configuration options:
+* `tinymceai_chat_commands_menu` - Controls items in the "Chat commands" sub-menu
+* `tinymceai_adjust_length_menu` - Controls items in the "Adjust length" sub-menu
+* `tinymceai_change_tone_menu` - Controls items in the "Change tone" sub-menu
+* `tinymceai_translate_menu` - Controls items in the "Translate" sub-menu
+
+[source,js]
+----
+tinymce.init({
+ selector: '#editor',
+ plugins: 'tinymceai',
+ toolbar: 'tinymceai-actions',
+ tinymceai_token_provider: function() {
+ return fetch('/api/token').then(response => response.text());
+ },
+ // Configure the main Quick Actions menu
+ tinymceai_quickactions_menu: [
+ 'tinymceai-chat-commands',
+ 'tinymceai-improve-writing',
+ 'tinymceai-continue',
+ 'tinymceai-fix-grammar',
+ 'tinymceai-adjust-length',
+ 'tinymceai-change-tone',
+ 'tinymceai-translate',
+ 'tinymceai-custom-commands'
+ ],
+ // Configure a sub-menu (e.g., chat commands)
+ tinymceai_chat_commands_menu: [
+ 'tinymceai-explain',
+ 'tinymceai-summarize',
+ 'tinymceai-highlight-key-points'
+ ]
+});
+----
+
+[[actions-api]]
+== Actions API
+
+The Quick Actions plugin feature is built on top of the Actions API, which provides REST API access to action functionality. Actions are fast, stateless operations that transform content directly. Unlike Reviews that provide suggestions, Actions immediately modify your content based on the selected operation.
+
+**When to use Actions vs Reviews:** Use Actions when you need to transform specific text content (fix grammar, translate, adjust tone). Use Reviews when you need to analyze entire documents for quality improvements and get suggestions without automatically changing the content.
+
+Unlike conversations, actions do not remember previous interactions. Each action is independent and focused on a single task. Actions use streaming output with Server-Sent Events for real-time feedback as results are generated.
+
+[[actions-system-actions-api]]
+=== System Actions
+
+TinyMCE AI provides built-in system actions for common content transformations via the API. These correspond to the default actions available in the plugin UI:
+
+* **Fix Grammar** (`fix-grammar`) – Correct grammar, spelling, and punctuation errors. See https://tinymceai.api.tiny.cloud/docs#tag/Actions[Actions API] for the fix grammar endpoint.
+* **Improve Writing** (`improve-writing`) – Enhance clarity, word choice, and sentence structure. See https://tinymceai.api.tiny.cloud/docs#tag/Actions[Actions API] for the improve writing endpoint.
+* **Continue Writing** (`continue`) – Complete unfinished sentences, paragraphs, or entire documents. See https://tinymceai.api.tiny.cloud/docs#tag/Actions[Actions API] for the continue writing endpoint.
+* **Make Longer** (`make-longer`) – Expand content with more detail, examples, and explanations. See https://tinymceai.api.tiny.cloud/docs#tag/Actions[Actions API] for the make longer endpoint.
+* **Make Shorter** (`make-shorter`) – Condense lengthy text while keeping the essential information. See https://tinymceai.api.tiny.cloud/docs#tag/Actions[Actions API] for the make shorter endpoint.
+* **Adjust Tone** (`make-tone-*`) – Change writing style to casual, professional, friendly, or confident. See https://tinymceai.api.tiny.cloud/docs#tag/Actions[Actions API] for tone adjustment endpoints.
+* **Translate** (`translate-*`) – Convert content between languages with proper cultural context. See https://tinymceai.api.tiny.cloud/docs#tag/Actions[Actions API] for the translation endpoint.
+
+[[actions-custom-actions-api]]
+=== Custom Actions via API
+
+In addition to system actions, you can create custom actions tailored to your specific use cases via the API. Custom actions allow you to define specialized content transformations using your own prompts to control AI behavior.
+
+Unlike system actions that use predefined identifiers, custom actions use a unified endpoint where you define the transformation behavior through a prompt parameter. See https://tinymceai.api.tiny.cloud/docs#tag/Actions[Actions API] for the custom actions endpoint and implementation details.
+
+Custom actions require the `ai:actions:custom` permission in your JWT token.
+
+[[actions-streaming]]
+=== Streaming Responses
+
+Actions use Server-Sent Events (SSE) for real-time streaming results. See the xref:tinymceai-streaming.adoc[Streaming Responses guide] for detailed implementation information.
+
+[[actions-api-reference]]
+=== API Reference
+
+For complete endpoint documentation, request/response schemas, authentication details, and additional parameters, see:
+
+* **https://tinymceai.api.tiny.cloud/docs#tag/Actions[Actions API Reference]** – Full documentation for system and custom actions endpoints with interactive examples
+
+The REST API documentation includes examples for:
+
+* Grammar fix - see https://tinymceai.api.tiny.cloud/docs#tag/Actions[Actions API]
+* Writing improvement - see https://tinymceai.api.tiny.cloud/docs#tag/Actions[Actions API]
+* Content expansion (make longer) - see https://tinymceai.api.tiny.cloud/docs#tag/Actions[Actions API]
+* Content condensation (make shorter) - see https://tinymceai.api.tiny.cloud/docs#tag/Actions[Actions API]
+* Tone adjustment - see https://tinymceai.api.tiny.cloud/docs#tag/Actions[Actions API]
+* Translation - see https://tinymceai.api.tiny.cloud/docs#tag/Actions[Actions API]
+* Custom actions with custom prompts - see https://tinymceai.api.tiny.cloud/docs#tag/Actions[Actions API]
+* Streaming responses - see https://tinymceai.api.tiny.cloud/docs#tag/Actions[Actions API]
+
+[[related-features]]
+== Related Features
+
+* xref:tinymceai-chat.adoc[AI chat] – For interactive discussions with document analysis and context.
+* xref:tinymceai-review-plugin.adoc[AI review] – For content quality analysis and improvement suggestions.
diff --git a/modules/ROOT/pages/tinymceai-api-overview.adoc b/modules/ROOT/pages/tinymceai-api-overview.adoc
new file mode 100644
index 0000000000..ea84c8e588
--- /dev/null
+++ b/modules/ROOT/pages/tinymceai-api-overview.adoc
@@ -0,0 +1,41 @@
+= TinyMCE AI API Overview
+
+:navtitle: API Overview
+:description: Overview of TinyMCE AI service features and capabilities
+:description_short: API Overview
+:keywords: AI, API, AI service, overview, tinymceai
+
+TinyMCE AI integrates AI-assisted authoring with rich-text editing. Users can interact through Actions, Reviews, or Conversations that can use relevant context from multiple sources.
+
+[NOTE]
+====
+**API Reference**: The complete API documentation with all endpoints, parameters, request/response schemas, and interactive examples is available at link:https://tinymceai.api.tiny.cloud/docs[TinyMCE AI API Documentation]
+====
+
+[[getting-started]]
+== Getting Started
+
+New to TinyMCE AI? Kick your adventure off with the xref:tinymceai-api-quick-start.adoc[Quick Start] guide to set up your environment, generate access credentials, and make your first API call.
+
+[[tinymce-ai-features]]
+== TinyMCE AI features
+
+* xref:tinymceai-chat.adoc[**Chat**] – Interactive AI chats with history and persistent context.
+* xref:tinymceai-review-plugin.adoc[**Review**] – Content analysis and proofreading, optimized for larger content.
+* xref:tinymceai-actions-plugin.adoc[**Quick Actions**] – Fast, stateless operations for specific tasks.
+
+[[architecture]]
+== Architecture
+
+The following pages cover the system architecture.
+
+* xref:tinymceai-models.adoc[**Models**] – AI model selection, capabilities, and configuration.
+* xref:tinymceai-streaming.adoc[**Streaming**] – Real-time streaming of AI-generated responses.
+* xref:tinymceai-permissions.adoc[**Permissions**] – How to control user access to features.
+* xref:tinymceai-limits.adoc[**Limits**] – Rate limits, context size limits, and file restrictions.
+
+[[resources-and-support]]
+== Resources and Support
+
+* **API Documentation**: link:https://tinymceai.api.tiny.cloud/docs[Complete API reference for TinyMCE AI].
+* **Customer Support**: link:https://www.tiny.cloud/contact/[Contact us] to get help from our support team or speak with sales.
diff --git a/modules/ROOT/pages/tinymceai-api-quick-start.adoc b/modules/ROOT/pages/tinymceai-api-quick-start.adoc
new file mode 100644
index 0000000000..bc64cd4120
--- /dev/null
+++ b/modules/ROOT/pages/tinymceai-api-quick-start.adoc
@@ -0,0 +1,89 @@
+= TinyMCE AI API Quick Start
+
+:navtitle: API Quick Start
+:description: Quick start guide for TinyMCE AI service
+:description_short: API quick start guide
+:keywords: AI, quick start, API, AI service, tinymceai, setup
+
+The aim of this article is to get users up and running with the TinyMCE AI service.
+
+[TIP]
+====
+Sign up for the link:https://www.tiny.cloud/auth/signup/[TinyMCE Premium Features 14-day free trial] to test this feature first.
+
+The TinyMCE Premium Features free trial allows for testing SaaS services. If you are interested in on-premises solutions, please link:https://www.tiny.cloud/contact/[contact us].
+====
+
+== Getting Started
+
+To start using the TinyMCE AI service, follow the steps below:
+
+* Sign up for one of the link:https://www.tiny.cloud/pricing/[self-service plans], or link:https://www.tiny.cloud/contact/[contact us] to purchase the TinyMCE AI license.
+* Generate access credentials in the link:https://www.tiny.cloud/my-account/[Customer Portal].
+* Write a script that generates one-time tokens for authorizing end users of your application in TinyMCE Cloud Services (using access credentials created earlier).
+
+All steps are explained in details below.
+
+[[get-the-tinymce-ai-license]]
+== Get the TinyMCE AI license
+
+You can purchase TinyMCE AI as an add-on to selected tiers of our self-service plans. You can find details on our link:https://www.tiny.cloud/pricing/[pricing page].
+
+You can also link:https://www.tiny.cloud/contact/[contact us] directly if you would like to have a custom plan.
+
+For testing purposes, you can sign up for the link:https://www.tiny.cloud/auth/signup/[free trial].
+
+After signing up, you will receive access to the link:https://www.tiny.cloud/my-account/[customer dashboard (Customer Portal)].
+
+[[log-in-to-the-customer-portal]]
+== Log in to the Customer Portal
+
+Log in to the link:https://www.tiny.cloud/my-account/[Customer Portal] and navigate to link:https://www.tiny.cloud/my-account/jwt/["JWT Keys"].
+
+image::https://placehold.net/default.png[TinyMCE AI trial view]
+
+[[create-token-endpoint]]
+== Create token endpoint
+
+You now need to create a security token endpoint in your application. This endpoint securely authorizes end users of your application to use TinyMCE AI features based on their permissions and access rights.
+
+[[writing-your-own-token-endpoint]]
+=== Writing your own token endpoint
+
+To write your own security token endpoint, create access credentials for the selected environment by going to the "Access credentials" tab and clicking the "Create a new access key" button.
+
+Read more in the Creating access credentials section of the Environments management guide.
+
+[[cloud-region]]
+== Cloud region
+
+Cloud Services can reside in either US or EU region or in both. The region is set per subscription and cannot be changed for existing environments by the user. For Custom plan with multi-region, you can choose the region during environment creation. This topic is addressed in more detail in the Environment management guide.
+
+[[api-integration]]
+== API Integration
+
+All features are accessible through the API at `https://tinymceai.api.tiny.cloud` with JWT authentication.
+
+For an overview of all API features, see xref:tinymceai-api-overview.adoc[API Overview].
+
+For feature documentation and API access information, see:
+
+* xref:tinymceai-chat.adoc#conversations-api[Chat] – Interactive AI discussions and document analysis via the Conversations API.
+* xref:tinymceai-review-plugin.adoc#reviews-api[Review] – Content improvement and quality analysis via the Reviews API.
+* xref:tinymceai-actions-plugin.adoc#actions-api[Quick Actions] – Content transformation via the Actions API.
+* xref:tinymceai-streaming.adoc[Streaming] – Real-time AI interactions with code examples.
+
+link:https://tinymceai.api.tiny.cloud/docs[Complete API Documentation] – Full API reference with interactive examples for all endpoints
+
+[[next-steps]]
+== Next Steps
+
+After setting up your JWT endpoint, continue with:
+
+* xref:tinymceai-api-overview.adoc[API Overview] – Overview of all API features and capabilities.
+* xref:tinymceai-models.adoc[AI Models] – Choose the right model for your use case.
+* xref:tinymceai-permissions.adoc[Permissions] – Set up user access control for production.
+* xref:tinymceai-streaming.adoc[Streaming] – Learn how to handle real-time streaming responses.
+* xref:tinymceai-chat.adoc#conversations-api[Chat API] – Start with interactive AI discussions.
+* xref:tinymceai-review-plugin.adoc#reviews-api[Review API] – Add content improvement features.
+* xref:tinymceai-actions-plugin.adoc#actions-api[Quick Actions API] – Implement content transformation.
diff --git a/modules/ROOT/pages/tinymceai-chat.adoc b/modules/ROOT/pages/tinymceai-chat.adoc
new file mode 100644
index 0000000000..60c501acc3
--- /dev/null
+++ b/modules/ROOT/pages/tinymceai-chat.adoc
@@ -0,0 +1,245 @@
+= TinyMCE AI Chat
+
+:navtitle: Chat
+:description: AI Chat feature for TinyMCE AI plugin
+:description_short: AI Chat feature
+:keywords: AI, chat, conversations, tinymceai
+
+The TinyMCE AI Chat is a conversational AI that facilitates rich, multi-turn interactions between users and an AI Assistant for content creation and editing. It provides context setting, model selection, chat history, and capabilities for web search and reasoning.
+
+The Chat feature is available as a plugin UI and via the xref:tinymceai-chat.adoc#conversations-api[Conversations API]. This page covers both:
+
+* Plugin sections describe user-facing features and configuration.
+* API sections cover REST API access (starting at xref:tinymceai-chat.adoc#conversations-api[Conversations API]).
+
+[[using-chat]]
+== Using Chat
+
+image::https://placehold.net/default.png[TinyMCE AI Chat interface showing the conversational AI assistant]
+
+[[working-with-the-document]]
+=== Working with the document
+
+TinyMCE AI operates directly within the context of the document. Users can ask questions about specific sections, request a full-document proofreading, and more.
+
+By enabling xref:tinymceai-chat.adoc#web-search[Web search] or xref:tinymceai-chat.adoc#reasoning[Reasoning], the chat capabilities can be extended — allowing the chat to look up information online and tackle complex tasks step by step.
+
+[[making-changes-to-the-content]]
+=== Making changes to the content
+
+Users can chat with the AI and use it to introduce changes to the document. Ask it to _"Summarize the document"_, _"Turn this report into a one-page executive summary"_, or _"Suggest better section titles and subheadings"_. The AI will then propose a series of changes to the document that can be xref:tinymceai-chat.adoc#previewing-changes[reviewed] and xref:tinymceai-chat.adoc#applying-changes[accepted or discarded one by one]. **Copying and pasting chat transcripts is over; TinyMCE AI understands the content and edits hand in hand**.
+
+[[brainstorming]]
+=== Brainstorming
+
+The chat feature jump-starts the creative process. Begin with a blank document and ask the AI for ideas. Build content step by step by chatting and applying changes. Then review — or have the AI rewrite — the final draft for best results. All in one place.
+
+[[demo]]
+== Demo
+
+liveDemo::tinymceai[]
+
+[[integration]]
+== Integration
+
+To start using the Chat feature, first load the TinyMCE AI plugin in the editor configuration. The Chat button image:https://placehold.net/default.png[Chat icon,24px] will appear in the AI user interface along with the Chat history image:https://placehold.net/default.png[History icon,24px]. See xref:tinymceai.adoc[Plugin Reference] for installation and enabling AI features.
+
+[[available-models]]
+== Available models
+
+Users can select the desired AI model for their conversation from a dropdown at the bottom of the chat.
+
+image::https://placehold.net/default.png[TinyMCE AI Chat available models dropdown]
+
+Once selected, the AI model will persist for the duration of the conversation. To change the model, start a new conversation using a dedicated image:https://placehold.net/default.png[New chat icon,24px] button at the top-right corner of the chat panel.
+
+[[web-search]]
+=== Web search
+
+Web search in Chat allows it to access and retrieve real-time information from the internet. Instead of relying only on pre-trained knowledge, the model can search the web to find up-to-date facts, verify details, and provide more accurate, current answers.
+
+Some models use web search automatically, while others may require manual activation. Whether the "Enable web search" button image:https://placehold.net/default.png[Web search icon,24px] needs to be toggled depends on the model and sometimes even how the prompt is worded. For models that support it, use the toggle button to enable web search functionality.
+
+[[reasoning]]
+=== Reasoning
+
+Reasoning in Chat models turns on the ability to think through problems, draw logical conclusions, and make sense of complex information. It enables the model to analyze context, connect ideas, and produce well-structured, coherent answers beyond simple pattern matching.
+
+Some models use reasoning automatically, while others may require manual activation. Whether the "Enable reasoning" button image:https://placehold.net/default.png[Reasoning icon,24px] needs to be toggled depends on the model and sometimes even how the prompt is worded. For models that support it, use the toggle button to enable reasoning functionality.
+
+[[model-selection-configuration]]
+=== Configuration
+
+Model selection for AI chat can be configured using three separate configuration options:
+
+* `tinymceai_default_model`: Set the default model to use for AI chat.
+* `tinymceai_allow_model_selection`: Control whether users can select from available models (defaults to `true`).
+* `tinymceai_allowed_models`: Specify an array of allowed model IDs that users can select from.
+
+xref:tinymceai-models.adoc#supported-models-table[Learn more about available AI models].
+
+[source,js]
+----
+tinymce.init({
+ selector: '#editor',
+ plugins: 'tinymceai',
+ toolbar: 'tinymceai',
+ tinymceai_token_provider: function() {
+ return fetch('/api/token').then(response => response.text());
+ },
+ tinymceai_default_model: 'claude-3-5-haiku',
+ tinymceai_allow_model_selection: true,
+ tinymceai_allowed_models: ['gpt-4', 'claude-3-5-haiku']
+});
+----
+
+[[adding-context-to-conversations]]
+== Adding context to conversations
+
+The AI chat can work with the document and beyond. Use the "Add context" button image:https://placehold.net/default.png[Add context icon,24px] on the right of the prompt input, to add URLs, files, and external resources to the conversation.
+
+image::https://placehold.net/default.png[TinyMCE AI Chat add context user interface]
+
+Ask the AI about specific resources, for instance, _"Describe the attached image"_ or _"Summarize the key points from the attached Word document"_. The AI will analyze those resources and provide information that can be easily used in the document.
+
+External resources enable seamless integration of knowledge bases and other centralized data into AI chat conversations. Instead of uploading documents each time, they can be selected from a list and referenced during the conversation.
+
+[[context-configuration]]
+=== Configuration
+
+Built-in options for adding the current document, URLs, and files to the conversation context are always available to users. There is no configuration option to enable or disable these built-in options.
+
+To add custom external sources for users to select from, use the following configuration options:
+
+* `tinymceai_additional_sources_list`: A function that returns a promise resolving to an array of available external sources. This is typically used to fetch a list of resources from a database or external API.
+* `tinymceai_get_additional_source`: A function that retrieves the content of a specific source by ID. This is used for hooking into a repository of custom sources and fetching content on demand.
+
+[source,js]
+----
+tinymce.init({
+ selector: '#editor',
+ plugins: 'tinymceai',
+ toolbar: 'tinymceai',
+ tinymceai_token_provider: function() {
+ return fetch('/api/token').then(response => response.text());
+ },
+ // Function that returns a list of available external sources
+ tinymceai_additional_sources_list: async (query) => {
+ // Fetch sources from the database or API
+ const response = await fetch(`/api/sources?q=${query}`);
+ return response.json();
+ },
+ // Function to fetch the content of a specific source by ID
+ tinymceai_get_additional_source: async (id) => {
+ // Fetch the source content on demand
+ const response = await fetch(`/api/sources/${id}`);
+ return response.json();
+ }
+});
+----
+
+[[working-with-ai-generated-changes]]
+== Working with AI-generated changes
+
+When asking the AI for changes to the document, for instance, _"Bold key facts in the document"_, a series of proposed changes will be received. The changes are displayed directly in the document content, making it easy to see what will be modified.
+
+Toggle between showing and previewing the changes using a single toggle button. When enabled, the proposed changes are highlighted in the document with markers indicating additions (green), removals (red), and formatting changes (blue). Navigate through the changes and work with them one by one. As navigation occurs, the information window automatically follows the corresponding sections of the document.
+
+[[applying-changes]]
+=== Applying changes
+
+Clicking the "Apply" button in the AI balloon applies the change proposed by the AI to the document.
+
+image::https://placehold.net/default.png[TinyMCE AI Chat apply changes]
+
+Click the "Apply all" button in chat to apply all AI suggestions at once.
+
+image::https://placehold.net/default.png[TinyMCE AI Chat apply all changes]
+
+[[rejecting-suggestions]]
+=== Rejecting suggestions
+
+Click the "Delete" button image:https://placehold.net/default.png[Delete icon,24px] to reject AI suggestions that are not wanted before applying the remaining ones.
+
+image::https://placehold.net/default.png[TinyMCE AI Chat reject button]
+
+
+[[chat-history]]
+== Chat history
+
+All past conversations appear in the Chat history. Click the button image:https://placehold.net/default.png[Chat history icon,24px] to open the list, where conversations can be reopened, renamed, or deleted.
+
+Conversations are grouped by date to help navigate the project easily. Conversations can be filtered by name using the search field at the top of the user interface.
+
+image::https://placehold.net/default.png[AI Chat history]
+
+[NOTE]
+====
+Any conversation from the chat history can be continued as long as the AI model used for that conversation is xref:tinymceai-models.adoc#supported-models[still supported] by the feature. Click the conversation in the history to load it in the Chat interface.
+====
+
+[NOTE]
+====
+The ability to apply suggestions to the document or generate Suggested Edits from historical conversations may be restricted in some scenarios:
+
+After closing the browser and reopening AI chat, previous conversations will no longer interact with the document content. To continue working with a conversation, reopen it from the chat history.
+====
+
+[[conversations-api]]
+== Conversations API
+
+The Chat plugin feature is built on top of the Conversations API, which provides REST API access to conversation functionality. Conversations allow exchanging multiple messages with AI that maintains them in its context. Conversations can be extended by external context sources like websites or files, and have the ability to refer to editor content and suggest modifications.
+
+[[conversations-key-features]]
+=== Key Features
+
+Upload PDFs, Word docs, and images for the AI to read and understand. Ask questions about specific sections and get intelligent answers. The AI extracts text while preserving structure from PDFs, maintains formatting context from Word documents, parses web content from HTML files, and processes images with OCR and object recognition.
+
+Each conversation builds on previous messages, so the AI keeps track of the entire discussion and any files that have been shared. Documents, images, web links, and text can be mixed in one conversation, and the AI connects information across all formats.
+
+[[example-product-launch-workflow]]
+=== Example: Product Launch Workflow
+
+. **Upload product spec** → _"What are the key features for marketing?"_
+. **Add competitor analysis** → _"How do we compare to competitors?"_
+. **Reference blog post** → _"Write a press release using this blog post and our competitive advantages"_
+. **Include brand guidelines** → _"Match our brand voice and key messaging"_
+
+The AI remembers everything that has been shared and builds on it throughout the conversation.
+
+[[conversations-api-capabilities]]
+=== API Capabilities
+
+When using the Conversations API directly, you can configure advanced capabilities:
+
+* **Web Search** – Enable real-time web search to access current information during conversations. Configure via the `webSearch` capability in API requests. See https://tinymceai.api.tiny.cloud/docs#tag/Conversation-Web-Resources[Conversation Web Resources API] for endpoint details.
+* **Reasoning** – Enable step-by-step reasoning to see the AI's problem-solving process. Configure via the `reasoning` capability in API requests. See https://tinymceai.api.tiny.cloud/docs#tag/Conversation-Messages[Conversation Messages API] for endpoint details.
+
+[[conversations-streaming]]
+=== Streaming Responses
+
+Conversations use Server-Sent Events (SSE) for real-time streaming responses. See the xref:tinymceai-streaming.adoc[Streaming Responses guide] for detailed implementation information and code examples.
+
+[[conversations-api-reference]]
+=== API Reference
+
+For complete API documentation including endpoints, parameters, request/response schemas, and interactive examples, see:
+
+* **https://tinymceai.api.tiny.cloud/docs#tag/Conversations[REST API Conversations Documentation]** – Full documentation for conversations endpoints with interactive examples
+
+The REST API documentation includes examples for:
+
+* Creating conversations - see https://tinymceai.api.tiny.cloud/docs#tag/Conversations[Conversations API]
+* Uploading documents - see https://tinymceai.api.tiny.cloud/docs#tag/Conversation-Documents[Conversation Documents API]
+* Uploading files - see https://tinymceai.api.tiny.cloud/docs#tag/Conversation-Files[Conversation Files API]
+* Uploading web resources - see https://tinymceai.api.tiny.cloud/docs#tag/Conversation-Web-Resources[Conversation Web Resources API]
+* Sending messages with context - see https://tinymceai.api.tiny.cloud/docs#tag/Conversation-Messages[Conversation Messages API]
+* Configuring web search capabilities - see https://tinymceai.api.tiny.cloud/docs#tag/Conversation-Web-Resources[Conversation Web Resources API]
+* Configuring reasoning capabilities - see https://tinymceai.api.tiny.cloud/docs#tag/Conversation-Messages[Conversation Messages API]
+* Streaming responses - see https://tinymceai.api.tiny.cloud/docs#tag/Conversation-Messages[Conversation Messages API]
+
+[[related-features]]
+== Related Features
+
+* xref:tinymceai-review-plugin.adoc[AI review] – For content quality analysis and improvement suggestions.
+* xref:tinymceai-actions-plugin.adoc[Quick actions] – For fast, stateless content transformations.
diff --git a/modules/ROOT/pages/tinymceai-integration-options.adoc b/modules/ROOT/pages/tinymceai-integration-options.adoc
new file mode 100644
index 0000000000..244f726b26
--- /dev/null
+++ b/modules/ROOT/pages/tinymceai-integration-options.adoc
@@ -0,0 +1,25 @@
+= TinyMCE AI Integration Options
+
+:navtitle: Integration Options
+:description: Choose how to integrate TinyMCE AI with applications
+:description_short: Integration options for TinyMCE AI
+:keywords: AI, integration, plugin, API, AI service, tinymceai
+
+TinyMCE AI can be integrated with applications through two methods:
+
+[cols=2*a]
+|===
+
+|
+[.lead]
+xref:tinymceai.adoc[**Plugin Quick Start**]
+
+Integrate AI features directly into the TinyMCE editor interface. Works with CDN or self-hosted TinyMCE installations. The fastest way to add AI capabilities to the editor.
+
+|
+[.lead]
+xref:tinymceai-api-overview.adoc[**AI service**]
+
+Use the AI service API to build custom integrations and workflows. Perfect for server-side processing, custom UI implementations, and advanced use cases. Start with the xref:tinymceai-api-quick-start.adoc[API Quick Start] guide.
+
+|===
diff --git a/modules/ROOT/pages/tinymceai-introduction.adoc b/modules/ROOT/pages/tinymceai-introduction.adoc
new file mode 100644
index 0000000000..24c7448800
--- /dev/null
+++ b/modules/ROOT/pages/tinymceai-introduction.adoc
@@ -0,0 +1,79 @@
+= TinyMCE AI Introduction
+
+:navtitle: Introduction
+:description: Introduction to TinyMCE AI features and capabilities
+:description_short: TinyMCE AI introduction
+:keywords: AI, introduction, tinymceai
+
+By integrating AI writing assistance directly into the editing experience, TinyMCE AI empowers authors with real-time AI writing support, streamlines content creation, and enhances editorial workflows across a wide range of use cases – from productivity boosts and proof-reading to content quality and consistency.
+
+[[demo]]
+== Demo
+
+liveDemo::tinymceai[]
+
+[[what-is-tinymce-ai]]
+== What is TinyMCE AI
+
+TinyMCE AI is an AI-powered writing assistant that integrates directly into the rich-text editor, {productname}, providing instant text rewriting, summarization, correction, and contextual chat help based on internal style guides. The platform includes automated review tools and enterprise-ready functionality that plugs into existing systems without requiring custom infrastructure.
+
+Teams can implement a full suite of AI writing tools in weeks rather than months, delivering streamlined, compliant content workflows that maintain brand consistency and integrate seamlessly with existing document management systems.
+
+The core components of TinyMCE AI are:
+
+* **xref:tinymceai.adoc[{productname}]**: A modern rich text editor with dozens of features that improve writing workflows, including collaboration.
+* **xref:tinymceai-api-overview.adoc[AI service]**: A state-of-the-art backend AI engine that incorporates multiple models and delivers high-quality content. Currently available in Cloud setup. See xref:tinymceai-introduction.adoc#on-premises-deployment[On-Premises Deployment] for deployment options.
+
+[[features]]
+== TinyMCE AI features
+
+There are three main features of TinyMCE AI. All features can be tested using the free trial.
+
+* xref:tinymceai-chat.adoc[**Chat**] – Interactive AI chats with history and persistent context.
+* xref:tinymceai-review-plugin.adoc[**Review**] – Content analysis and proofreading, optimized for larger content.
+* xref:tinymceai-actions-plugin.adoc[**Actions**] – Fast, stateless operations for specific tasks.
+
+[[integration-options]]
+== Integration Options
+
+TinyMCE AI can be integrated with applications through two methods. See xref:tinymceai-integration-options.adoc[Integration Options] for details.
+
+[[permissions]]
+== Permissions
+
+Developers can control access to AI features, models, and capabilities based on user roles, subscription tiers, and organizational requirements. Learn more about the xref:tinymceai-permissions.adoc[permissions system].
+
+[[privacy-and-data-handling]]
+== Privacy and data handling
+
+[[regional-data-storage]]
+=== Regional Data Storage
+
+All data stored by TinyMCE AI follows the region settings of your TinyMCE Cloud Services environment, ensuring compliance with data residency requirements and optimal performance for your geographic location.
+
+[IMPORTANT]
+====
+Data sent to LLM providers for processing is currently processed in the US region, regardless of your Cloud Services environment region.
+====
+
+[[data-retention-policy]]
+=== Data Retention Policy
+
+Conversation data is automatically deleted after 12 months of inactivity, including:
+
+* all conversation messages and history,
+* attached documents, files, and web resources,
+* conversation metadata and settings.
+
+[[security]]
+=== Security
+
+All data is encrypted in transit and at rest with end-to-end encryption. Conversations and attachments are stored in secure cloud infrastructure with fine-grained access control and comprehensive permission systems. Audit Logs are available through our Customer Portal and the API.
+
+[[on-premises-deployment]]
+== On-Premises Deployment
+
+[NOTE]
+====
+On-premises deployment is currently in development. Follow TinyMCE social accounts and our newsletter for updates.
+====
diff --git a/modules/ROOT/pages/tinymceai-jwt-authentication-intro.adoc b/modules/ROOT/pages/tinymceai-jwt-authentication-intro.adoc
new file mode 100644
index 0000000000..4b6abca247
--- /dev/null
+++ b/modules/ROOT/pages/tinymceai-jwt-authentication-intro.adoc
@@ -0,0 +1,252 @@
+= TinyMCE AI JWT Authentication
+
+:navtitle: JWT Authentication
+:description: JWT authentication requirements and permissions for TinyMCE AI
+:description_short: JWT Authentication
+:keywords: AI, JWT, authentication, permissions, tinymceai
+:pluginname: TinyMCE AI
+
+{pluginname} requires JWT (JSON Web Token) authentication when using the Tiny Cloud service. JWT authentication provides secure, user-specific access to {pluginname} features. Each JWT token contains claims that identify the user and specify which AI features they can access.
+
+{productname} recommends using the libraries listed on link:https://www.jwt.io/libraries[jwt.io/libraries] to create JWT tokens. These libraries support the algorithms required by {pluginname}. For details on supported algorithms, see xref:#supported-algorithms[Supported Algorithms].
+
+[[token-endpoint-overview]]
+== Token Endpoint Overview
+
+To connect {productname} with {pluginname}, a token endpoint must be created. This guide outlines the principles required to create it.
+
+[[how-tinymce-ai-uses-tokens]]
+== How {pluginname} Uses Tokens
+
+To authenticate users, {pluginname} uses tokens. The purpose of tokens is to inform the AI service that the user has access to AI features and which API key the user should connect to. The authenticity of tokens is provided by a digital signature.
+
+*The token endpoint*: is where {productname} makes a request to get the token. It is required to return the token only if the user proves their identity. It should be placed inside the system, not exposed as a public endpoint without proper authentication.
+
+The following diagram shows how {pluginname} uses tokens:
+
+image::JWT-flow.svg[JSON Web Token Call Flow,title="JSON Web Token Call Flow"]
+
+[[jwt-specification]]
+== The JSON Web Tokens Specification
+
+{pluginname} tokens are represented as JSON Web Tokens (JWT). JWT is an open link:https://datatracker.ietf.org/doc/html/rfc7519[standard] (RFC 7519) for transmitting digitally signed information. Using it ensures that the data comes from a trusted source and has not been tampered with.
+
+A JWT consists of three parts separated by dots `.`
+
+* **Header**: Contains metadata about the token, including the signing algorithm
+* **Payload**: Contains the claims (user information, permissions, etc.)
+* **Signature**: Used to verify the token's authenticity
+
+[source,json]
+----
+{header}.{payload}.{signature}
+----
+
+.Example:
+[source,json]
+----
+eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJ1c2VyLTQ4NzI5IiwibmFtZSI6Ikplc3NpY2EgV2lsbGlhbXMiLCJpYXQiOjE3Mjg0NzM2NDJ9.kX9mP2qL8vN4rT7wY3zA5bC6dE1fG2hI3jK4lM5nO6pQ7rS8tU9vW0xY1zA2b
+----
+
+[[jwt-header]]
+=== Header
+
+The JWT header identifies the token type and specifies the cryptographic algorithm used to sign the token. For {pluginname}, the header must be a JSON object containing:
+
+* `alg` – The signing algorithm used to create the token signature. See xref:#supported-algorithms[Supported Algorithms] for the list of supported algorithms. {companyname} recommends using `RS256`.
+* `typ` – The token type identifier, which must always be `JWT`
+
+The header is Base64URL-encoded to form the first part of the JWT token.
+
+.Example header
+[source,json]
+----
+{
+ "alg": "RS256",
+ "typ": "JWT"
+}
+----
+
+[[jwt-payload]]
+=== Payload
+
+The JWT payload is a JSON object containing claims that identify the user, specify their AI permissions, and control token validity. The payload is Base64URL-encoded to form the second part of the JWT token.
+
+[[payload-properties]]
+==== Payload Properties
+
+The following properties **must** be included in the payload:
+
+* `aud` – The API key that has entitlements to use {pluginname}.
+* `sub` – The user ID. This should be a unique identifier for the user making the request. This identifier is used to lock down conversation history, AI-generated content, and other user-specific data to individual users, ensuring privacy and data isolation.
+* `iat` – "Issued at". Make sure that `iat` is present and contains a correct time stated in seconds. Some JWT implementations do not include it by default. Sometimes the system time may also be invalid, causing issues.
+* `exp` – Token expiration time. Identifies the expiration time after which the JWT will not be accepted. {pluginname} only accepts tokens no older than 24 hours. This field can be used to shorten the token validity time.
+* `auth` – The `auth.ai.permissions` array inside is required. This defines which AI features the user can access. See xref:#permissions[Permissions] below for details.
+
+The properties that are optional:
+
+* `user` – User information. Providing `name` and `email` is recommended for better user experience and debugging.
+
+[[example-token-payload]]
+==== Example Token Payload
+
+The example below presents a complete token payload with access to all AI features:
+
+[source,json]
+----
+{
+ "aud": "your-api-key",
+ "iat": 1511963669,
+ "exp": 1511967269,
+ "sub": "user-123",
+ "user": {
+ "email": "user@example.com",
+ "name": "John Doe"
+ },
+ "auth": {
+ "ai": {
+ "permissions": [
+ "ai:conversations:read",
+ "ai:conversations:write",
+ "ai:models:agent",
+ "ai:actions:system:*",
+ "ai:reviews:system:*"
+ ]
+ }
+ }
+}
+----
+
+[[permissions]]
+==== Permissions
+
+Permissions are specified in the `auth.ai.permissions` array within the JWT token and control which AI features, models, and capabilities users can access.
+
+For a complete list of available permissions, permission examples, and best practices, see xref:tinymceai-permissions.adoc[Permissions].
+
+For complete details on all required claims, including types, formats, and implementation examples, see:
+
+* xref:tinymceai-with-jwt-authentication-nodejs.adoc#required-jwt-claims-for-tinymce-ai[Node.js guide - Required JWT claims]
+* xref:tinymceai-with-jwt-authentication-php.adoc#required-jwt-claims-for-tinymce-ai[PHP guide - Required JWT claims]
+
+[[jwt-signature]]
+=== Signature
+
+The signature is created by encoding the header and payload using Base64URL, then signing them with the private key using the specified algorithm. The {pluginname} service verifies the signature using the corresponding public key stored in the {accountpage}.
+
+[[supported-algorithms]]
+=== Supported Algorithms
+
+{productname} does not support symmetrical encryption algorithms, such as `HS256`. {companyname} recommends using the `RS256` algorithm. The following algorithms are supported:
+
+* RS256
+* RS384
+* RS512
+* PS256
+* PS384
+* PS512
+
+For details on each of these algorithms, visit: link:https://tools.ietf.org/html/rfc7518#section-3[RFC 7518, JSON Web Algorithms (JWA) Section 3 - Cryptographic Algorithms for Digital Signatures and MACs].
+
+[[token-requests]]
+== Requests to the Token Endpoint
+
+The token for {pluginname} is requested by the {pluginname} plugin. The easiest way to configure this is to set the `tinymceai_token_provider` option to a function that fetches the token from the endpoint.
+
+The token endpoint will be requested:
+* At editor initialization
+* Periodically to refresh the token (typically every hour)
+
+[[simple-token-request]]
+=== Simple Usage
+
+[source,javascript]
+----
+tinymce.init({
+ selector: 'textarea',
+ plugins: 'tinymceai',
+ toolbar: 'showai aiquickactions aireview',
+ tinymceai_token_provider: () => {
+ return fetch('https://example.com/cs-token-endpoint', {
+ method: 'POST',
+ headers: { 'Content-Type': 'application/json' },
+ }).then(response => response.json());
+ },
+});
+----
+
+[TIP]
+====
+The editor will not be ready to use until the first token is obtained from the token endpoint. If an error occurs during the initial request, the editor will not start correctly.
+====
+
+For more advanced token request customization, see xref:tinymceai-with-jwt-authentication-nodejs.adoc#configure-tinymce[Configure TinyMCE] in the implementation guides.
+
+[[token-responses]]
+== Responses from the Token Endpoint
+
+The endpoint must respond with a JSON object containing a `token` property. The response format is:
+
+[source,json]
+----
+{
+ "token": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9..."
+}
+----
+
+The {pluginname} plugin extracts the token from the `token` property. Plain text string responses are no longer supported and will not work.
+
+[[quick-setup]]
+== Quick Setup
+
+To set up JWT authentication for {pluginname}:
+
+. Generate a public/private key pair and add the public key to the {accountpage} via link:{accountjwturl}[{accountpage} - JWT Keys].
+. Set up a JWT endpoint that generates tokens with the required claims.
+. Configure {productname} to use the JWT endpoint via the `tinymceai_token_provider` option.
+
+For step-by-step implementation instructions with complete code examples, see:
+
+* xref:tinymceai-with-jwt-authentication-nodejs.adoc[JWT authentication (Node.js)] – Complete Node.js implementation guide
+* xref:tinymceai-with-jwt-authentication-php.adoc[JWT authentication (PHP)] – Complete PHP implementation guide
+
+[[tools]]
+== Tools
+
+JWT tokens can be validated and debugged using the link:https://jwt.io/[jwt.io debugger].
+
+[[troubleshooting]]
+== Troubleshooting
+
+[[invalid-token-error]]
+=== Invalid token
+
+If an error message indicates an invalid token:
+
+* Verify that the token was created in accordance with the required claims and format
+* Ensure the API key in the `aud` claim is correct and valid
+* Verify that the token is signed with one of the xref:#supported-algorithms[supported algorithms]
+* Check that the public key in the {accountpage} matches the private key used to sign the token
+* Validate the token structure using the link:https://jwt.io/[jwt.io debugger]
+* Ensure the `iat` (issued at) timestamp is correct and not in the future
+* Verify that system time is accurate (time drift can cause token validation issues)
+
+[[insufficient-permissions-error]]
+=== Insufficient permissions
+
+If an error indicates insufficient permissions:
+
+* Verify that the token includes the `auth.ai.permissions` array with the required permissions
+* Check that the permissions match the AI features being accessed
+* Review the xref:tinymceai-permissions.adoc[Permissions] guide for the correct permission format
+* Ensure permissions are specified correctly (e.g., `ai:conversations:read`, `ai:conversations:write`)
+
+[[related-features]]
+== Related Features
+
+* xref:tinymceai-permissions.adoc[Permissions]: Complete permissions reference and examples.
+* xref:tinymceai-models.adoc[AI Models]: Model selection and capabilities.
+* xref:tinymceai-chat.adoc[Chat]: Interactive AI discussions.
+* xref:tinymceai-review-plugin.adoc[Review]: Content improvement.
+* xref:tinymceai-actions-plugin.adoc[Quick Actions]: Content transformation.
+* link:https://tinymceai.api.tiny.cloud/docs[API Documentation]: Complete API reference for {pluginname}.
diff --git a/modules/ROOT/pages/tinymceai-limits.adoc b/modules/ROOT/pages/tinymceai-limits.adoc
new file mode 100644
index 0000000000..da83067b32
--- /dev/null
+++ b/modules/ROOT/pages/tinymceai-limits.adoc
@@ -0,0 +1,53 @@
+= TinyMCE AI Limits
+
+:navtitle: Limits
+:description: Usage limits configuration for TinyMCE AI
+:description_short: Usage limits configuration
+:keywords: AI, limits, configuration, tinymceai
+
+Understand the limits that ensure fair usage, optimal performance, and cost control across all TinyMCE AI features.
+
+[[overview]]
+== Overview
+
+TinyMCE AI implements various limits to ensure fair usage, optimal performance, and cost control. These include rate limits for API requests, context limits for content size and processing, model-specific constraints, and file restrictions.
+
+[[rate-limits]]
+== Rate Limits
+
+Rate limits control the frequency of requests to prevent abuse and ensure service stability. These limits apply to both plugin usage and direct API calls, as the plugin uses the API under the hood. The service implements limits on requests, token usage, web search, and web scraping requests per minute. All rate limits are applied at both organization level (higher limits) and individual user level (lower limits) to ensure fair usage.
+
+NOTE: Specific rate limit values are subject to change and may vary based on the subscription tier. Contact support for current rate limit details for the environment.
+
+[[context-limits]]
+== Context Limits
+
+Context limits control how much content can be attached to conversations to ensure AI models can process all information effectively. These limits vary by model based on their specific capabilities and processing requirements.
+
+[[file-limits]]
+=== File Limits
+
+Files are limited to 7MB each (PDF, DOCX, PNG, JPEG, Markdown, HTML, Plain text). Up to 100 files can be uploaded per conversation with a total size limit of 30MB. PDF files are limited to 100 pages total across all PDFs in a conversation.
+
+[[model-specific-file-limits]]
+==== Model-specific file limits
+
+Anthropic and agent models may use files up to 5MB each.
+
+[[context-optimization-tips]]
+=== Context Optimization Tips
+
+Compress images and split large documents into smaller sections. Use text formats (TXT or MD) over PDF when possible for better processing. Attach only relevant files to conversations and provide document summaries for very large files.
+
+[[model-specific-limits]]
+== Model-Specific Limits
+
+Different AI models have varying capabilities and limitations that affect context processing. Each model has different context window sizes that determine how much content can be processed. Models have response timeouts, file processing timeouts, web resource timeouts, and streaming response limits. All models include content moderation for inappropriate content, safety checks, and moderation response time limits.
+
+[[next-steps]]
+== Next Steps
+
+* xref:tinymceai-models.adoc[Learn about AI Models] for model-specific limitations.
+* xref:tinymceai-permissions.adoc[Set up Permisssions] to control user access.
+* xref:tinymceai-chat.adoc[Explore Chat] for context management.
+* https://tinymceai.api.tiny.cloud/docs[API Documentation] – Complete API reference for TinyMCE AI.
diff --git a/modules/ROOT/pages/tinymceai-models.adoc b/modules/ROOT/pages/tinymceai-models.adoc
new file mode 100644
index 0000000000..013c30ba80
--- /dev/null
+++ b/modules/ROOT/pages/tinymceai-models.adoc
@@ -0,0 +1,312 @@
+= TinyMCE AI Models
+
+:navtitle: AI Models
+:description: AI model configuration for TinyMCE AI
+:description_short: AI model configuration
+:keywords: AI, models, configuration, tinymceai
+
+TinyMCE AI supports multiple AI models from different providers. Model selection and configuration can be done through the plugin UI or via the REST API. This page covers model capabilities, configuration options, and limitations that apply to both plugin and API usage.
+
+[[recommended-agent-models]]
+== Recommended: Agent Models
+
+The `agent-1` model automatically selects the best AI model for requests based on speed, quality, and cost. It's the recommended choice for most use cases as it optimizes performance and cost automatically.
+
+[[available-models]]
+== Available Models
+
+TinyMCE AI supports multiple AI models from different providers. Each model has unique capabilities, performance characteristics, and cost profiles. By default, the automatically selected model (`agent-1`) will be used for optimal cost and performance.
+
+[[supported-models-table]]
+=== Supported Models
+
+Here's a detailed list of available models with their capabilities:
+
+[cols="1,2,1,1,2"]
+|===
+|Model |Description |xref:tinymceai-chat.adoc#web-search[Web Search] |xref:tinymceai-chat.adoc#reasoning[Reasoning] |Configuration id
+
+|**Auto (default)**
+|Automatically selects best model for speed, quality, and cost.
+|Yes
+|Yes
+|`'auto'` (also `'agent-1'`, learn more about xref:tinymceai-models.adoc#model-compatibility-versions[compatibility versions])
+
+|**GPT-5.2**
+|OpenAI's flagship model for advanced reasoning, creativity, and complex tasks
+|Yes
+|Yes
+|`'gpt-5.2'`
+
+|**GPT-5.1**
+|OpenAI's flagship model for advanced reasoning, creativity, and complex tasks
+|Yes
+|Yes
+|`'gpt-5.1'`
+
+|**GPT-5**
+|OpenAI's flagship model for advanced reasoning, creativity, and complex tasks
+|Yes
+|Yes
+|`'gpt-5'`
+
+|**GPT-5 Mini**
+|A lightweight version of GPT-5 – faster, more cost-efficient
+|Yes
+|Yes
+|`'gpt-5-mini'`
+
+|**Claude 4.5 Haiku**
+|Cost-efficient model for quick interactions with improved reasoning
+|Yes
+|Yes
+|`'claude-4-5-haiku'`
+
+|**Claude 4.5 Sonnet**
+|Advanced model with improved creativity, reliability, and reasoning
+|Yes
+|Yes
+|`'claude-4-5-sonnet'`
+
+|**Gemini 3 Pro**
+|Google's advanced model for versatile problem-solving and research
+|Yes
+|Yes
+|`'gemini-3-pro'`
+
+|**Gemini 3 Flash**
+|Lightweight Gemini model for fast, cost-efficient interactions
+|Yes
+|Yes
+|`'gemini-3-flash'`
+
+|**Gemini 2.5 Flash**
+|Lightweight Gemini model for fast, cost-efficient interactions
+|Yes
+|Yes
+|`'gemini-2-5-flash'`
+
+|**GPT-4.1**
+|OpenAI's model for reliable reasoning, speed, and versatility
+|Yes
+|No
+|`'gpt-4.1'`
+
+|**GPT-4.1 Mini**
+|A lighter variant of GPT-4.1 that balances speed and cost while maintaining solid accuracy
+|Yes
+|No
+|`'gpt-4.1-mini'`
+|===
+
+[[limitations]]
+=== Limitations
+
+Model availability depends on the subscription tier and service compatibility version. Some models may have specific limitations or requirements.
+
+[[how-model-selection-works]]
+== How Model Selection Works
+
+The agent model (`agent-1`) automatically selects the best underlying model based on:
+
+* **Request complexity** – Simple queries use faster, cost-effective models
+* **Content size** – Larger content uses models with better context windows
+* **Required capabilities** – Web search and reasoning require compatible models
+* **Cost optimization** – Balances quality with cost efficiency
+
+[[model-configuration]]
+=== Model Configuration
+
+Models can be configured in two ways:
+
+* **Plugin Configuration** – Use `tinymceai_default_model`, `tinymceai_allow_model_selection`, and `tinymceai_allowed_models` options. See xref:tinymceai-chat.adoc#model-selection-configuration[Chat model configuration] for details.
+* **API Configuration** – Specify the model directly in API requests for more control. See xref:tinymceai-models.adoc#api-examples[API Examples] below.
+
+[[model-compatibility-versions]]
+== Model Compatibility Versions
+
+Models are organized by compatibility versions to ensure API stability. When new models are introduced or existing models are updated, they may be added to a new compatibility version.
+
+[[how-it-works]]
+=== How It Works
+
+Compatibility versions allow TinyMCE AI to introduce new models and capabilities without breaking existing integrations. Each version maintains a stable set of models and capabilities.
+
+[[checking-compatibility]]
+=== Checking Compatibility
+
+To see available models for your compatibility version:
+
+* **Via API** – Check the `/v1/models` endpoint. The API response includes model capabilities, limits, and availability.
+* **Via Plugin** – Available models are shown in the model selection dropdown when `tinymceai_allow_model_selection` is enabled.
+
+[[model-capabilities]]
+== Model Capabilities
+
+Different models support different capabilities. Check the model information via the API endpoint or the plugin's model selection UI to see which capabilities are available for each model.
+
+[[web-search]]
+=== Web Search
+
+Enable real-time web search to access current information during conversations. Not all models support web search. Check model capabilities to see which models support this feature.
+
+[[reasoning]]
+=== Reasoning
+
+Enable step-by-step reasoning to see the AI's problem-solving process. Some models have reasoning always enabled and cannot be turned off.
+
+**Always-on reasoning models:**
+
+* Reasoning is always active during inference.
+* Reasoning cannot be turned off via the API.
+
+To determine if a model has always-on reasoning, check the API response when listing models or refer to the model capabilities in the plugin UI. Models with mandatory reasoning will indicate this in their capability structure.
+
+NOTE: Please observe, that model names such as `gpt-5`, `claude-4-sonnet`, etc. are examples. Actual available models depend on the service's compatibility version. Use the `/v1/models` API endpoint or check the plugin's model selection dropdown to see current available models for your environment.
+
+[[web-scraping]]
+=== Web Scraping
+
+Extract and process content from web pages for analysis and summarization.
+
+[[model-limitations]]
+== Model Limitations
+
+[[file-processing-limits]]
+=== File Processing Limits
+
+Files are limited to 7MB each (PDF, DOCX, PNG, JPEG, Markdown, HTML, Plain text). Up to 100 files can be uploaded per conversation with a total size limit of 30MB. PDF files are limited to 100 pages total across all PDFs in a conversation.
+
+[[model-specific-file-limits]]
+==== Model-specific file limits
+
+Anthropic and agent models may use files up to 5MB each.
+
+[[content-moderation]]
+=== Content Moderation
+
+All models include moderation for inappropriate content, harmful instructions, personal information, copyrighted material, misinformation, sensitive topics, and security threats.
+
+[[model-descriptions]]
+=== Model Descriptions
+
+Model descriptions returned by the API are provided in English and may be updated over time to reflect model improvements or capability changes.
+
+[[translation-and-localization]]
+=== Translation and Localization
+
+NOTE: Backend translation handling for model descriptions is planned in a future release. Until then, use the approach described below.
+
+If the application requires translated model descriptions, maintain a translation map in the code keyed by `model.id`, with fallback to the English description from the API for unknown models. This allows new models to work immediately while translations are added at a custom pace.
+
+[[model-deprecation]]
+=== Model Deprecation
+
+Models scheduled for removal will include a `removal` field with an ISO 8601 date (e.g., `"removal": "2025-11-17T00:00:00.000Z"`). When a model is removed, API requests will fail with error code `MODEL_NOT_FOUND` and the models endpoint will stop returning that particular model.
+
+[[api-examples]]
+== API Examples
+
+The following examples show how to configure models when using the REST API directly. For plugin configuration, see xref:tinymceai-chat.adoc#model-selection-configuration[Chat model configuration].
+
+[[model-selection]]
+=== Model Selection
+
+[source,http]
+----
+POST /v1/conversations/my-conversation-123/messages
+Content-Type: application/json
+Authorization: Bearer