// 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,
model: {
modelName: "google/gemini-2.5-flash",
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.context.pages()[0];
await page.goto("https://www.stagehand.dev/");
await stagehand.act("click the evals button");
const fastestModel = await stagehand.extract("extract the fastest model", z.string());
await stagehand.close();
res.status(200).json({ ok: true, data: fastestModel });
} catch (err: unknown) {
const msg = err instanceof Error ? err.message : String(err);
res.status(500).json({ ok: false, error: msg });
}
}