---
title: "Sync Ticket to Channel"
method: POST
path: "/v2/tickets/{ticket_id}/sync"
tags: ["Ticket API"]
---

# Sync Ticket to Channel

`POST /v2/tickets/{ticket_id}/sync`

Sync an existing Serval ticket to a channel by creating an external ticket in that channel and establishing ongoing bidirectional sync. Supports ticket sources (Jira, Linear, ServiceNow, etc.) and direct messaging channels (Slack DM, Email).

## Path parameters

- `ticket_id` string, required — The Serval ticket ID to sync

## Request body

- object
  - `channelTarget` union — Unified channel target that works across all syncing scenarios. This is used by SyncTicketToChannel and ConnectTicketToExternalTicket endpoints.
    - object
      - `email` SvhelpPubapimodelsEmailChannelTarget, required — For Email channels - uses team email config (no integration needed)
        - `targetUserType` 'CHANNEL_SYNC_USER_TYPE_UNSPECIFIED' | 'CHANNEL_SYNC_TARGET_USER_TICKET_ASSIGNEE' | 'CHANNEL_SYNC_TARGET_USER_TICKET_REQUESTOR'
    - object
      - `slackChannel` SvhelpPubapimodelsSlackChannelTarget, required — For Slack channels (public or private) - link a ticket to a thread in a Slack channel. The channel must already be connected to Serval (i.e., Serval bot is in the channel and the channel is configured with a non-disabled mode).
        - `integrationId` string — Integration ID that identifies the Slack app instance
        - `channelId` string — The Slack channel ID (e.g., "C1234567890" for public, "G1234567890" for private)
    - object
      - `slackDm` SvhelpPubapimodelsSlackDMChannelTarget, required — For Slack DM channels - need to specify which user to sync to
        - `integrationId` string — Integration ID that identifies the Slack app instance
        - `targetUserType` 'CHANNEL_SYNC_USER_TYPE_UNSPECIFIED' | 'CHANNEL_SYNC_TARGET_USER_TICKET_ASSIGNEE' | 'CHANNEL_SYNC_TARGET_USER_TICKET_REQUESTOR'
    - object
      - `ticketSource` SvhelpPubapimodelsTicketSourceChannelTarget, required — For ticket source channels (Jira, ServiceNow, Linear, Zendesk, Freshservice, etc.)
        - `ticketSourceId` string — The ticket source ID from svflow - identifies which external system Deprecated: Use integration_id instead
        - `integrationId` string — The integration ID - identifies which external system/integration to sync to

## Response `200`

Success

- SvhelpPublicapiSyncTicketToChannelResponse

## Other responses

- `default` — Error

---

[API](https://skmtc.net/serval/apis/serval-public-api.md) · [All operations](https://skmtc.net/serval/apis/serval-public-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/serval/serval-public-api/versions/0549515e9384/schema)
