---
title: "AI-assisted text suggestions"
manual: "Accessibility Quality Gate"
version: "main"
permalink: "https://docs.typo3.org/permalink/priebera/typo3-a11y-quality-gate:configuration-ai@main"
source: "Configuration/AiSuggestions.rst"
rendered: "2026-09-17T16:05:02+00:00"
---

# AI-assisted text suggestions {#ai-assisted-text-suggestions}

AQG can propose alternative text, link text and iframe titles for selected
findings. The feature is optional, disabled by default, review-only and requires
an OpenAI API key that you provide yourself. It is configured on the
**AI** tab of the Settings view and requires an active licence.

## Principles {#principles}

-   **Bring your own key.** AQG does not proxy AI requests through the AQG
    service. Requests go from your TYPO3 installation directly to OpenAI with
    your own project key.
-   **Review only.** AQG never applies a suggestion automatically. An editor
    must review and explicitly accept every suggestion.
-   **Opt in.** Both the AI configuration and the individual suggestion types
    are switched off until an administrator enables them.
-   **No storage on the provider side.** Requests are sent with `store=false`.

## Configuring the API key {#configuring-the-api-key}

The key can be provided in two ways:

-   **Per site**

    Enter an OpenAI project key on the **AI** tab. The key is stored
    encrypted in `tx_a11y_ai_configuration` and only ever displayed as a
    masked hint. Encryption requires the PHP `sodium` extension.

-   **Globally**

    Set the environment variable `AQG_OPENAI_API_KEY`. It is used as a
    fallback when no site-specific key is configured. The tab shows that an
    environment key is active.

## Selecting and verifying a model {#selecting-and-verifying-a-model}

1.  Press **Refresh models**. AQG asks OpenAI which models the project
    key may use and filters them through the AQG compatibility registry. Models
    that are available to your project but not supported by AQG are listed
    separately and cannot be selected.
1.  Select a supported model.
1.  Press **Test connection**. AQG verifies the key, the selected model,
    the prompt version and the structured-output contract. Only a verified
    combination can be used for suggestions.

The tab shows the last test time, the last verification time and, on failure, a
machine-readable error code such as `insufficient_quota`,
`model_not_permitted` or `connection_rate_limited`.

## Which findings get suggestions {#which-findings-get-suggestions}

Alternative text suggestions are offered for FAL image findings:

-   `structured.file_reference_alt`
-   `structured.file_reference_alt_quality`

Link text and iframe title suggestions must be enabled separately with the
**Text suggestions** toggle (disabled by default). They are offered for:

-   `rte.non_descriptive_link`
-   `rte.empty_link`
-   `rendered.empty_link`
-   `rendered.iframe_missing_title`

Rules whose fix is a template or markup change, for example
`rendered.main_landmark_missing`, `rendered.duplicate_id` or
`rendered.html_lang_missing`, never receive AI suggestions.

## What is sent to the provider {#what-is-sent-to-the-provider}

The browser sends only a `findingId` to TYPO3. The extension resolves the
context server-side and sends the minimum required data to OpenAI:

-   for alternative text: the referenced image and the surrounding content
    context,
-   for link text and iframe titles: the identified element and its immediate
    context.

User content is always passed as content, never as instructions. Suggestions
that contain HTML, encoded HTML, raw URLs, multiline text, control characters or
generic link text are rejected before they are shown. When the model cannot
produce a safe suggestion, AQG reports that no suggestion is available instead
of guessing.

> [!IMPORTANT]
> Sending content to OpenAI is a transfer of data to a third-party processor.
> Check your own data protection requirements before enabling the feature, and
> do not enable it for sites whose content must not leave your infrastructure.
> See [Privacy and security](https://docs.typo3.org/permalink/priebera/typo3-a11y-quality-gate:privacy-security@main).
