Express
03 Route Handler
Return a non-streaming Anvia response from an Express route.
Use Express middleware for JSON parsing and route handlers for application-owned validation and error shapes.
1. Create src/routes/support.ts
import { Router } from "express";
import { z } from "zod";
import { supportAgent } from "../ai/support-agent";
const SupportRequest = z.object({
message: z.string().trim().min(1, "message is required"),
});
export const supportRouter = Router();
supportRouter.post("/support", async (req, res, next) => {
try {
const parsed = SupportRequest.safeParse(req.body);
if (!parsed.success) {
return res.status(400).json({
error: { code: "bad_request", message: parsed.error.issues[0]?.message },
});
}
const response = await supportAgent.prompt(parsed.data.message).send();
return res.json({
output: response.output,
usage: response.usage,
messages: response.messages,
});
} catch (error) {
return next(error);
}
});2. Mount The Router
import express from "express";
import { supportRouter } from "./routes/support";
export const app = express();
app.use(express.json({ limit: "1mb" }));
app.use("/api", supportRouter);
app.use((error: unknown, _req, res, _next) => {
console.error(error);
res.status(500).json({
error: { code: "agent_failed", message: "The agent run failed." },
});
});3. Call The Route
const response = await fetch("http://localhost:3000/api/support", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({ message: "How long does a reset link last?" }),
});
const data = await response.json();
console.log(data.output);Next
Return live run events in Streaming. For response fields, read Prompt Responses.
