app/api/session/route.ts (28 lines of code) (raw):
import { VOICE } from "@/lib/config";
import { MODEL } from "@/lib/constants";
// Get an ephemeral session token from the /realtime/sessions endpoint
export async function GET() {
try {
const r = await fetch("https://api.openai.com/v1/realtime/sessions", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.OPENAI_API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
model: MODEL,
voice: VOICE,
}),
});
return new Response(r.body, {
status: 200,
headers: {
"Content-Type": "application/json",
},
});
} catch (error: any) {
console.error("Error:", error);
return new Response(JSON.stringify({ error: error.message }), {
status: 500,
});
}
}