resumeWebhook
Resume a paused workflow by sending an HTTP request to a webhook token.
Resumes a workflow run by sending an HTTP Request to a webhook identified by its token.
This function creates a hook_received event and re-triggers the workflow to continue execution. It's designed to be called from API routes or server actions that receive external HTTP requests.
resumeWebhook is a runtime function that must be called from outside a workflow function.
import { resumeWebhook } from "workflow/api";
export async function POST(request: Request) {
const url = new URL(request.url);
const token = url.searchParams.get("token");
if (!token) {
return new Response("Missing token", { status: 400 });
}
try {
const response = await resumeWebhook(token, request);
return response;
} catch (error) {
return new Response("Webhook not found", { status: 404 });
}
}API Signature
Parameters
| Name | Type | Description |
|---|---|---|
token | string | The unique token identifying the hook |
request | Request | The request to send to the hook |
Returns
Returns a Promise<Response> that resolves to one of three outcomes:
- A
202 Acceptedresponse when the webhook was created with the default mode (norespondWithoption) - The exact
Responseobject configured withcreateWebhook({ respondWith: new Response(...) }) - The workflow's manual
Responsewhen the webhook was created withcreateWebhook({ respondWith: 'manual' })and a step callsrequest.respondWith(response)
Throws an error if the webhook token is not found or invalid.
Usage Note
In most cases, you should not need to call resumeWebhook() directly. When you use createWebhook(), the framework automatically generates a random webhook token and provides a public URL at /.well-known/workflow/v1/webhook/:token. External systems can send HTTP requests directly to that URL.
For server-side hook resumption with deterministic tokens, use resumeHook() with createHook() instead.
Example
Forward an incoming HTTP request to a webhook by token:
import { resumeWebhook } from "workflow/api";
export async function POST(request: Request) {
const url = new URL(request.url);
const token = url.searchParams.get("token");
if (!token) {
return new Response("Token required", { status: 400 });
}
try {
const response = await resumeWebhook(token, request);
return response; // May be 202 Accepted, a configured static Response, or a manual workflow response
} catch (error) {
return new Response("Webhook not found", { status: 404 });
}
}Related Functions
createWebhook()- Create a webhook in a workflowresumeHook()- Resume a hook with arbitrary payloaddefineHook()- Type-safe hook helper