# Solution: N8N API Key Mismatch ## 🔍 Problème **Avant** : Vous pouviez créer des missions sans `N8N_API_KEY` - Mission créée ✅ - N8N callback échouait silencieusement ❌ - Mission restait en base sans IDs ❌ **Maintenant** : Avec `N8N_API_KEY` ajouté - Mission créée ✅ - N8N callback appelé ✅ - **Mais clé API ne correspond pas → 401 → Mission création échoue** ❌ --- ## ✅ Solution 1: Utiliser la Même Clé (RECOMMANDÉ) ### Étape 1: Trouver la Clé Générée par N8N **Dans N8N** : 1. Allez dans les paramètres de votre workflow 2. Trouvez la clé API que N8N utilise 3. Ou regardez dans les logs d'exécution N8N pour voir quelle clé est envoyée ### Étape 2: Utiliser Cette Clé sur le Serveur **Ajoutez la même clé dans votre environnement** : ```env N8N_API_KEY=la-cle-generee-par-n8n ``` **Important** : Utilisez **exactement la même clé** que celle générée par N8N. ### Étape 3: Redémarrer le Serveur ```bash # Redémarrer l'application npm run dev # ou yarn dev ``` --- ## ✅ Solution 2: Rendre la Vérification Plus Flexible (TEMPORAIRE) Si vous voulez permettre la création de mission même si les clés ne correspondent pas : **Modifier `app/api/missions/mission-created/route.ts`** : ```typescript // Vérifier l'API key const apiKey = request.headers.get('x-api-key'); const expectedApiKey = process.env.N8N_API_KEY; // Si pas de clé configurée, accepter (mais logger un warning) if (!expectedApiKey) { logger.warn('N8N_API_KEY not configured, accepting request without validation'); // Continue without validation } else if (apiKey && apiKey !== expectedApiKey) { logger.error('Invalid API key', { received: apiKey ? 'present' : 'missing', expected: expectedApiKey ? 'configured' : 'missing' }); return NextResponse.json( { error: 'Unauthorized' }, { status: 401 } ); } else if (!apiKey && expectedApiKey) { logger.warn('API key expected but not provided, accepting anyway'); // Continue without validation (less secure but works) } ``` **⚠️ Note** : Cette solution est moins sécurisée mais permet de continuer à fonctionner. --- ## ✅ Solution 3: Utiliser la Clé du Serveur dans N8N **Au lieu d'utiliser la clé générée par N8N**, utilisez celle du serveur : ### Dans N8N "Save Mission To API" Node **Header `x-api-key`** : ``` {{ $node['Process Mission Data'].json.config.N8N_API_KEY }} ``` **Cette valeur vient de** : - `config.N8N_API_KEY` envoyé par le serveur (ligne 420) - Qui vient de `process.env.N8N_API_KEY` **Donc** : Si vous mettez la même clé dans `process.env.N8N_API_KEY`, N8N l'utilisera automatiquement. --- ## 🎯 Solution Recommandée **Utiliser la clé générée par N8N dans l'environnement du serveur** : 1. **Copier la clé générée par N8N** 2. **L'ajouter dans `.env.local`** (ou variables d'environnement production) : ```env N8N_API_KEY=votre-cle-generee-par-n8n ``` 3. **Redémarrer le serveur** 4. **Tester la création de mission** **Avantage** : - ✅ Sécurisé (vérification de clé) - ✅ Fonctionne correctement - ✅ IDs sauvegardés --- ## 🔍 Comment Trouver la Clé N8N ### Option 1: Dans N8N Workflow 1. Ouvrez le workflow N8N 2. Regardez le node "Save Mission To API" 3. Vérifiez la valeur de `x-api-key` header 4. Ou regardez dans `config.N8N_API_KEY` dans "Process Mission Data" ### Option 2: Dans N8N Execution Logs 1. Allez dans N8N → Executions 2. Trouvez une exécution récente 3. Regardez le node "Save Mission To API" 4. Vérifiez les headers de la requête 5. Trouvez la valeur de `x-api-key` ### Option 3: Générer une Nouvelle Clé **Si vous ne trouvez pas la clé**, vous pouvez : 1. Générer une nouvelle clé (ex: `openssl rand -hex 16`) 2. L'ajouter dans l'environnement du serveur 3. L'utiliser dans N8N workflow (hardcoder temporairement) --- ## 📋 Checklist - [ ] Trouver la clé API générée par N8N - [ ] Ajouter cette clé dans `N8N_API_KEY` environnement serveur - [ ] Vérifier que N8N utilise `{{ $node['Process Mission Data'].json.config.N8N_API_KEY }}` - [ ] Redémarrer le serveur - [ ] Tester création de mission - [ ] Vérifier que les IDs sont sauvegardés --- ## 🎯 Résumé **Problème** : Clé API N8N ≠ Clé API serveur → 401 Unauthorized **Solution** : Utiliser la **même clé** dans les deux endroits : 1. Environnement serveur : `N8N_API_KEY=cle-commune` 2. N8N workflow : Utilise automatiquement via `config.N8N_API_KEY` **Après fix** : Mission création fonctionne et IDs sont sauvegardés ✅ --- **Document Created**: $(date) **Priority**: HIGH - Blocks mission creation