Skip to main content
Pause deep research at key decision points so a human can review and guide the agent.
For the conceptual overview, checkpoint shapes, and lifecycle, see the HITL Guide. This page is the TypeScript SDK reference.
HITL is only available for individual deep research tasks, not for batch requests.

Quick start

Enable a plan-review checkpoint and collect a real response before continuing. This Node.js example approves the plan when the user presses Enter, or submits the requested changes.
In a web application, persist the task and interaction IDs, show the checkpoint to the user, then call respond() when they submit their decision. Returning null from a callback leaves the checkpoint unanswered; it does not approve or dismiss it.

Checkpoints

Checkpoints fire in order; only enabled ones fire.

Reference

If you’d rather drive the loop yourself, poll status() and respond when status.status is awaiting_input or paused:
respond() returns DeepResearchRespondResponse with success, status ("running" or "queued"), deepresearch_id, error.
Each checkpoint expects a specific response object:
After checkpoints complete, status.hitl_history records each interaction (type, auto_continued, created_at, responded_at, response):