diff --git a/core/http/react-ui/src/pages/Settings.jsx b/core/http/react-ui/src/pages/Settings.jsx index b1491f216317..d4e99f15a50a 100644 --- a/core/http/react-ui/src/pages/Settings.jsx +++ b/core/http/react-ui/src/pages/Settings.jsx @@ -55,7 +55,20 @@ export default function Settings() { const handleSave = async () => { setSaving(true) try { - await settingsApi.save(settings) + // Prepare settings for saving: convert api_keys_text to api_keys array + const settingsToSave = { ...settings } + if (settingsToSave.api_keys_text !== undefined && settingsToSave.api_keys_text !== null) { + const text = settingsToSave.api_keys_text + if (typeof text === 'string' && text.trim() !== '') { + const keys = text.split('\n').map(k => k.trim()).filter(k => k !== '') + settingsToSave.api_keys = Array.from(new Set(keys)) + } else { + settingsToSave.api_keys = [] + } + } + // Remove UI-only field before sending to backend + delete settingsToSave.api_keys_text + await settingsApi.save(settingsToSave) addToast('Settings saved successfully', 'success') } catch (err) { addToast(`Save failed: ${err.message}`, 'error')