Python & TypeScript SDKs
One API call pauses your agent, pings a human on email or Slack, and returns the answer — with the approver's edits, chosen option, or signed file. Approval gates for agents that touch money, customers, data, or production.
Support agents stop before issuing refunds, charging cards, or processing transfers. SDK policy rules can auto-approve small amounts; finance reviews anything above your threshold.
Release bots and SRE agents request a one-click sign-off before merging, rolling out, or running migrations. Context, diffs, and rollback plan attached.
Sales and success agents send drafts for human edit before anything leaves your domain. Approver can approve, rewrite, or deny — the SDK returns the final copy.
Agents that drop tables, revoke access, or bulk-delete records wait for explicit sign-off. Full audit trail: who approved, when, and what they saw.
Use the SDK decorator or call the API. Define what the approver should see — choices, form fields, file uploads, or a simple yes/no.
The approver gets an email or Slack message with full context, attached documents, and rich input options — not just buttons.
The SDK enforces the decision — if denied, the agent literally cannot proceed. Approved responses include the approver's choices, form data, and uploaded files.
Install the Python or TypeScript SDK for enforcement and decorators, or call the API directly from any language.
Works with LangChain, CrewAI, OpenAI Assistants, Claude, or your own code.
# pip install the-handover
from the_handover import HandoverClient
client = HandoverClient(api_key="ho_...")
# Rich decision — approver picks an option
result = client.create_decision(
action="Deploy to production",
approver="lead@company.com",
response_type={
"type": "choose",
"choices": ["staging", "production"]
},
enforce=True, # raises DecisionDenied
)
env = result["response_data"]["chosen"]
// npm install @the-handover/sdk
import { HandoverClient } from "@the-handover/sdk";
const client = new HandoverClient({ apiKey: "ho_..." });
// Rich decision — approver picks an option
const result = await client.createDecision({
action: "Deploy to production",
approver: "lead@company.com",
responseType: {
type: "choose",
choices: ["staging", "production"],
},
enforce: true, // throws DecisionDenied
});
const env = result.responseData.chosen;
For experimenting and testing your first agent.
Get startedbilled monthly
For developers running agents in production.
Get startedbilled monthly
For teams with multiple agents and approvers.
Get startedFor organisations with custom needs.
Contact us