---
title: "Create a new ticket"
method: POST
path: "/api/v1/tickets/"
tags: ["tickets"]
---

# Create a new ticket

`POST /api/v1/tickets/`

Creates a new support ticket in the system

## Request body

- CreateTicketRequest
  - `title` string, required
  - `description` string, nullable
  - `ticket_type` 'request' | 'incident' | 'question', required
  - `priority` 'low' | 'medium' | 'high' | 'urgent', required
  - `source` 'slack' | 'harmony' | 'teams' | 'freshservice' | 'jsm' | 'solarwinds' | 'email' | 'siit'
  - `reporter` string, required
  - `assignee` string, nullable
  - `desk_id` string, required
  - `attachment_ids` string[]
  - `custom_fields` object, nullable — Custom field values for this desk
  - `ticket_metadata` object, nullable — Additional metadata for the ticket
  - `created_at` string, date-time, nullable — Optional creation timestamp. If not provided, current time will be used. Used for preserving original ITSM timestamps during import.
  - `related_asset_ids` string[], nullable — List of asset IDs (UUIDs) to associate with this ticket
  - `publish_events` boolean — Whether to publish domain events for this ticket creation. Set to False to suppress event publishing (useful for bulk imports or migrations). Defaults to True.
  - `thread_id` string, uuid, nullable — Optional thread ID to associate with this ticket. If not provided a new thread will be created.

## Response `201`

Successful Response

- TicketDetailResponse
  - `id` string, required
  - `title` string, required
  - `description` string, nullable
  - `ticket_type` 'request' | 'incident' | 'question', required
  - `priority` 'low' | 'medium' | 'high' | 'urgent', required
  - `source` 'slack' | 'harmony' | 'teams' | 'freshservice' | 'jsm' | 'solarwinds' | 'email' | 'siit', required
  - `status` 'open' | 'in_progress' | 'pending' | 'pending_reporter' | 'pending_approval' | 'pending_internal_team' | 'pending_third_party' | 'resolved' | 'closed' | 'canceled', required
  - `reporter` string, required
  - `created_by` string, required
  - `assignee` string, nullable
  - `desk_id` string, required
  - `subdesk_id` string, required
  - `created_at` string, date-time, required
  - `updated_at` string, date-time, required
  - `custom_fields` object, nullable, required — Custom field values for the current desk
  - `ticket_metadata` object, nullable — Additional metadata for the ticket
  - `kb_resolution` KBResolutionResponse — Knowledge base resolution suggestion for a ticket.
    - `answer_summary` string, required — 2-3 sentence summary of the suggested resolution
    - `sources` KBSourceResponse[] — Source citations for the resolution
      - `url` string, required — URL of the source document
      - `title` string, nullable — Title of the source document
    - `chunks_count` integer, required — Number of KB chunks used to generate the resolution
    - `confidence` number, nullable — Confidence score for the KB answer (0.0-1.0)
    - `queried_at` string, date-time, required — Timestamp when the KB was queried
  - `workflows` WorkflowMetadata[] — Workflows that match this ticket
    - `workflow_id` string, required — Workflow instance ID
    - `name` string, required — Workflow name
    - `description` string, nullable — Workflow description
    - `workflow_target` string, nullable — Workflow template ID (e.g., 'app-access', 'idp-password-reset')
  - `tags` TagResponse[]
    - `id` integer, required
    - `desk_id` string, required
    - `name` string, required
    - `color` string, nullable
    - `description` string, nullable
    - `system_tag` boolean, nullable
    - `created_at` string, date-time, required
    - `updated_at` string, date-time, required
  - `related_asset_ids` string[], nullable — List of asset IDs (UUIDs) associated with this ticket
  - `thread_id` string, uuid, nullable — Thread ID for the ticket conversation
  - `response_sla_deadline` string, date-time, nullable
  - `response_sla_completed_at` string, date-time, nullable
  - `resolution_sla_deadline` string, date-time, nullable
  - `resolution_sla_completed_at` string, date-time, nullable
  - `watchers` WatcherResponse[]
    - `id` integer, required
    - `watcher_id` string, required
    - `notification_reply_id` string, uuid, nullable, required
    - `created_at` string, date-time, required
    - `updated_at` string, date-time, required
  - `attachments` AttachmentResponse[]
    - `id` string, required
    - `filename` string, required
    - `content_type` string, required
    - `file_size` integer, required
    - `upload_status` 'pending' | 'uploaded' | 'failed', required
    - `created_at` string, date-time, required
    - `updated_at` string, date-time, required

## Other responses

- `422` — Validation Error

---

[API](https://skmtc.net/harmony/apis/service-desk.md) · [All operations](https://skmtc.net/harmony/apis/service-desk/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/harmony/service-desk/revisions/abcdc6e980f3/schema)
