← nopea.tech
ScaneaConsenteaMaskeaBundlesPricing
Frameworks

Next.js App Router API route

The same maskea instance can be shared across every route in your app -- construct it once, import it everywhere.

← All recipes
// app/api/chat/route.ts
import { NextRequest, NextResponse } from "next/server";
import { Maskea, retries, budget, secrets } from "@nopeatech/maskea";
import OpenAI from "openai";

const openai = new OpenAI();
const maskea = new Maskea()
  .use(retries({ max: 3 }))
  .use(budget({ maxMonthlyUsd: 50 }))
  .use(secrets({ mode: "mask" }));

const chat = maskea.wrap(openai.chat.completions.create.bind(openai.chat.completions));

export async function POST(req: NextRequest) {
  const { messages } = await req.json();
  const result = await chat({ model: "gpt-4o-mini", messages });
  return NextResponse.json(result);
}

Checked against the shipped @nopeatech/maskea API. Full docs at nopea.tech/maskea/docs.

More in Frameworks

Express route handler →Fastify route handler →NestJS injectable service →Mask PII in a Next.js server action →