// api/run.ts
import type { VercelRequest, VercelResponse } from "@vercel/node";
import { Stagehand } from "@browserbasehq/stagehand";
import { z } from "zod/v3";
export default async function handler(req: VercelRequest, res: VercelResponse): Promise<void> {
try {
const stagehand = new Stagehand({
env: "BROWSERBASE",
apiKey: process.env.BROWSERBASE_API_KEY!,
projectId: process.env.BROWSERBASE_PROJECT_ID!,
disablePino: true,
modelName: "google/gemini-2.5-flash",
modelClientOptions: {
apiKey: process.env.GOOGLE_API_KEY!,
},
// optional session params
browserbaseSessionCreateParams: {
projectId: process.env.BROWSERBASE_PROJECT_ID!,
region: "us-west-2",
browserSettings: {
blockAds: true,
},
},
});
await stagehand.init();
const page = stagehand.page;
await page.goto("https://www.stagehand.dev/");
await page.act("click the evals button");
const { extraction } = await page.extract("extract the fastest model");
const data = { model: extraction ?? "" };
await stagehand.close();
res.status(200).json({ ok: true, data: data.model });
} catch (err: unknown) {
const msg = err instanceof Error ? err.message : String(err);
res.status(500).json({ ok: false, error: msg });
}
}