fix(onboarding): fail fast with a clear error when EXA_API_KEY is missing

The route previously fell back to "x-api-key": process.env.EXA_API_KEY ?? "",
so a missing env var produced an outbound call to Exa with an empty key. Exa
returned an auth failure, which was then surfaced to the client as a generic
500 "Failed to fetch content from Exa API" — making missing configuration
indistinguishable from upstream errors and slowing self-hosted setup.

Read EXA_API_KEY once at the top of the handler, log a specific message when
it's absent, and return a 500 with a clear "service is not configured" error.
The downstream fetch now uses the validated, non-empty key directly.
This commit is contained in:
vimzh 2026-05-24 11:45:05 +05:30
parent a8d36df38e
commit cba67a55ed

View file

@ -11,6 +11,15 @@ interface ExaApiResponse {
export async function POST(request: Request) {
try {
const exaApiKey = process.env.EXA_API_KEY
if (!exaApiKey) {
console.error("EXA_API_KEY is not configured")
return Response.json(
{ error: "Content extraction service is not configured" },
{ status: 500 },
)
}
const { urls } = await request.json()
if (!Array.isArray(urls) || urls.length === 0) {
@ -30,7 +39,7 @@ export async function POST(request: Request) {
const response = await fetch("https://api.exa.ai/contents", {
method: "POST",
headers: {
"x-api-key": process.env.EXA_API_KEY ?? "",
"x-api-key": exaApiKey,
"Content-Type": "application/json",
},
body: JSON.stringify({