---
title: "Create Ticket"
method: POST
path: "/api/v2/tickets"
tags: ["Tickets"]
---

# Create Ticket

`POST /api/v2/tickets`

## Request body

- TicketCreateRequest
  - `ticket` TicketCreateInput
    - `additional_collaborators` CollaboratorObject[] — An array of numeric IDs, emails, or objects containing name and email properties. See [Setting Collaborators](/api-reference/ticketing/tickets/tickets/#setting-collaborators). An email notification is sent to them when the ticket is updated
      - `email` string, email
      - `name` string
    - `assignee_email` string, email — The email address of the agent to assign the ticket to
    - `assignee_id` integer — The agent currently assigned to the ticket
    - `attribute_value_ids` integer[] — An array of the IDs of attribute values to be associated with the ticket
    - `collaborator_ids` integer[] — The ids of users currently CC'ed on the ticket
    - `comment` TicketCommentObject, required
      - `attachments` AttachmentObject[] — Attachments, if any. See [Attachment](/api-reference/ticketing/tickets/ticket-attachments/)
        - `content_type` string — The content type of the image. Example value: "image/png"
        - `content_url` string — A full URL where the attachment image file can be downloaded. The file may be hosted externally so take care not to inadvertently send Zendesk authentication credentials. See [Working with url properties](/documentation/ticketing/managing-tickets/working-with-url-properties)
        - `deleted` boolean — If true, the attachment has been deleted
        - `file_name` string — The name of the image file
        - `height` integer — The height of the image file in pixels. If height is unknown, returns null
        - `id` integer — Automatically assigned when created
        - `inline` boolean — If true, the attachment is excluded from the attachment list and the attachment's URL can be referenced within the comment of a ticket. Default is false
        - `malware_access_override` boolean — If true, you can download an attachment flagged as malware. If false, you can't download such an attachment.
        - `malware_scan_result` string — The result of the malware scan. There is a delay between the time the attachment is uploaded and when the malware scan is completed. Usually the scan is done within a few seconds, but high load conditions can delay the scan results. Possible values: "malware_found", "malware_not_found", "failed_to_scan", "not_scanned"
        - `mapped_content_url` string — The URL the attachment image file has been mapped to
        - `size` integer — The size of the image file in bytes
        - `url` string — A URL to access the attachment details
        - `width` integer — The width of the image file in pixels. If width is unknown, returns null
        - `thumbnails` AttachmentBaseObject[] — An array of attachment objects. Note that photo thumbnails do not have thumbnails
          - `content_type` string — The content type of the image. Example value: "image/png"
          - `content_url` string — A full URL where the attachment image file can be downloaded. The file may be hosted externally so take care not to inadvertently send Zendesk authentication credentials. See [Working with url properties](/documentation/ticketing/managing-tickets/working-with-url-properties)
          - `deleted` boolean — If true, the attachment has been deleted
          - `file_name` string — The name of the image file
          - `height` integer — The height of the image file in pixels. If height is unknown, returns null
          - `id` integer — Automatically assigned when created
          - `inline` boolean — If true, the attachment is excluded from the attachment list and the attachment's URL can be referenced within the comment of a ticket. Default is false
          - `malware_access_override` boolean — If true, you can download an attachment flagged as malware. If false, you can't download such an attachment.
          - `malware_scan_result` string — The result of the malware scan. There is a delay between the time the attachment is uploaded and when the malware scan is completed. Usually the scan is done within a few seconds, but high load conditions can delay the scan results. Possible values: "malware_found", "malware_not_found", "failed_to_scan", "not_scanned"
          - `mapped_content_url` string — The URL the attachment image file has been mapped to
          - `size` integer — The size of the image file in bytes
          - `url` string — A URL to access the attachment details
          - `width` integer — The width of the image file in pixels. If width is unknown, returns null
      - `audit_id` integer — The id of the ticket audit record. See [Show Audit](/api-reference/ticketing/tickets/ticket_audits/#show-audit)
      - `author_id` integer — The id of the comment author. See [Author id](#author-id)
      - `body` string — The comment string. See [Bodies](#bodies)
      - `created_at` string, date-time — The time the comment was created
      - `html_body` string — The comment formatted as HTML. See [Bodies](#bodies)
      - `id` integer — Automatically assigned when the comment is created
      - `metadata` object — System information (web client, IP address, etc.) and comment flags, if any. See [Comment flags](#comment-flags)
      - `plain_body` string — The comment presented as plain text. See [Bodies](#bodies)
      - `public` boolean — true if a public comment; false if an internal note. The initial value set on ticket creation persists for any additional comment unless you change it
      - `type` string — `Comment` or `VoiceComment`. The JSON object for adding voice comments to tickets is different. See [Adding voice comments to tickets](/documentation/ticketing/managing-tickets/adding-voice-comments-to-tickets)
      - `uploads` string[] — List of tokens received from [uploading files](/api-reference/ticketing/tickets/ticket-attachments/#upload-files) for comment attachments. The files are attached by creating or updating tickets with the tokens. See [Attaching files](/api-reference/ticketing/tickets/tickets/#attaching-files) in Tickets
      - `via` TicketAuditViaObject — Describes how the object was created. See the [Via object reference](/documentation/ticketing/reference-guides/via-object-reference)
        - `channel` string — This tells you how the ticket or event was created. Examples: "web", "mobile", "rule", "system"
        - `source` object — For some channels a source object gives more information about how or why the ticket or event was created
    - `custom_fields` object[] — Custom fields for the ticket. See [Setting custom field values](/documentation/ticketing/managing-tickets/creating-and-updating-tickets#setting-custom-field-values)
      - `id` integer — The id of the custom field
      - `value` union — The value of the custom field
        - string
        - integer
        - boolean
        - string[]
        - number
    - `custom_status_id` integer — The custom ticket status id of the ticket. See [custom ticket statuses](#custom-ticket-statuses)
    - `due_at` string, date-time, nullable — If this is a ticket of type "task" it has a due date. Due date format uses [ISO 8601](http://en.wikipedia.org/wiki/ISO_8601) format.
    - `email_ccs` EmailCCObject[] — An array of objects that represent agent or end users email CCs to add or delete from the ticket. See [Setting email CCs](/documentation/ticketing/managing-tickets/creating-and-updating-tickets#setting-email-ccs)
      - `action` 'put' | 'delete'
      - `user_email` string, email
      - `user_id` string
      - `user_name` string
    - `external_id` string — An id you can use to link Zendesk Support tickets to local records
    - `followers` FollowerObject[] — An array of objects that represent agent followers to add or delete from the ticket. See [Setting followers](/documentation/ticketing/managing-tickets/creating-and-updating-tickets#setting-followers)
      - `action` 'put' | 'delete'
      - `user_email` string, email
      - `user_id` string
    - `group_id` integer — The group this ticket is assigned to
    - `organization_id` integer — The organization of the requester. You can only specify the ID of an organization associated with the requester. See [Organization Memberships](/api-reference/ticketing/organizations/organization_memberships/)
    - `priority` 'urgent' | 'high' | 'normal' | 'low' — The urgency with which the ticket should be addressed.
    - `problem_id` integer — For tickets of type "incident", the ID of the problem the incident is linked to
    - `requester_id` integer — The user who requested this ticket
    - `safe_update` boolean — Optional boolean. Prevents updates with outdated ticket data (`updated_stamp` property required when true)
    - `sharing_agreement_ids` integer[] — An array of the numeric IDs of sharing agreements. Note that this replaces any existing agreements
    - `status` 'new' | 'open' | 'pending' | 'hold' | 'solved' | 'closed' — The state of the ticket. If your account has activated custom ticket statuses, this is the ticket's status category. See [custom ticket statuses](#custom-ticket-statuses).
    - `subject` string — The value of the subject field for this ticket
    - `tags` string[] — The array of tags applied to this ticket
    - `type` 'problem' | 'incident' | 'question' | 'task' — The type of this ticket.
    - `updated_stamp` string, date-time — Datetime of last update received from API. See the safe_update property
    - `brand_id` integer — Enterprise only. The id of the brand this ticket is associated with
    - `collaborators` CollaboratorObject[] — POST requests only. Users to add as cc's when creating a ticket. See [Setting Collaborators](/documentation/ticketing/managing-tickets/creating-and-updating-tickets#setting-collaborators)
      - `email` string, email
      - `name` string
    - `email_cc_ids` integer[] — The ids of agents or end users currently CC'ed on the ticket. See [CCs and followers resources](https://support.zendesk.com/hc/en-us/articles/360020585233) in the Support Help Center
    - `follower_ids` integer[] — The ids of agents currently following the ticket. See [CCs and followers resources](https://support.zendesk.com/hc/en-us/articles/360020585233)
    - `macro_ids` integer[] — POST requests only. List of macro IDs to be recorded in the ticket audit
    - `raw_subject` string — The dynamic content placeholder, if present, or the "subject" value, if not. See [Dynamic Content Items](/api-reference/ticketing/ticket-management/dynamic_content/)
    - `recipient` string — The original recipient e-mail address of the ticket
    - `submitter_id` integer — The user who submitted the ticket. The submitter always becomes the author of the first comment on the ticket
    - `ticket_form_id` integer — Enterprise only. The id of the ticket form to render for the ticket
    - `via` ViaObject — An object explaining how the ticket was created. See the [Via object reference](/documentation/ticketing/reference-guides/via-object-reference)
      - `channel` string — This tells you how the ticket or event was created. Examples: "web", "mobile", "rule", "system"
      - `source` object — For some channels a source object gives more information about how or why the ticket or event was created
        - `from` object
          - `address` string, nullable
          - `id` integer, nullable
          - `name` string, nullable
          - `title` string, nullable
        - `rel` string, nullable
        - `to` object
          - `address` string
          - `name` string
    - `via_followup_source_id` integer — POST requests only. The id of a closed ticket when creating a follow-up ticket. See [Creating a follow-up ticket](/documentation/ticketing/managing-tickets/creating-and-updating-tickets#creating-a-follow-up-ticket)

## Response `201`

Create ticket

- TicketResponse
  - `ticket` TicketObject
    - `allow_attachments` boolean — Permission for agents to add add attachments to a comment. Defaults to true
    - `allow_channelback` boolean — Is false if channelback is disabled, true otherwise. Only applicable for channels framework ticket
    - `assignee_email` string — Write only. The email address of the agent to assign the ticket to
    - `assignee_id` integer — The agent currently assigned to the ticket
    - `attribute_value_ids` integer[] — Write only. An array of the IDs of attribute values to be associated with the ticket
    - `brand_id` integer — The id of the brand this ticket is associated with. See [Setting up multiple brands](https://support.zendesk.com/hc/en-us/articles/4408829476378)
    - `collaborator_ids` integer[] — The ids of users currently CC'ed on the ticket
    - `collaborators` CollaboratorObject[] — POST requests only. Users to add as cc's when creating a ticket. See [Setting Collaborators](/documentation/ticketing/managing-tickets/creating-and-updating-tickets#setting-collaborators)
      - `email` string, email
      - `name` string
    - `comment` object — Write only. An object that adds a comment to the ticket. See [Ticket comments](/api-reference/ticketing/tickets/ticket_comments/). To include an attachment with the comment, see [Attaching files](/documentation/ticketing/managing-tickets/creating-and-updating-tickets/#attaching-files). A ticket can contain up to 5000 comments in total, including both public and private comments. Once this limit is reached, any additional attempts to add comments results in a 422 error. The ticket can still be updated in other ways, provided that no new comments are added.
    - `created_at` string, date-time — When this record was created
    - `custom_fields` object[] — Custom fields for the ticket. See [Setting custom field values](/documentation/ticketing/managing-tickets/creating-and-updating-tickets#setting-custom-field-values)
      - `id` integer — The id of the custom field
      - `value` union — The value of the custom field
        - string
        - integer
        - boolean
        - string[]
        - number
    - `custom_status_id` integer — The custom ticket status id of the ticket. See [custom ticket statuses](#custom-ticket-statuses)
    - `description` string — Read-only first comment on the ticket. When [creating a ticket](#create-ticket), use `comment` to set the description. See [Description and first comment](#description-and-first-comment)
    - `due_at` string, date-time, nullable — If this is a ticket of type "task" it has a due date. Due date format uses [ISO 8601](http://en.wikipedia.org/wiki/ISO_8601) format
    - `email_cc_ids` integer[] — The ids of agents or end users currently CC'ed on the ticket. Ignored when [CCs and followers](https://support.zendesk.com/hc/en-us/articles/360020585233) is not enabled
    - `email_ccs` object — Write only. An array of objects that represents agent or end users email CCs to add or delete from the ticket. See [Setting email CCs](/documentation/ticketing/managing-tickets/creating-and-updating-tickets/#setting-email-ccs). Ignored when [CCs and followers](https://support.zendesk.com/hc/en-us/articles/360020585233) is not enabled
    - `external_id` string — An id you can use to link Zendesk Support tickets to local records
    - `follower_ids` integer[] — The ids of agents currently following the ticket. Ignored when [CCs and followers](https://support.zendesk.com/hc/en-us/articles/360020585233) is not enabled
    - `followers` object — Write only. An array of objects that represents agent followers to add or delete from the ticket. See [Setting followers](/documentation/ticketing/managing-tickets/creating-and-updating-tickets/#setting-followers). Ignored when [CCs and followers](https://support.zendesk.com/hc/en-us/articles/360020585233) is not enabled
    - `followup_ids` integer[] — The ids of the followups created from this ticket. Ids are only visible once the ticket is closed
    - `forum_topic_id` integer — The topic in the Zendesk Web portal this ticket originated from, if any. The Web portal is deprecated
    - `from_messaging_channel` boolean — If true, the ticket's [via type](/documentation/ticketing/reference-guides/via-object-reference/) is a messaging channel.
    - `generated_timestamp` integer — A Unix timestamp that represents the most accurate reading of when this record was last updated. It is updated for all ticket updates, including system updates
    - `group_id` integer — The group this ticket is assigned to
    - `has_incidents` boolean — Is true if a ticket is a problem type and has one or more incidents linked to it. Otherwise, the value is false.
    - `id` integer — Automatically assigned when the ticket is created
    - `is_public` boolean — Is true if any comments are public, false otherwise
    - `macro_id` integer — Write only. A macro ID to be recorded in the ticket audit
    - `macro_ids` integer[] — POST requests only. List of macro IDs to be recorded in the ticket audit
    - `metadata` object — Write only. Metadata for the audit. In the `audit` object, the data is specified in the `custom` property of the `metadata` object. See [Setting Metadata](/documentation/ticketing/managing-tickets/creating-and-updating-tickets/#setting-metadata)
    - `organization_id` integer — The organization of the requester. You can only specify the ID of an organization associated with the requester. See [Organization Memberships](/api-reference/ticketing/organizations/organization_memberships/)
    - `priority` 'urgent' | 'high' | 'normal' | 'low' — The urgency with which the ticket should be addressed
    - `problem_id` integer — For tickets of type "incident", the ID of the problem the incident is linked to
    - `raw_subject` string — The dynamic content placeholder, if present, or the "subject" value, if not. See [Dynamic Content Items](/api-reference/ticketing/ticket-management/dynamic_content/)
    - `recipient` string — The original recipient e-mail address of the ticket. Notification emails for the ticket are sent from this address
    - `requester` object — Write only. See [Creating a ticket with a new requester](/documentation/ticketing/managing-tickets/creating-and-updating-tickets/#creating-a-ticket-with-a-new-requester)
    - `requester_id` integer, required — The user who requested this ticket
    - `safe_update` boolean — Write only. Optional boolean. When true and an `update_stamp` date is included, protects against ticket update collisions and returns a message to let you know if one occurs. See [Protecting against ticket update collisions](/documentation/ticketing/managing-tickets/creating-and-updating-tickets/#protecting-against-ticket-update-collisions). A value of false has the same effect as true. Omit the property to force the updates to not be safe
    - `satisfaction_rating` object — The satisfaction rating of the ticket, if it exists, or the state of satisfaction, "offered" or "unoffered". The value is null for plan types that don't support CSAT
    - `sharing_agreement_ids` integer[] — The ids of the sharing agreements used for this ticket
    - `status` 'new' | 'open' | 'pending' | 'hold' | 'solved' | 'closed' — The state of the ticket. If your account has activated custom ticket statuses, this is the ticket's status category. See [custom ticket statuses](#custom-ticket-statuses)
    - `subject` string — The value of the subject field for this ticket. See [Subject](/api-reference/ticketing/tickets/tickets/#subject)
    - `submitter_id` integer — The user who submitted the ticket. The submitter always becomes the author of the first comment on the ticket
    - `tags` string[] — The array of tags applied to this ticket. Unless otherwise specified, the [set tag](/api-reference/ticketing/ticket-management/tags/#set-tags) behavior is used, which overwrites and replaces existing tags
    - `ticket_form_id` integer — Enterprise only. The id of the ticket form to render for the ticket
    - `type` 'problem' | 'incident' | 'question' | 'task' — The type of this ticket
    - `updated_at` string, date-time — When this record last got updated. It is updated only if the update generates a [ticket event](#incremental-ticket-event-export)
    - `updated_stamp` string — Write only. Datetime of last update received from API. See the `safe_update` property
    - `url` string — The API url of this ticket
    - `via` object — For more information, see the [Via object reference](/documentation/ticketing/reference-guides/via-object-reference)
      - `channel` string — This tells you how the ticket or event was created. Examples: "web", "mobile", "rule", "system"
      - `source` object — For some channels a source object gives more information about how or why the ticket or event was created
    - `via_followup_source_id` integer — POST requests only. The id of a closed ticket when creating a follow-up ticket. See [Creating a follow-up ticket](/documentation/ticketing/managing-tickets/creating-and-updating-tickets#creating-a-follow-up-ticket)
    - `via_id` integer — Write only. For more information, see the [Via object reference](/documentation/ticketing/reference-guides/via-object-reference/)
    - `voice_comment` object — Write only. See [Creating voicemail ticket](/api-reference/voice/talk-partner-edition-api/reference/#creating-voicemail-tickets)

## Changes

> 29 revisions in range; 1 not diffed.

- **2025-12-09** `ac78d8660e75` — 1 breaking, 1 info
  - response property `ticket/custom_fields/items/value` list-of-types was widened by adding types `number` to media type `application/json` of response `201`
  - request property `ticket/allOf[#/components/schemas/TicketUpdateInput]/custom_fields/items/value` list-of-types was widened by adding types `number` to media type `application/json`
- **2025-12-09** `1690b37f3321` — 1 breaking, 1 info
  - response property `ticket/custom_fields/items/value` list-of-types was widened by adding types `array` to media type `application/json` of response `201`
  - request property `ticket/allOf[#/components/schemas/TicketUpdateInput]/custom_fields/items/value` list-of-types was widened by adding types `array` to media type `application/json`
- **2025-12-09** `7d50c5ac9276` — 1 info
  - request property `ticket/allOf[#/components/schemas/TicketUpdateInput]/custom_fields/items/value` list-of-types was widened by adding types `boolean and integer` to media type `application/json`
- **2025-12-09** `64859fd9c8bf` — 2 breaking
  - the response property `ticket/custom_fields/items/value` became nullable for the status `201`
  - response property `ticket/custom_fields/items/value` list-of-types was widened by adding types `boolean and integer` to media type `application/json` of response `201`
- …earlier changes not shown

[Full history](https://skmtc.dev/botbrains-io/apis/support-api/changes/api/v2/tickets/post.md)

---

[API](https://skmtc.dev/botbrains-io/apis/support-api.md) · [All operations](https://skmtc.dev/botbrains-io/apis/support-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/botbrains-io/support-api/revisions/d53eac07ba68/schema)
