---
title: Zammad API Integration on Truto
slug: zammad
category: Helpdesk
canonical: "https://truto.one/integrations/detail/zammad/"
---

# Zammad API Integration on Truto



**Category:** Helpdesk  
**Status:** Generally available

## MCP-ready AI tools

Truto exposes 98 tools for Zammad that AI agents can call directly.

- **zammad_users_get_me** — Get the currently authenticated Zammad user. Returns: active, address, authorization_ids, city, country, created_at, created_by_id, department, email, fax, firstname, group_ids, id, image, image_source, last_login, lastname, login, login_failed, mobile, note, organization_id, organization_ids, out_of_office, out_of_office_end_at, out_of_office_replacement_id, out_of_office_start_at, overview_sorting_ids, phone, preferences, role_ids, source, street, two_factor_preference_ids, updated_at, updated_by_id, verified, vip, web, zip.
- **list_all_zammad_users** — List Zammad users. Returns per user: id, login, email, firstname, lastname, active, organization_id, role_ids, preferences, created_at, updated_at. Returns: active, address, authorization_ids, city, country, created_at, created_by_id, department, email, fax, firstname, group_ids, id, image, image_source, last_login, lastname, login, login_failed, mobile, note, organization_id, organization_ids, out_of_office, out_of_office_end_at, out_of_office_replacement_id, out_of_office_start_at, overview_sorting_ids, phone, preferences, role_ids, source, street, two_factor_preference_ids, updated_at, updated_by_id, verified, vip, web, zip.
- **update_a_zammad_user_by_id** — Update a Zammad user by id with attributes such as phone, department, and address. Returns the updated user object including id, login, email, firstname, lastname, active, role_ids, created_at, updated_at. Returns: active, address, authorization_ids, city, country, created_at, created_by_id, department, email, fax, firstname, group_ids, id, image, image_source, last_login, lastname, login, login_failed, mobile, note, organization_id, organization_ids, out_of_office, out_of_office_end_at, out_of_office_replacement_id, out_of_office_start_at, overview_sorting_ids, phone, preferences, role_ids, source, street, two_factor_preference_ids, updated_at, updated_by_id, verified, vip, web, zip. Required: id.
- **delete_a_zammad_user_by_id** — Delete a Zammad user by id. This is a permanent removal that cannot be undone and may also remove related references such as tickets. Returns an empty 200 response with {} on success. Returns: empty response. Required: id.
- **zammad_users_search** — Search Zammad users by query string. Returns matching user records including id, login, firstname, lastname, email, organization_id, active, vip, created_at, updated_at, role_ids, and group_ids. Returns: active, address, authorization_ids, city, country, created_at, created_by_id, department, email, fax, firstname, group_ids, id, image, image_source, last_login, lastname, login, login_failed, mobile, note, organization_id, organization_ids, out_of_office, out_of_office_end_at, out_of_office_replacement_id, out_of_office_start_at, overview_sorting_ids, phone, preferences, role_ids, source, street, two_factor_preference_ids, updated_at, updated_by_id, verified, vip, web, zip. Required: query.
- **list_all_zammad_organizations** — List all organizations in Zammad. Returns: active, created_at, created_by_id, domain, domain_assignment, id, member_ids, name, note, secondary_member_ids, shared, updated_at, updated_by_id, vip.
- **get_single_zammad_organization_by_id** — Get a single Zammad organization by id. Returns: active, created_at, created_by_id, domain, domain_assignment, id, member_ids, name, note, secondary_member_ids, shared, updated_at, updated_by_id, vip. Required: id.
- **create_a_zammad_organization** — Create a new organization in Zammad. Returns: active, created_at, created_by_id, domain, domain_assignment, id, member_ids, name, note, secondary_member_ids, shared, updated_at, updated_by_id, vip. Required: name.
- **update_a_zammad_organization_by_id** — Update an existing Zammad organization by id. Returns: active, created_at, created_by_id, domain, domain_assignment, id, member_ids, name, note, secondary_member_ids, shared, updated_at, updated_by_id, vip. Required: id.
- **delete_a_zammad_organization_by_id** — Delete a Zammad organization by id. This is a permanent removal that cannot be undone. Organizations with references in activity streams or users cannot be deleted. Returns an empty 200 response with {} on success. Required: id.
- **zammad_organizations_search** — Search Zammad organizations by query string. Returns matching organizations with id, name, shared, domain, domain_assignment, active, note, vip, member_ids, secondary_member_ids, created_at, and updated_at. Returns: active, created_at, created_by_id, domain, domain_assignment, id, member_ids, name, note, secondary_member_ids, shared, updated_at, updated_by_id, vip. Required: query. Supports sort_by and order_by for result sorting, and full/expand to include related assets.
- **list_all_zammad_groups** — List all Zammad groups. Returns: active, assignment_timeout, created_at, created_by_id, email_address_id, follow_up_assignment, follow_up_possible, id, name, note, signature_id, updated_at, updated_by_id, user_ids.
- **get_single_zammad_group_by_id** — Get a single Zammad group by id. Returns: active, assignment_timeout, created_at, created_by_id, email_address_id, follow_up_assignment, follow_up_possible, id, name, note, signature_id, updated_at, updated_by_id, user_ids. Required: id.
- **create_a_zammad_group** — Create a new Zammad group. Returns the created group with id, name, active, follow_up_possible, user_ids, created_at, updated_at. Returns: active, assignment_timeout, created_at, created_by_id, email_address_id, follow_up_assignment, follow_up_possible, id, name, note, signature_id, updated_at, updated_by_id, user_ids. Required: name. Subgroup names use :: as delimiter (e.g. Sales::Europe::South). follow_up_possible accepts yes or new_ticket.
- **update_a_zammad_group_by_id** — Update a Zammad group by id. Returns the updated group with id, name, active, follow_up_possible, user_ids, created_at, updated_at. Returns: active, assignment_timeout, created_at, created_by_id, email_address_id, follow_up_assignment, follow_up_possible, id, name, note, signature_id, updated_at, updated_by_id, user_ids. Required: id, name. Subgroup names use :: as delimiter (e.g. Sales::Europe::South).
- **delete_a_zammad_group_by_id** — Delete a Zammad group by id. This is a permanent removal that cannot be undone; groups with references in tickets or activity streams cannot be deleted. Returns an empty 200 response with {} on success. Required: id.
- **zammad_groups_search** — Search Zammad groups by query string. Returns an array of group objects including id, name, name_last, active, follow_up_possible, parent_id, signature_id, email_address_id, shared_drafts, created_at, updated_at, and user_ids. Supports expand, full, sort_by, and order_by parameters for richer or sorted results. Returns: active, assignment_timeout, created_at, created_by_id, email_address_id, follow_up_assignment, follow_up_possible, id, name, note, signature_id, updated_at, updated_by_id, user_ids. Required: query.
- **list_all_zammad_roles** — List Zammad roles. Returns: active, created_at, created_by_id, default_at_signup, group_ids, id, knowledge_base_permission_ids, name, note, permission_ids, preferences, updated_at, updated_by_id.
- **get_single_zammad_role_by_id** — Get a single Zammad role by id. Returns: active, created_at, created_by_id, default_at_signup, group_ids, id, knowledge_base_permission_ids, name, note, permission_ids, preferences, updated_at, updated_by_id. Required: id.
- **create_a_zammad_role** — Create a new Zammad role. Returns the created role with id, name, active, note, default_at_signup, permission_ids, group_ids, created_at, updated_at. Returns: active, created_at, created_by_id, default_at_signup, group_ids, id, knowledge_base_permission_ids, name, note, permission_ids, preferences, updated_at, updated_by_id.
- **update_a_zammad_role_by_id** — Update an existing Zammad role by id. Returns the updated role with id, name, active, note, default_at_signup, permission_ids, group_ids, created_at, updated_at. Returns: active, created_at, created_by_id, default_at_signup, group_ids, id, knowledge_base_permission_ids, name, note, permission_ids, preferences, updated_at, updated_by_id. Required: id.
- **zammad_roles_search** — Search Zammad roles by query string. Returns matching roles with id, name, active, note, default_at_signup, permission_ids, group_ids, created_at, updated_at. Returns: active, created_at, created_by_id, default_at_signup, group_ids, id, knowledge_base_permission_ids, name, note, permission_ids, preferences, updated_at, updated_by_id. Required: query.
- **list_all_zammad_slas** — List Zammad SLAs. Returns: calendar_id, condition, created_at, created_by_id, first_response_time, id, name, response_time, solution_time, update_time, updated_at, updated_by_id.
- **get_single_zammad_sla_by_id** — Get a single Zammad SLA by id. Returns: calendar_id, condition, created_at, created_by_id, first_response_time, id, name, response_time, solution_time, update_time, updated_at, updated_by_id. Required: id.
- **create_a_zammad_sla** — Create a new Zammad SLA. Returns: calendar_id, condition, created_at, created_by_id, first_response_time, id, name, response_time, solution_time, update_time, updated_at, updated_by_id. Required: name. SLAs depend on Zammad Calendars.
- **update_a_zammad_sla_by_id** — Update an existing Zammad SLA by id. Returns: calendar_id, condition, created_at, created_by_id, first_response_time, id, name, response_time, solution_time, update_time, updated_at, updated_by_id. Required: id.
- **delete_a_zammad_sla_by_id** — Delete a Zammad SLA by id. This is a permanent removal and cannot be undone. Returns an empty 200 response on success. Required: id.
- **list_all_zammad_calendars** — List all Zammad calendars used for SLA calculations. Returns: business_hours, created_at, created_by_id, default, ical_url, id, last_log, last_sync, name, public_holidays, timezone, updated_at, updated_by_id.
- **get_single_zammad_calendar_by_id** — Get a single Zammad calendar by id. Returns: business_hours, created_at, created_by_id, default, ical_url, id, last_log, last_sync, name, public_holidays, timezone, updated_at, updated_by_id. Required: id.
- **create_a_zammad_calendar** — Create a new Zammad calendar with business hours, timezone, and public holiday configuration. Returns: business_hours, created_at, created_by_id, default, ical_url, id, last_log, last_sync, name, public_holidays, timezone, updated_at, updated_by_id.
- **update_a_zammad_calendar_by_id** — Update an existing Zammad calendar's name, timezone, business hours, public holidays, iCal URL, or note. Returns: business_hours, created_at, created_by_id, default, ical_url, id, last_log, last_sync, name, public_holidays, timezone, updated_at, updated_by_id. Required: id.
- **delete_a_zammad_calendar_by_id** — Delete a Zammad calendar by id. This is a permanent removal that cannot be undone. Calendars referenced by SLA configurations cannot be deleted. Returns an empty 200 response with {} on success. Required: id.
- **list_all_zammad_tickets** — List Zammad tickets. Returns: article_count, close_at, close_diff_in_min, close_escalation_at, close_in_min, create_article_sender_id, create_article_type_id, created_at, created_by_id, customer_id, escalation_at, first_response_at, first_response_diff_in_min, first_response_escalation_at, first_response_in_min, group_id, id, last_contact_agent_at, last_contact_at, last_contact_customer_at, last_owner_update_at, note, number, organization_id, owner_id, pending_time, preferences, priority_id, state_id, time_unit, title, type, update_diff_in_min, update_escalation_at, update_in_min, updated_at, updated_by_id.
- **get_single_zammad_ticket_by_id** — Get a single Zammad ticket by id. Returns: article_count, close_at, close_diff_in_min, close_escalation_at, close_in_min, create_article_sender_id, create_article_type_id, created_at, created_by_id, customer_id, escalation_at, first_response_at, first_response_diff_in_min, first_response_escalation_at, first_response_in_min, group_id, id, last_contact_agent_at, last_contact_at, last_contact_customer_at, last_owner_update_at, note, number, organization_id, owner_id, pending_time, preferences, priority_id, state_id, time_unit, title, type, update_diff_in_min, update_escalation_at, update_in_min, updated_at, updated_by_id.
- **create_a_zammad_ticket** — Create a new Zammad ticket with an optional initial article. Returns the created ticket including id, number, title, group_id, customer_id, article_ids, ticket_time_accounting_ids, created_at, updated_at. Returns: article_count, article_ids, close_at, close_diff_in_min, close_escalation_at, close_in_min, create_article_sender_id, create_article_type_id, created_at, created_by_id, customer_id, escalation_at, first_response_at, first_response_diff_in_min, first_response_escalation_at, first_response_in_min, group_id, id, last_contact_agent_at, last_contact_at, last_contact_customer_at, last_owner_update_at, note, number, organization_id, owner_id, pending_time, preferences, priority_id, state_id, ticket_time_accounting_ids, time_unit, title, type, update_diff_in_min, update_escalation_at, update_in_min, updated_at, updated_by_id. Required: title, group, customer.
- **update_a_zammad_ticket_by_id** — Update a Zammad ticket by id, optionally adding a new article. Returns the updated ticket including id, number, title, group_id, state_id, priority_id, article_ids, ticket_time_accounting_ids, updated_at. Returns: article_count, article_ids, close_at, close_diff_in_min, close_escalation_at, close_in_min, create_article_sender_id, create_article_type_id, created_at, created_by_id, customer_id, escalation_at, first_response_at, first_response_diff_in_min, first_response_escalation_at, first_response_in_min, group_id, id, last_contact_agent_at, last_contact_at, last_contact_customer_at, last_owner_update_at, note, number, organization_id, owner_id, pending_time, preferences, priority_id, state_id, ticket_time_accounting_ids, time_unit, title, type, update_diff_in_min, update_escalation_at, update_in_min, updated_at, updated_by_id. Required: id.
- **delete_a_zammad_ticket_by_id** — Permanently delete a Zammad ticket by id. All articles and attachments are lost and cannot be restored. Returns an empty 200 response with {} on success. Required: id.
- **zammad_tickets_search** — Search Zammad tickets by query string. Returns an array of ticket objects including id, number, title, group_id, priority_id, state_id, owner_id, customer_id, article_count, created_at, and updated_at. Supports expand to resolve relation IDs to names, full to include all related assets, and sort_by/order_by for sorting. Returns: article_count, close_at, close_diff_in_min, close_escalation_at, close_in_min, create_article_sender_id, create_article_type_id, created_at, created_by_id, customer_id, escalation_at, first_response_at, first_response_diff_in_min, first_response_escalation_at, first_response_in_min, group_id, id, last_contact_agent_at, last_contact_at, last_contact_customer_at, last_owner_update_at, note, number, organization_id, owner_id, pending_time, preferences, priority_id, state_id, time_unit, title, type, update_diff_in_min, update_escalation_at, update_in_min, updated_at, updated_by_id. Required: query.
- **get_single_zammad_ticket_article_by_id** — Get a single Zammad ticket article by id. Returns: attachments, body, cc, content_type, created_at, created_by, created_by_id, from, id, in_reply_to, internal, message_id, message_id_md5, origin_by_id, preferences, references, reply_to, sender, sender_id, subject, ticket_id, time_unit, to, type, type_id, updated_at, updated_by, updated_by_id. Required: id.
- **create_a_zammad_ticket_article** — Create a new article on an existing Zammad ticket. Returns the created article object including id, ticket_id, type, sender, subject, body, internal, created_at, and attachments. Returns: attachments, body, cc, content_type, created_at, created_by, created_by_id, from, id, in_reply_to, internal, message_id, message_id_md5, origin_by_id, preferences, references, reply_to, sender, sender_id, subject, ticket_id, to, type, type_id, updated_at, updated_by, updated_by_id. Required: ticket_id. Use origin_by_id to create articles on behalf of other users.
- **list_all_zammad_ticket_articles** — List all ticket articles for a specific Zammad ticket. Returns: attachments, body, cc, content_type, created_at, created_by, created_by_id, from, id, in_reply_to, internal, message_id, message_id_md5, origin_by_id, preferences, references, reply_to, sender, sender_id, subject, ticket_id, time_unit, to, type, type_id, updated_at, updated_by, updated_by_id. Required: ticket_id.
- **get_single_zammad_ticket_attachment_by_id** — Download a specific ticket attachment file from Zammad. Returns the raw binary content of the attachment file (content type depends on the uploaded file). Required: ticket_id, article_id, id.
- **list_all_zammad_ticket_states** — List all ticket states in Zammad. Returns: active, created_at, created_by_id, default_create, default_follow_up, id, ignore_escalation, name, next_state_id, note, state_type_id, updated_at, updated_by_id.
- **get_single_zammad_ticket_state_by_id** — Get a single Zammad ticket state by id. Returns: active, created_at, created_by_id, default_create, default_follow_up, id, ignore_escalation, name, next_state_id, note, state_type_id, updated_at, updated_by_id. Required: id.
- **create_a_zammad_ticket_state** — Create a new ticket state in Zammad. Returns the created state with id, name, state_type_id, active, ignore_escalation, and timestamps. Returns: active, created_at, created_by_id, default_create, default_follow_up, id, ignore_escalation, name, next_state_id, note, state_type_id, updated_at, updated_by_id. Required: name, state_type_id. The state_type_id is instance-specific and must be obtained via the Rails console as no API endpoint lists state types.
- **update_a_zammad_ticket_state_by_id** — Update a Zammad ticket state by id. Returns the updated state with id, name, state_type_id, note, active, and timestamps. Returns: active, created_at, created_by_id, default_create, default_follow_up, id, ignore_escalation, name, next_state_id, note, state_type_id, updated_at, updated_by_id. Required: id.
- **delete_a_zammad_ticket_state_by_id** — Delete a Zammad ticket state by id. Returns an empty 200 response with {} on success. Required: id. Removal is permanent; states referenced by tickets cannot be deleted via the API.
- **list_all_zammad_ticket_priorities** — List all ticket priorities in Zammad. Returns: active, created_at, created_by_id, default_create, id, name, note, ui_color, ui_icon, updated_at, updated_by_id.
- **get_single_zammad_ticket_priority_by_id** — Get a single Zammad ticket priority by id. Returns: active, created_at, created_by_id, default_create, id, name, note, ui_color, ui_icon, updated_at, updated_by_id. Required: id.
- **create_a_zammad_ticket_priority** — Create a new ticket priority in Zammad. Returns the created priority with id, name, default_create, ui_icon, ui_color, note, active, created_at, updated_at. Returns: active, created_at, created_by_id, default_create, id, name, note, ui_color, ui_icon, updated_at, updated_by_id. Required: name.
- **update_a_zammad_ticket_priority_by_id** — Update a Zammad ticket priority by id. Returns the updated priority with id, name, default_create, ui_icon, ui_color, note, active, created_at, updated_at. Returns: active, created_at, created_by_id, default_create, id, name, note, ui_color, ui_icon, updated_at, updated_by_id. Required: id.
- **delete_a_zammad_ticket_priority_by_id** — Delete a Zammad ticket priority by id. This is a permanent removal that cannot be undone; priorities referenced by existing tickets cannot be deleted. Returns an empty 200 response on success. Required: id.
- **list_all_zammad_tags** — List tags attached to a Zammad ticket by object type and id. Returns: tags. Required: object, o_id.
- **zammad_tags_add** — Add a tag to a Zammad ticket object. The tag is created if it does not already exist. Returns: empty response. Required: item, object, o_id.
- **zammad_tags_remove** — Remove a tag from a Zammad ticket object. Returns: empty response. Required: item, object, o_id.
- **list_all_zammad_tag_list** — List all tags in Zammad's administration scope. Returns: id, name, count.
- **create_a_zammad_tag_list** — Create a new tag in Zammad. Required: name. Returns an empty object on success. Returns: empty response.
- **update_a_zammad_tag_list_by_id** — Rename a tag in Zammad by id. Required: id, name. Returns an empty object on success. Returns: empty response.
- **delete_a_zammad_tag_list_by_id** — Delete a tag in Zammad by id. Required: id. Returns an empty object on success. Returns: empty response.
- **list_all_zammad_online_notifications** — List online notifications in Zammad, with optional expand to resolve object references. Returns: id, o_id, object_lookup_id, type_lookup_id, user_id, seen, updated_by_id, created_by_id, created_at, updated_at.
- **get_single_zammad_online_notification_by_id** — Get a single online notification by id in Zammad. Returns: id, o_id, object_lookup_id, type_lookup_id, user_id, seen, updated_by_id, created_by_id, created_at, updated_at. Required: id.
- **update_a_zammad_online_notification_by_id** — Update an online notification's seen status by id in Zammad. Returns: id, o_id, object_lookup_id, type_lookup_id, user_id, seen, updated_by_id, created_by_id, created_at, updated_at. Required: id.
- **delete_a_zammad_online_notification_by_id** — Delete an online notification by id in Zammad. Returns an empty 200 response on success. Required: id.
- **zammad_online_notifications_mark_all_as_read** — Mark all online notifications as read in Zammad. Returns an empty 200 response on success.
- **list_all_zammad_object_manager_attributes** — List all Zammad object manager attributes. Returns: active, created_at, created_by_id, data_option, data_option_new, data_type, display, editable, id, name, object_lookup_id, position, screens, to_config, to_create, to_delete, to_migrate, updated_at, updated_by_id.
- **get_single_zammad_object_manager_attribute_by_id** — Get a single Zammad object manager attribute by id. Returns: active, created_at, created_by_id, data_option, data_option_new, data_type, display, editable, id, name, object_lookup_id, position, screens, to_config, to_create, to_delete, to_migrate, updated_at, updated_by_id. Required: id.
- **create_a_zammad_object_manager_attribute** — Create a new Zammad object manager attribute. Returns: active, created_at, created_by_id, data_option, data_option_new, data_type, display, editable, id, name, object, object_lookup_id, position, screens, to_config, to_create, to_delete, to_migrate, updated_at, updated_by_id. Required: name, object, display, data_type, data_option.
- **update_a_zammad_object_manager_attribute_by_id** — Update a Zammad object manager attribute by id. Returns: active, created_at, created_by_id, data_option, data_option_new, data_type, display, editable, id, name, object_lookup_id, position, screens, to_config, to_create, to_delete, to_migrate, updated_at, updated_by_id. Required: id, data_option. Object type cannot be changed after creation.
- **delete_a_zammad_object_manager_attribute_by_id** — Delete a Zammad object manager attribute by id. Returns an empty 200 response on success. Required: id.
- **zammad_object_manager_attributes_execute_migrations** — Execute pending database migrations for Zammad object manager attributes. Returns an empty 200 response on success. A Zammad restart is mandatory after executing migrations.
- **list_all_zammad_user_access_token** — List user access tokens in Zammad. Returns: permissions, tokens.
- **create_a_zammad_user_access_token** — Create a new user access token in Zammad. Returns the generated API token string, which is provided only once after creation and cannot be retrieved later. Returns: token. Required: name, permission.
- **delete_a_zammad_user_access_token_by_id** — Delete a user access token in Zammad by id. Returns an empty response on success. Required: id.
- **create_a_zammad_data_privacy_task** — Create a Zammad data privacy task to permanently delete a user and related data such as tickets. Returns: id, state, deletable_type, deletable_id, preferences, updated_by_id, created_by_id, created_at, updated_at. Required: deletable_type, deletable_id.
- **get_single_zammad_data_privacy_task_by_id** — Get a Zammad data privacy task by id to check its state and verify completion. Returns: id, state, deletable_type, deletable_id, preferences, updated_by_id, created_by_id, created_at, updated_at. Required: id. Task execution may take some time.
- **list_all_zammad_time_accountings** — List time accounting entries for a Zammad ticket. Returns: created_at, created_by_id, id, ticket_article_id, ticket_id, time_unit, type_id, updated_at. Required: ticket_id.
- **get_single_zammad_time_accounting_by_id** — Get a single time accounting entry for a Zammad ticket by id. Returns: created_at, created_by_id, id, ticket_article_id, ticket_id, time_unit, type_id, updated_at. Required: ticket_id, id.
- **create_a_zammad_time_accounting** — Create a time accounting entry for a Zammad ticket. Returns the created entry including id, ticket_id, ticket_article_id, time_unit, type_id, created_by_id, created_at, and updated_at. Returns: created_at, created_by_id, id, ticket_article_id, ticket_id, time_unit, type_id, updated_at. Required: ticket_id, time_unit.
- **update_a_zammad_time_accounting_by_id** — Update a time accounting entry for a Zammad ticket by id. Returns the updated entry including id, ticket_id, ticket_article_id, time_unit, type_id, created_by_id, created_at, and updated_at. Returns: created_at, created_by_id, id, ticket_article_id, ticket_id, time_unit, type_id, updated_at. Required: ticket_id, id.
- **delete_a_zammad_time_accounting_by_id** — Delete a time accounting entry for a Zammad ticket by id. Returns an empty 200 response on success. Required: ticket_id, id.
- **list_all_zammad_ticket_shared_drafts** — Show the shared draft for a Zammad ticket. Returns: shared_draft_id, assets. Required: ticket_id.
- **create_a_zammad_ticket_shared_draft** — Create or replace a shared draft for a Zammad ticket. Returns: shared_draft_id, assets. Required: ticket_id, form_id.
- **zammad_ticket_shared_drafts_bulk_delete** — Delete the shared draft for a Zammad ticket. Returns: shared_draft_id. Required: ticket_id.
- **list_all_zammad_links** — List ticket links for a specific object in Zammad. Returns: links, assets. Required: link_object, link_object_value.
- **zammad_links_add** — Create a link between two Zammad tickets. Returns: id, link_type_id, link_object_source_id, link_object_source_value, link_object_target_id, link_object_target_value, created_at, updated_at. Required: link_type, link_object_target, link_object_target_value, link_object_source, link_object_source_number. The target value must be a ticket ID; the source number must…
- **zammad_links_remove** — Remove a link between two Zammad tickets. Returns an empty 201 response on success. Required: link_type, link_object_source, link_object_source_value, link_object_target, link_object_target_value. Returns: empty response.
- **list_all_zammad_mentions** — List mentions in Zammad. Returns: mentions.
- **create_a_zammad_mention** — Create a mention in Zammad for the current session user on a mentionable object. Returns true on successful creation. Returns: empty response. Required: mentionable_type, mentionable_id.
- **delete_a_zammad_mention_by_id** — Delete a mention in Zammad by id. Returns: created_at, created_by_id, id, mentionable_id, mentionable_type, updated_at, updated_by_id, user_id. Required: id.
- **zammad_knowledge_bases_init** — Initialize a new knowledge base in Zammad, returning a comprehensive overview of the created knowledge base and all related entities. Returns: KnowledgeBase (id, iconset, color_highlight, active), KnowledgeBaseTranslation, KnowledgeBaseLocale, KnowledgeBaseCategory, KnowledgeBaseCategoryTranslation, KnowledgeBaseAnswer, KnowledgeBaseAnswerTranslation, and User entity collections.
- **get_single_zammad_knowledge_base_by_id** — Get a single Zammad knowledge base by id. Returns the full knowledge base object including id, iconset, color_highlight, color_header, color_header_link, homepage_layout, category_layout, active, show_feed_icon, custom_address, created_at, updated_at, and related entity ID arrays. Required: id.
- **update_a_zammad_knowledge_base_by_id** — Update settings for a Zammad knowledge base by id, such as show_feed_icon and custom_address. Returns the updated knowledge base object including id, iconset, color settings, layout configuration, active status, show_feed_icon, custom_address, created_at, updated_at, and related entity ID arrays. Required: id.
- **zammad_knowledge_bases_get_permissions** — Get the permission configuration for a Zammad knowledge base, including which roles have reader or editor access and any inherited permissions. Returns: roles_reader, roles_editor, permissions, inherited. Required: knowledge_base_id.
- **zammad_knowledge_bases_reorder_root_categories** — Reorder the root-level categories of a Zammad knowledge base by providing the complete ordered list of all top-level category IDs. Returns: KnowledgeBaseCategory, KnowledgeBase, KnowledgeBaseLocale, KnowledgeBaseTranslation, KnowledgeBaseCategoryTranslation. Required: knowledge_base_id, ordered_ids. Must provide the complete order of all top-level categories (categories with no parent).
- **zammad_knowledge_bases_bulk_update** — Update the permission configuration for a Zammad knowledge base by specifying a map of role ids to access levels (editor or reader). Returns: roles_reader, roles_editor, permissions, inherited. Required: knowledge_base_id, permissions_dialog.
- **get_single_zammad_kb_category_by_id** — Get a single Zammad knowledge base category by id. Returns: id, knowledge_base_id, parent_id, category_icon, position, created_at, updated_at, translation_ids, answer_ids, child_ids, permission_ids, permissions_effective. Required: knowledge_base_id, id.
- **create_a_zammad_kb_category** — Create a new Zammad knowledge base category under a specific knowledge base. Returns: id, created_at, updated_at. Required: knowledge_base_id, translations_attributes.
- **update_a_zammad_kb_category_by_id** — Update a Zammad knowledge base category by id, including its icon, parent, and translations. Returns: id, created_at, updated_at. Required: knowledge_base_id, id.

## How it works

1. **Link your customer's Zammad account.** Use Truto's frontend SDK; we handle every OAuth and API key flow so you don't need to create the OAuth app.
2. **Authentication is automatic.** Truto refreshes tokens, stores credentials securely, and injects them into every API request.
3. **Call Truto's API to reach Zammad.** The Proxy API is a 1-to-1 mapping of the Zammad API.
4. **Get a unified response format.** Every response uses a single shape, with cursor-based pagination and data in the `result` field.

## Use cases

- **Sync CRM accounts into Zammad for contextual support** — B2B SaaS platforms can map their customer accounts to Zammad Organizations and Users so support agents see contract tier, ownership, and account metadata inline on every ticket. This eliminates context-switching and helps prioritize VIP customers automatically.
- **Automate HR-driven identity lifecycle in the helpdesk** — HRIS and identity platforms can provision Zammad users on hire, deactivate them on termination, and auto-generate IT provisioning or offboarding tickets. This gives customers a zero-touch bridge between people operations and the service desk.
- **Bill MSP and agency time directly from Zammad** — Invoicing, PSA, and ERP products can pull time accountings per ticket and organization to generate accurate line items for hourly support contracts. Customers get end-of-month billing without agents re-entering hours in a second system.
- **Route DevOps alerts into structured Zammad incidents** — Monitoring and observability SaaS can convert alerts into Zammad tickets with the right priority, group assignment, and article payload containing logs or run context. Existing incidents can be linked so operators see the full blast radius in one place.
- **Power customer health and churn signals from support data** — Customer success and revenue intelligence platforms can search tickets, monitor SLA escalation timestamps, and mention account owners inside Zammad when risk thresholds are hit. This turns support friction into a first-class churn signal for the CS team.

## What you can build

- **Two-way ticket sync** — Create, update, search, and read Zammad tickets and their articles to keep conversations in sync between your product and the helpdesk.
- **Organization and user provisioning** — Push accounts and contacts into Zammad as Organizations and Users, and deactivate or delete them when lifecycle events fire in your platform.
- **Custom field mapping via Object Manager** — Read, create, and update object manager attributes to store your product's proprietary IDs and metadata on Zammad tickets, users, and organizations.
- **Time tracking export for billing** — Pull time accountings per ticket to feed invoicing, payroll, or utilization dashboards without agents leaving Zammad.
- **Tag-based automation and enrichment** — Add and remove tags on tickets from your product to trigger workflows for feature requests, bug IDs, churn risk, or campaign attribution.
- **GDPR right-to-be-forgotten workflows** — Trigger Zammad data privacy tasks programmatically to hard-delete a user and their associated PII when a compliance event fires.

## FAQs

### How does authentication to Zammad work through Truto?

Your end users connect their Zammad instance to Truto, and Truto stores the credentials and instance URL per connected account. Your product calls Truto with a connection identifier and never handles Zammad tokens directly.

### Can we post ticket comments on behalf of a specific Zammad user?

Yes. When creating a ticket article, Zammad supports attributing the article to a specific user rather than the API bot, so integrations can preserve authorship for both agents and end customers.

### How do we handle custom fields defined by each customer's Zammad instance?

Use the object manager attribute endpoints to list existing attributes on tickets, users, and organizations, and create new ones when needed. Zammad requires executing migrations after schema changes, which is also available as an operation.

### Can we search tickets by SLA breach or escalation state?

Yes. Ticket search returns SLA-related fields such as first response and update escalation timestamps, so you can filter or post-process tickets that are at risk of breach and act on them programmatically.

### Is there support for GDPR deletion of Zammad users?

Zammad exposes data privacy tasks, which perform a hard deletion of a user and their associated tickets and PII. You can create and check the status of these tasks through the integration.

### What ticket-adjacent objects can we manage beyond tickets themselves?

The integration covers groups, roles, ticket states, priorities, SLAs, calendars, tags, links, mentions, online notifications, shared drafts, attachments, user access tokens, and knowledge base categories, so you can model the full support workspace and not just the ticket record.

## Related reading

- [Connect Zammad to ChatGPT: Automate Support and Knowledge Bases via MCP](https://truto.one/blog/connect-zammad-to-chatgpt-automate-support-and-knowledge-bases/) — Learn how to connect Zammad to ChatGPT using Truto's managed MCP server. Automate ticket triage, update customer records, and curate knowledge bases with AI.
- [Connect Zammad to Claude: Manage Tickets, SLAs, and Workflows](https://truto.one/blog/connect-zammad-to-claude-manage-tickets-slas-and-workflows/) — Learn how to connect Zammad to Claude using a managed MCP server. This guide covers Zammad-specific API architecture, tool generation, and automated workflows.
- [Connect Zammad to AI Agents: Orchestrate Users, Orgs, and Tickets](https://truto.one/blog/connect-zammad-to-ai-agents-orchestrate-users-orgs-and-tickets/) — Learn how to connect Zammad to AI agents using Truto's /tools endpoint. Build autonomous workflows to manage users, orgs, and tickets with LangChain.
