Skip to main content

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 session
  • POST /api/v1/sessions/:id/resume — resume the agent (control_mode='engaged')
  • POST /api/v1/sessions/:id/handoff — mark control_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; supports Idempotency-Key header
  • GET /api/v1/sessions — new filters: control_mode, consumer_key
  • Session detail payload now includes control_mode and control_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 consumer
  • POST /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/owner 76 → 83, editor 39 → 42, member 5 (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 — when control_mode changes (suspend/resume/handoff/auto-expire)
  • consumer_denylist_changed — when a consumer is added or removed from the denylist
  • manual_message_sent — when an operator sends a manual message
  • turn_cancelled — when an agent turn is cancelled

Error Codes (new)

  • INVALID_SESSION_STATE (409) — manual-message attempted while control_mode='engaged'
  • NO_TRIGGER_HISTORY (422) — manual-message on a session with no prior webhook history
  • NO_CALLBACK_CONFIG (422) — manual-message on a trigger without an outbound callback configured
  • DELIVERY_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.