---
title: "Search Tickets"
method: POST
path: "/v2/tickets/search"
tags: ["Ticket API"]
---

# Search Tickets

`POST /v2/tickets/search`

Search tickets with filters. Supports filtering by team, assignment, status, escalation level, and time range.

## Request body

- SvhelpPublicapiSearchTicketsRequest
  - `teamIds` string[] — Optional. Filter to specific teams. If not provided, searches all accessible teams.
  - `assignedToUserIds` string[] — Optional. Only return tickets assigned to any of these users.
  - `requesterUserIds` string[] — Optional. Only return tickets requested by any of these users.
  - `statusIds` string[] — Optional. Filter by status IDs. Returns tickets matching ANY of the specified statuses.
  - `escalationLevels` SvhelpModelsTicketEscalationLevel[] — Optional. Filter by escalation levels. Returns tickets matching ANY of the specified levels.
  - `createdAfter` string, date-time — A timestamp in RFC 3339 format (e.g., "2025-01-15T01:30:15Z").
  - `createdBefore` string, date-time — A timestamp in RFC 3339 format (e.g., "2025-01-15T01:30:15Z").
  - `pageSize` integer, nullable — Maximum number of results to return. Default is 1000, maximum is 5000.
  - `pageToken` string, nullable — Token for pagination. Leave empty for the first request.

## Response `200`

Success

- SvhelpPublicapiSearchTicketsResponse
  - `data` SvhelpPubapimodelsTicket[]
    - `id` string — The ID of the Serval ticket.
    - `friendlyIdentifier` string — A friendly identifier for the ticket. This is a unique identifier for the ticket that is displayed to the user. It is a combination of the team prefix (configured in Settings > Organization Settings > Teams) and the ticket number. Example: For the Acme team's 10th ticket, the friendly identifier is "ACM-10".
    - `teamId` string — The ID of the team that the ticket belongs to.
    - `name` string — A name or title for the ticket.
    - `description` string — A description of the ticket.
    - `createdAt` string, date-time — A timestamp in RFC 3339 format (e.g., "2025-01-15T01:30:15Z").
    - `completedAt` string, date-time — A timestamp in RFC 3339 format (e.g., "2025-01-15T01:30:15Z").
    - `escalatedAt` string, date-time — A timestamp in RFC 3339 format (e.g., "2025-01-15T01:30:15Z").
    - `createdByUserId` string — The ID of the user who created the ticket.
    - `assignedToUserId` string, nullable — The ID of the user who is assigned to the ticket. Optional if the ticket is not assigned to a user.
    - `requesterUserId` string — The ID of the user this ticket was created on behalf of (the requester).
    - `statusId` string — The ID of the status option for the ticket.
    - `escalationLevel` 'AI' | 'HUMAN'
    - `priorityId` string — The ID of the priority option for the ticket.
    - `slaStartedAt` string, date-time — A timestamp in RFC 3339 format (e.g., "2025-01-15T01:30:15Z").
    - `slaBreachesAt` string, date-time — A timestamp in RFC 3339 format (e.g., "2025-01-15T01:30:15Z").
    - `labelIds` string[] — List of label IDs for the ticket.
    - `type` 'TICKET_TYPE_UNSPECIFIED' | 'TICKET_TYPE_REQUEST' | 'TICKET_TYPE_TASK' | 'TICKET_TYPE_MAJOR_INCIDENT' | 'TICKET_TYPE_CONVERSATION' | 'TICKET_TYPE_JOURNEY' | 'TICKET_TYPE_JOURNEY_CONVERSATION' | 'TICKET_TYPE_INCIDENT' | 'TICKET_TYPE_CHANGE' | 'TICKET_TYPE_CUSTOM'
    - `dueDate` GoogleTypeDate — Represents a whole or partial calendar date, such as a birthday. The time of day and time zone are either specified elsewhere or are insignificant. The date is relative to the Gregorian Calendar. This can represent one of the following: * A full date, with non-zero year, month, and day values. * A month and day, with a zero year (for example, an anniversary). * A year on its own, with a zero month and a zero day. * A year and month, with a zero day (for example, a credit card expiration date). Related types: * [google.type.TimeOfDay][google.type.TimeOfDay] * [google.type.DateTime][google.type.DateTime] * [google.protobuf.Timestamp][google.protobuf.Timestamp]
      - `year` integer — Year of the date. Must be from 1 to 9999, or 0 to specify a date without a year.
      - `month` integer — Month of a year. Must be from 1 to 12, or 0 to specify a year without a month and day.
      - `day` integer — Day of a month. Must be from 1 to 31 and valid for the year and month, or 0 to specify a year by itself or a year and month where the day isn't significant.
    - `isOverdue` boolean — True if the due date has passed (computed server-side).
    - `childTicketIds` string[] — IDs of child (task) tickets under this ticket.
    - `linkedTicketIds` string[] — IDs of tickets linked to this ticket.
    - `duplicateTicketIds` string[] — IDs of tickets marked as duplicates of this ticket.
    - `dependsOnTicketIds` string[] — IDs of tickets that this ticket depends on.
    - `parentTicketId` string, nullable — The ID of this ticket's parent ticket. Only set for task tickets that have a parent.
    - `conversationThreadTicketIds` string[] — IDs of conversation thread tickets on this ticket.
    - `conversationThreadParentTicketId` string, nullable — The ID of the main ticket this thread belongs to. Only set for conversation thread tickets.
    - `nameTranslations` object — Per-language translations for the ticket name. Key = BCP 47 language code.
    - `descriptionTranslations` object — Per-language translations for the ticket description. Key = BCP 47 language code.
    - `categoryOptionId` string, nullable — The ID of the category option currently set on the ticket. May be a top-level category or a nested subcategory. Absent when the ticket has no category.
  - `nextPageToken` string, nullable — Token for retrieving the next page of results. Empty if no more results.

## 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)
