Use the Zendesk QA Import API to import customer conversations for review and analysis. Zendesk QA is available with the Quality Assurance (QA) or Workforce Engagement Management (WEM) add-on.

Prerequisites

Before importing conversations:

  1. Set up an API connection in your Zendesk QA account.
  2. Copy the API token generated by the connection.

Importing conversations

Send a POST request to:

https://{subdomain}.zendesk.com/qa/api/import/tickets

Include a JSON body with a data array containing the conversations to import. The API connection provides an API token. Pass this token as a bearer token in the Authorization header.

You can import up to 100 conversations per request and up to 500 comments per conversation. For the complete request and response schema, see Import tickets.

Each conversation can include the following properties:

FieldTypeRequiredDescription
idStringYesUnique id from your system. Use this id to update the conversation or its comments later.
subjectStringNoConversation subject displayed in Zendesk QA.
descriptionStringNoDescription of the initial issue or topic.
createdStringYesISO 8601 timestamp for when the conversation was created. For example, 2026-10-01T14:00:00Z.
updatedStringNoISO 8601 timestamp of the last update. Used for filtering.
assigneeEmailStringConditionalEmail of the internal Zendesk QA user assigned to the conversation. The email must match an internal user for the conversation to be reviewable unless a comment author matches an internal user.
assigneeNameStringNoDisplay name of the assignee.
ticketFieldsArrayNoArray of ticket field objects used for filtering. Each object includes a field id, label, and one or more values.
commentsArrayYesArray of comment objects representing messages in the conversation.

Comment object properties

FieldTypeRequiredDescription
idStringYesUnique id for the comment.
authorEmailStringYesEmail address of the comment author. If it matches an internal user, the comment can make the conversation reviewable.
authorNameStringNoDisplay name of the comment author.
authorIsNotClientBooleanYesSet to true for comments written by an agent or other internal user. Set to false for comments written by a customer. When set to true, unknown author emails are created as external users.
commentStringYesComment text. Supports Markdown and HTML formatting.
createdStringYesISO 8601 timestamp for when the comment was created.

Example payload

Save the following JSON body as payload.json:

{  "data": [    {      "id": "c4t-syst3m-335",      "subject": "Question about my order",      "description": "I received the wrong item. Can you help?",      "created": "2026-10-01T11:24:51Z",      "updated": "2026-10-01T13:48:26Z",      "assigneeEmail": "[email protected]",      "assigneeName": "Jane",      "ticketFields": [        {          "id": "channel",          "label": "Channel",          "values": [            {              "label": "Chat",              "value": "chat"            }          ]        }      ],      "comments": [        {          "id": "c4t-syst3m-335-1",          "authorEmail": "[email protected]",          "authorIsNotClient": false,          "authorName": "Customer",          "comment": "I received the wrong item. Can you help?",          "created": "2026-10-01T11:24:51Z"        },        {          "id": "c4t-syst3m-335-2",          "authorEmail": "[email protected]",          "authorIsNotClient": true,          "authorName": "Jane",          "comment": "I'll look into your order and get back to you.",          "created": "2026-10-01T11:29:16Z"        }      ]    }  ]}

Sending the request

From the directory containing payload.json, export the API token as an environment variable:

export QA_API_TOKEN='your_api_token'

Replace {subdomain} with your Zendesk subdomain, then run the following command:

curl --request POST 'https://{subdomain}.zendesk.com/qa/api/import/tickets' \  --header 'Accept: application/json' \  --header 'Content-Type: application/json' \  --header "Authorization: Bearer ${QA_API_TOKEN}" \  --data-binary @payload.json

After the import is processed, you can view and review the conversation in Zendesk QA. For more information, see the Zendesk QA Import API reference.