# AnythingLLM extension — 403 « No valid api key found » **Author:** 4NK ## Symptôme Commande **AnythingLLM: List workspaces** → erreur du type : `AnythingLLM API 403: {"error":"No valid api key found."}` ## Cause Le middleware amont `validApiKey` lit `Authorization`, extrait le jeton après `Bearer `, puis appelle `ApiKey.get({ secret })` sur la base AnythingLLM. Toute valeur absente de cette base produit la même réponse 403. ## Root cause fréquente Confusion entre : - le **secret Bearer nginx** utilisé pour `https://ia.enso.4nkweb.com/ollama/…` (documenté dans `deploy/nginx/README-ia-enso.md`) ; - une **clé API AnythingLLM** créée dans l’UI : **Settings → API Keys**. Ce sont deux mécanismes indépendants. Le secret nginx n’est **pas** enregistré comme clé API dans AnythingLLM. ## Correctifs côté utilisateur 1. Ouvrir l’UI AnythingLLM (`anythingllm.baseUrl`). 2. **Settings → API Keys** : créer une clé si besoin, copier le secret affiché. 3. Coller ce secret dans `anythingllm.apiKey` (réglages **Utilisateur** de l’éditeur). ## Correctifs côté code / doc - README de l’extension : rappel explicite nginx vs clé AnythingLLM. - Client : normalisation `normalizeApiSecret` — si l’utilisateur a collé `Bearer `, le préfixe est retiré avant l’envoi (évite un jeton parsé comme `Bearer` par erreur). ## Modalités d’analyse - Vérifier la réponse HTTP brute (403 + corps JSON). - Comparer la valeur configurée avec l’origine (fichier map nginx vs écran API Keys). - Tester avec `curl` : `curl -sS -H "Authorization: Bearer " "/api/v1/workspaces"`. ## Modalités de déploiement Redéployer / réinstaller l’extension après modification du client (`npm run compile` ou nouveau `.vsix`). Aucun changement nginx requis pour ce diagnostic.