Spaces:
Running
Running
| import { GoogleGenerativeAI } from "@google/generative-ai"; | |
| export default async function handler(req, res) { | |
| // Only allow POST requests | |
| if (req.method !== 'POST') { | |
| return res.status(405).json({ error: 'Method not allowed' }); | |
| } | |
| // Extract API key from request | |
| const { apiKey } = req.body; | |
| if (!apiKey) { | |
| return res.status(400).json({ | |
| valid: false, | |
| error: 'No API key provided' | |
| }); | |
| } | |
| try { | |
| // Initialize the Gemini API | |
| const genAI = new GoogleGenerativeAI(apiKey); | |
| // Use a simple model call with minimal tokens to check key validity | |
| const model = genAI.getGenerativeModel({ | |
| model: "gemini-1.5-flash", | |
| generationConfig: { | |
| temperature: 0, | |
| maxOutputTokens: 10 | |
| } | |
| }); | |
| // Make a simple API call to test the key | |
| const prompt = "Respond with 'valid' and nothing else."; | |
| const result = await model.generateContent(prompt); | |
| const response = await result.response; | |
| // If we get here, the key is valid | |
| return res.status(200).json({ | |
| valid: true | |
| }); | |
| } catch (error) { | |
| console.error('API key validation error:', error.message); | |
| // Check if the error is due to an invalid API key | |
| if ( | |
| error.message?.includes('invalid API key') || | |
| error.message?.includes('API key not valid') || | |
| error.message?.includes('403') | |
| ) { | |
| return res.status(200).json({ | |
| valid: false, | |
| error: 'Invalid API key' | |
| }); | |
| } | |
| // For other errors (like network issues), consider the key potentially valid | |
| // to avoid disrupting users unnecessarily | |
| return res.status(200).json({ | |
| valid: true, | |
| warning: 'Could not fully validate key due to error: ' + error.message | |
| }); | |
| } | |
| } |