Configuration Reference¶
All configuration lives under the sulu_ai_platform key. Configuring the base sulu_ai bundle directly is rejected — the platform bundle derives and prepends that configuration itself.
Full tree with defaults:
# config/packages/sulu_ai_platform.yaml
sulu_ai_platform:
base_uri: 'https://api.sulu.ai/v1/' # The base URI for the sulu.ai platform
api_key: ~ # REQUIRED — API key from your platform project settings
webhook:
secret: ~ # REQUIRED — generated by sulu:ai:register-webhook
image_loader:
allow_insecure_https: true # Disable TLS certificate verification when loading images
authorization: null # String ("Bearer <token>") or {type, value} — see below
locale_map: {} # Map Sulu locales to platform locales — see below
stores: {} # Named datastores exposed as Symfony AI stores
intelligent_search:
enabled: false # Enable intelligent search services, commands, and routes
identifier: null # Optional intelligent search UUID (default: project default)
example_ui:
enabled: false # Expose the demo UI at /ai-search
ip_rate_limit:
enabled: true # Per-IP rate limiting for the public search endpoint
limit: 10 # Allowed requests per interval and IP
interval: 60 # Interval in seconds
translator:
languages: {} # Enable/disable individual DeepL languages — see below
property_type_translation_properties: # Sub-properties of complex types to translate
link: ['title']
teaser_selection: ['items/*/title', 'items/*/description']
ingestion:
chunker: markdown # "markdown" (default), "section", or a service ID
chunker_options:
word_limit: 200 # Target max words per chunk (markdown chunker)
text_field_types: ['text_line', 'text_area'] # Plain-text property types processed by AI features
html_field_types: ['text_editor'] # HTML property types processed by AI features
api_key and base_uri¶
api_key is required and comes from your project settings on the sulu.ai platform. base_uri only needs to be changed for non-production platform environments.
webhook¶
The webhook secret authenticates configuration updates pushed by the sulu.ai platform (see Operations → Webhook). Generate it with:
php bin/console sulu:ai:register-webhook
The secret is displayed only once — store it immediately.
image_loader¶
Controls how the bundle fetches image binaries (used by the Media Metadata Generator and media-aware experts).
authorization accepts three forms:
# Direct string
image_loader:
authorization: 'Bearer %env(IMAGE_TOKEN)%'
# Basic auth
image_loader:
authorization:
type: 'basic_auth'
value: '%env(IMAGE_AUTH)%' # Format: username:password
# Bearer token
image_loader:
authorization:
type: 'bearer_token'
value: '%env(IMAGE_TOKEN)%'
Typical per-environment setup with Symfony's when@ syntax:
when@dev:
sulu_ai_platform:
image_loader:
allow_insecure_https: true # *.wip domains, self-signed certificates
when@stage:
sulu_ai_platform:
image_loader:
authorization:
type: 'basic_auth'
value: '%env(STAGING_IMAGE_AUTH)%'
locale_map¶
Maps Sulu locale codes to platform locale codes, with an optional description that gives the AI language context during generation (not used for translations):
locale_map:
de_ch:
locale: de
description: "German for Switzerland (formal, no dialect)"
de_at:
locale: de
en_us: en # Short form without description
Unmapped locales are passed through unchanged.
intelligent_search and ingestion¶
See Intelligent Search → Configuration for the full explanation of these options.
translator¶
translator.languages is a fixed list of DeepL-supported language codes mapped to enabled/disabled. All languages are enabled by default; disable individual ones:
translator:
languages:
BG: false
TR: false
Arbitrary language codes cannot be added — the list is validated against the supported set.
text_field_types, html_field_types, property_type_translation_properties¶
Control which Sulu property types the full content translation processes. Add custom property types here when your project defines its own text-like field types.