import express, { Request, Response } from "express";
interface PersonaConfig {
name: string;
avatarId: string;
voiceId: string;
llmId?: string;
systemPrompt?: string;
}
interface SessionTokenResponse {
sessionToken: string;
}
const app = express();
app.use(express.json());
app.post("/api/session-token", async (req: Request, res: Response) => {
try {
const response = await fetch("https://api.anam.ai/v1/auth/session-token", {
method: "POST",
headers: {
"Content-Type": "application/json",
Authorization: `Bearer ${process.env.ANAM_API_KEY}`,
},
body: JSON.stringify({
personaConfig: {
name: "Cara",
avatarId: "30fa96d0-26c4-4e55-94a0-517025942e18",
voiceId: "6bfbe25a-979d-40f3-a92b-5394170af54b",
llmId: "0934d97d-0c3a-4f33-91b0-5e136a0ef466",
systemPrompt: "You are a helpful assistant.",
} satisfies PersonaConfig,
}),
});
if (!response.ok) {
const errorData = await response.json();
console.error("Token creation failed:", errorData);
return res.status(response.status).json({ error: "Token creation failed" });
}
const { sessionToken }: SessionTokenResponse = await response.json();
res.json({ sessionToken });
} catch (error) {
console.error("Network error:", error);
res.status(500).json({ error: "Failed to create session" });
}
});
app.listen(3000, () => console.log("Server running on port 3000"));