Handling responses
AI responses can fail or come back in an unexpected shape. Wrap calls in try/catch, check that you actually got text, and validate JSON before using it.
try {
const response = await ai.models.generateContent({
model: "gemini-2.5-flash",
contents: prompt,
config: { responseMimeType: "application/json" },
})
const text = response.text
if (!text) throw new Error("Empty response")
const data = JSON.parse(text)
return Response.json(data)
} catch (err) {
console.error(err)
return Response.json({ error: "AI request failed" }, { status: 500 })
}