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-id from headers (or generates one)
  • Creates per-request trace context
  • Adds x-njira-trace-id and x-njira-request-id to 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"],
  },
};