Files
calendar/apps/web/app/api/mintlify-chat/topic/route.ts
T
a7d87fc5be fix: Proxy Mintlify traffic through a Next.js API route (#25320)
* hotfix

* type fix and test fix

* update env example

* improvements

* more fix

* tada

---------

Co-authored-by: Keith Williams <keithwillcode@gmail.com>
2025-11-21 18:43:09 +00:00

49 lines
1.3 KiB
TypeScript

import { NextResponse } from "next/server";
import type { NextRequest } from "next/server";
import { validateMintlifyConfig } from "@calcom/lib/server/mintlifyChatValidation";
/**
* POST /api/mintlify-chat/topic
*
* Creates a new Mintlify chat topic.
* This endpoint proxies requests to Mintlify's API while keeping
* the API key secure on the server side.
*/
export async function POST(_req: NextRequest) {
try {
// Validate configuration
const { apiKey, apiBaseUrl } = validateMintlifyConfig();
// Make request to Mintlify
const topicUrl = `${apiBaseUrl}/topic`;
console.log("[Mintlify Chat Topic] Fetching topic endpoint", { topicUrl });
const topicResponse = await fetch(topicUrl, {
method: "POST",
headers: {
"Content-Type": "application/json",
Authorization: `Bearer ${apiKey}`,
},
});
if (!topicResponse.ok) {
return NextResponse.json(
{ error: "Failed to create topic" },
{ status: topicResponse.status }
);
}
const topic = await topicResponse.json();
return NextResponse.json(topic);
} catch {
// Return generic error message to avoid leaking internal details
return NextResponse.json(
{ error: "Failed to create topic. Please try again later." },
{ status: 500 }
);
}
}