Next.js (TypeScript)
Use NjiraAI with Next.js App Router route handlers.
Install
npm install @njiraai/sdk
Route handler wrapper
// app/api/chat/route.ts
import { NjiraAI } from "@njiraai/sdk";
const njira = new NjiraAI({
apiKey: process.env.NJIRA_API_KEY!,
projectId: process.env.NJIRA_PROJECT_ID!,
mode: "active",
});
export const POST = njira.nextRoute(async (request: Request) => {
const { message } = await request.json();
// Enforce before processing
const decision = await njira.enforcePre({
input: message,
metadata: { endpoint: "/api/chat" },
});
if (decision.verdict === "block") {
return Response.json(
{
error: "Blocked",
reasons: decision.reasons,
traceId: decision.traceId,
},
{ status: 403 }
);
}
// Your LLM logic here
const response = `Echo: ${message}`;
return Response.json({ response, traceId: decision.traceId });
});
What nextRoute does
- Extracts
x-request-idfrom headers (or generates one) - Creates per-request trace context
- Adds
x-njira-trace-idandx-njira-request-idto response headers - Flushes traces before returning (important for serverless)
Edge runtime
The SDK works in Edge Runtime. Just ensure you're using the ESM build:
// next.config.js
module.exports = {
experimental: {
serverComponentsExternalPackages: ["@njiraai/sdk"],
},
};