Changelog
Notable changes to the Zihin API.
2026-05-29 — Session Control Lifecycle
Added — Session Control endpoints
POST /api/v1/sessions/:id/suspend— pause the agent on a specific sessionPOST /api/v1/sessions/:id/resume— resume the agent (control_mode='engaged')POST /api/v1/sessions/:id/handoff— markcontrol_mode='manual_handoff'POST /api/v1/sessions/:id/cancel— abort an in-progress turn (mid-LLM, mid-tool)POST /api/v1/sessions/:id/manual-message— operator sends a message through the agent's outbound channel; supportsIdempotency-KeyheaderGET /api/v1/sessions— new filters:control_mode,consumer_key- Session detail payload now includes
control_modeandcontrol_metadata
Added — Consumers endpoints
GET /api/v1/consumers— paginated list of cross-session consumers (filters:search,blocked)GET /api/v1/consumers/:key— aggregated profile (channels, total sessions, total turns)GET /api/v1/consumers/:key/sessions— sessions associated with a consumerPOST /api/v1/consumers/:key/deny— add to tenant-wide denylist (telemetry:write)DELETE /api/v1/consumers/:key/deny— remove from denylist
Added — MCP Tools (5 new, total now 83)
- Consumer Profile (owner, admin, editor):
get_consumer_profile,list_consumers - Consumer Ops (owner, admin):
set_consumer_denylist,set_session_control,send_manual_message,cancel_agent_turn
Changed
- MCP role counts:
admin/owner76 → 83,editor39 → 42,member5 (unchanged) - Webhook responses use empty TwiML (
<Response></Response>) when a gate blocks (denylist, suspended session). No LLM call, no quota consumed.
Workroom Realtime Events (new)
Tenant-scoped events emitted on the workroom:{tenantId} channel:
session_control_changed— whencontrol_modechanges (suspend/resume/handoff/auto-expire)consumer_denylist_changed— when a consumer is added or removed from the denylistmanual_message_sent— when an operator sends a manual messageturn_cancelled— when an agent turn is cancelled
Error Codes (new)
INVALID_SESSION_STATE(409) — manual-message attempted whilecontrol_mode='engaged'NO_TRIGGER_HISTORY(422) — manual-message on a session with no prior webhook historyNO_CALLBACK_CONFIG(422) — manual-message on a trigger without an outbound callback configuredDELIVERY_FAILED(502) — outbound channel (e.g., Twilio) returned an error
2026-02-17
Added
- Public documentation portal at docs.zihin.ai
- Auto-synced docs from service repositories
- N8N integration nodes documentation
- Zihin Watch observability documentation
Infrastructure
- Docs pipeline: each service repo owns its public docs
- Automated sync on every build
For feature requests and bug reports, contact the Zihin team or open an issue in the relevant repository.