Skip to content

Vercel Chat SDK: requestApproval suspends workflows for human sign-off

Vercel Chat SDK adds requestApproval: one call posts an Approve/Deny card and suspends the workflow until a human decides. No approvals table or polling loop required.

Vercel’s Chat SDK now ships a requestApproval subpath under chat/workflow that posts an interactive card with Approve and Deny buttons, then suspends the workflow until someone clicks one.

What you get in a single call:

  • Durable suspension — the wait lasts seconds or days and survives deploys and restarts
  • No infra to build — no approvals table, no onAction handler, no polling loop
  • Scoped approvers — pass approvers to restrict who can decide
  • Thread serialization — Thread instances cross the workflow boundary automatically, so context survives the pause

Under the hood, Workflow SDK’s createWebhook generates a URL that the card buttons POST to on click. The workflow resumes with the click payload and continues. Three primitives power the wait:

PrimitiveWaits forTypical use
createWebhookHTTP call from external systemSlack button, vendor callback
createHookTyped in-app eventIn-app approval decision
sleepFixed duration (no upper limit)Timeout fallback

NOTE

This requires both Chat SDK and Workflow SDK. The approval card renders in Slack — no in-app UI component is shipped yet.

Available now — start with the approvals docs and the changelog post.