diff --git a/apps/api/src/controllers/v1/types.ts b/apps/api/src/controllers/v1/types.ts index 8490bcb1..5c1ae4c0 100644 --- a/apps/api/src/controllers/v1/types.ts +++ b/apps/api/src/controllers/v1/types.ts @@ -317,6 +317,7 @@ export const webhookSchema = z.preprocess( url: z.string().url(), headers: z.record(z.string(), z.string()).default({}), metadata: z.record(z.string(), z.string()).default({}), + events: z.array(z.enum(["completed", "failed", "page", "started"])).default(["completed", "failed", "page", "started"]), }) .strict(strictMessage), ); diff --git a/apps/api/src/services/webhook.ts b/apps/api/src/services/webhook.ts index d1381b05..75adfe76 100644 --- a/apps/api/src/services/webhook.ts +++ b/apps/api/src/services/webhook.ts @@ -16,6 +16,13 @@ export const callWebhook = async ( eventType: WebhookEventType = "crawl.page", awaitWebhook: boolean = false, ) => { + if (specified) { + let subType = eventType.split(".")[1]; + if (!specified.events.includes(subType as any)) { + return false; + } + } + try { const selfHostedUrl = process.env.SELF_HOSTED_WEBHOOK_URL?.replace( "{{JOB_ID}}", diff --git a/apps/js-sdk/firecrawl/src/index.ts b/apps/js-sdk/firecrawl/src/index.ts index 603591ac..422c9674 100644 --- a/apps/js-sdk/firecrawl/src/index.ts +++ b/apps/js-sdk/firecrawl/src/index.ts @@ -168,6 +168,7 @@ export interface CrawlParams { url: string; headers?: Record; metadata?: Record; + events?: ["completed", "failed", "page", "started"][number][]; }; deduplicateSimilarURLs?: boolean; ignoreQueryParameters?: boolean;