Learn how to test your webhook integration with AgentMark
AgentMark’s webhook allows you to receive events from AgentMark and respond to them. AgentMark supports helpers that automatically handle tracing, formatting, and more.AgentMark handles the following events:
Prompt Runs - When a prompt is run in the AgentMark platform
Dataset Runs - When a dataset is run in the AgentMark platform
Alerts - When an alert is triggered or resolved in the AgentMark platform
import { NextRequest, NextResponse } from "next/server";import { AgentMarkSDK } from "@agentmark/sdk";import { verifySignature } from "@agentmark/shared-utils";import { agentmarkClient, agentmarkCloudSDK } from "./agentmark";// Use the appropriate helper for your chosen frameworkimport { WebhookHelper } from "@agentmark/vercel-ai-v4-webhook-helper";// 2. Create the webhook endpointexport async function POST(request: NextRequest) { const payload = await request.json(); const headers = request.headers; const xAgentmarkSign = headers.get("x-agentmark-signature-256"); agentmarkCloudSDK.initTracing({ disableBatch: true }); try { // Verify signature if (!xAgentmarkSign || !(await verifySignature( process.env.AGENTMARK_WEBHOOK_SECRET!, xAgentmarkSign, JSON.stringify(payload) ))) { throw new Error("Invalid signature"); } const event = payload.event; const webhookHelper = new WebhookHelper(agentmarkClient); if (event.type === "prompt-run") { const response = await webhookHelper.runPrompt(event.data); if (response.type === "stream") { return new Response(response.stream, { headers: { ...response.streamHeader }, }); } return NextResponse.json(response); } if (event.type === "dataset-run") { const response = await webhookHelper.runDataset(event.data); return new Response(response.stream, { headers: { ...response.streamHeaders, }, }); } if (event.type === "alert") { // Alerts are not handled by the helper, process these manually console.log("Alert received:", event.data); return NextResponse.json({ message: "alert processed" }); } throw new Error(`Unknown event type: ${event.type}`); } catch (error) { console.error("Webhook error:", error); return NextResponse.json( { message: "Internal server error" }, { status: 500 } ); }}
For more details on helpers, event types, and security best practices, please refer to the main Webhook documentation. If you’re not using using a custom framework, see our event-specific guides.