Quickstart
Add human-in-the-loop approval to any AI Assistant in 5 minutes. Cheqpoint replaces complex custom interrupt logic with a single function call.
Integrate in under 10 lines of code
Here's the fastest way to add a Cheqpoint approval to any AI agent.
from cheqpoint import CheqpointClient
client = CheqpointClient(connection_key="cq_live_xxxxxxxxxxxx")
result = client.checkpoint(
action="process_refund",
summary="Refund $28 for order #44821",
details={"customer_id": "cus_123", "amount": 2800},
)
# Use modified details if the reviewer changed anything
payload = result.modified_details or result.details
process_refund(payload)Installation
python3 -m pip install cheqpointPython SDK
from cheqpoint import CheqpointClient
client = CheqpointClient(connection_key="cq_live_xxxxxxxxxxxx")
# Submit and block until a human decides
result = client.checkpoint(
action="process_refund",
summary="Customer requested refund for order #8821",
details={"customer_id": "cus_123", "amount": 15000}, # in cents
)
# result.status == "APPROVED" - otherwise RejectedError is raised
process_refund(result.effective_details)Node.js SDK
import { cheqpoint } from "@cheqpoint/sdk";
// Reads CHEQPOINT_CONNECTION_KEY from env — no client setup needed.
// guard() is a fail-safe wrapper: the callback runs ONLY on approval.
// Throws RejectedError on decline, TimeoutError on timeout — action never fires otherwise.
await cheqpoint.guard(
"process_refund",
{ customerId: "cus_123", amount: 15000 }, // in cents
(ctx) => processRefund(ctx.details), // ctx.details = reviewer edits ?? originals
);1. Get your Connection Key
Go to Dashboard → Developer to find your Connection Key. Each AI Assistant has its own unique key, prefixed with cq_live_. You'll need this to authenticate your SDK calls.
Pro-tip: The interactive demo allows you to see how human-in-the-loop approval works without creating a workspace.
Understanding the action field
The action string is defined entirely by you — it can be anything that describes what your AI agent is about to do. There is no fixed list. Cheqpoint uses it as a label in the approval inbox and as a target for auto-approval rules.
Financial
process_refund · transfer_funds · issue_credit · cancel_subscription
Communication
send_email · send_sms · post_to_social · send_campaign
Data
delete_record · bulk_update · export_data · write_database
DevOps
deploy_to_production · run_migration · restart_service · modify_infra
CRM / Tools
create_ticket · close_opportunity · update_account · assign_user
Access
grant_permissions · revoke_access · create_api_key · reset_password
Pick names that make sense to your reviewers — they appear exactly as-is in the approval inbox title (e.g. deploy_to_production → Deploy To Production).
2. Test your connection
Before integrating into your agent, verify your Connection Key works with a single curl command. Replace YOUR_KEY with your key from the Developer page.
curl -s -X POST https://app.cheqpoint.co/api/approvals/request \
-H "x-api-key: YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"action":"send_email","summary":"Test request","details":{"to":"test@example.com"}}'
# Expected response:
# { "id": "req_...", "status": "PENDING" }A "status": "PENDING" response means your key is valid and the request is live. Head to your Approval Inbox to approve or reject it. You can also use the Send test request button on the Developer page to do this in one click.
Next steps
How it works →
Understand the request lifecycle and review process.
Notifications →
Get alerted via Slack, Teams, Discord, or email when requests arrive.
LangGraph Migration →
Coming from LangGraph? See how much code you can delete.
System Health Check →
Test every configured integration at once from the Developer page.