Human-in-the-loop oversight
An AI agent handles most conversations end to end, but you stay in control of the ones that matter. From a live conversation you can do three things without disconnecting the customer:- Whisper — send the agent a private instruction it reads on its next turn.
- Approve a high-risk action — a tool you marked as sensitive pauses for your sign-off before it runs.
- Take over — pause the AI and let a human handle the conversation, then hand control back.
Prerequisites
- The conversation must be live. Whisper and take-over apply to an agent conversation that is
active,open, orescalated; a closed conversation returns404. - These are supervisor actions. Sending a whisper is available to the
owner,admin, andsupervisorroles; approving or rejecting a tool call is available toownerandadmin. - Authenticate every request with an API key (
X-API-Key: dv_live_sk_...) or a dashboard session, exactly as with the rest of the API.
Whisper: guide the agent without taking over
A whisper is a one-way note from you to the agent. The agent reads it at the start of its next turn and factors it into that reply — you are steering the model, not messaging the customer. The customer never sees the note. Send a note:400; a conversation that is not live returns 404. On success you get 201 with the created note id:
consumed_at timestamp — null means the agent has not read it yet, a timestamp means it was picked up on the turn at that time.
Approve a high-risk action
Mark any tool as sensitive by setting itsconfirmation to "always". When the agent decides to call that tool, the call does not run: the turn pauses, the agent receives a blocked result instead of the tool output, and a pending approval is queued for a human to decide. Use this for irreversible or costly actions — issuing a refund, cancelling an account, sending a contract.
Review the queue:
tool_id, the tool_args it proposed, the conversation_id and agent_id, when it was requested_at, and a cost_estimate when the tool priced the call in advance. Filter by status (pending, approved, or rejected).
Approve it to let the action proceed. A reason is optional on approve:
resumed: true confirms the resume job was accepted. If the resume queue is briefly unavailable, your decision is still saved (resumed: false with a warning string) and the platform retries — the approval record is the source of truth, so no decision is ever lost.
Reject it to block the action. A reason is required on reject so the decision is documented:
Every approve and reject writes an audit record, so you keep a reviewable trail of who decided what and why.
Take over: pause the AI and step in
When a conversation needs a person, pause the agent and take the wheel. The customer stays on the same call or thread — only who is answering changes.Chat
Hand the conversation to a human, which pauses the agent so it stops replying:agent_active: false means a human has the conversation and the AI will not reply. When you are done, hand control back so the agent processes the next inbound message again:
Voice
On a live call, pause the AI mid-conversation so a supervisor or human agent can take over the call leg:Roles at a glance
See also
- Creating Agents — configure a tool’s
confirmationto require approval. - Agent handoff targets — route a conversation to another agent instead of a human.
- Cost controls — cap what an agent can spend per run and per conversation.