freshworks Tickets API

Manage helpdesk tickets including creation, updates, assignment, and resolution workflows.

OpenAPI Specification

freshworks-tickets-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Freshworks Freshcaller Accounts Tickets API
  description: The Freshcaller API provides access to cloud-based phone system functionality for contact center operations. It allows developers to export call data, call recordings, user information, and agent team details stored in the Freshcaller system. The API supports integration of voice and telephony workflows into broader business applications, enabling organizations to automate call center reporting, synchronize agent data, and build custom dashboards around their phone operations.
  version: '1.0'
  contact:
    name: Freshworks Support
    url: https://support.freshcaller.com/
  termsOfService: https://www.freshworks.com/terms/
servers:
- url: https://{domain}.freshcaller.com/api/v1
  description: Freshcaller Production Server
  variables:
    domain:
      default: yourdomain
      description: Your Freshcaller subdomain
security:
- apiKeyAuth: []
tags:
- name: Tickets
  description: Manage helpdesk tickets including creation, updates, assignment, and resolution workflows.
paths:
  /tickets:
    get:
      operationId: listTickets
      summary: List all tickets
      description: Retrieves a list of all tickets in the helpdesk. Results can be filtered by various criteria including status, priority, and requester. Supports pagination with a default page size of 30.
      tags:
      - Tickets
      parameters:
      - $ref: '#/components/parameters/PageParam'
      - $ref: '#/components/parameters/PerPageParam'
      - name: filter
        in: query
        description: Pre-defined filter to apply. Options include new_and_my_open, watching, spam, deleted.
        schema:
          type: string
      - name: requester_id
        in: query
        description: Filter tickets by requester ID.
        schema:
          type: integer
      - name: email
        in: query
        description: Filter tickets by requester email.
        schema:
          type: string
          format: email
      - name: updated_since
        in: query
        description: Return tickets updated after this timestamp in UTC format.
        schema:
          type: string
          format: date-time
      - name: order_by
        in: query
        description: Field to sort by.
        schema:
          type: string
          enum:
          - created_at
          - due_by
          - updated_at
          - status
      - name: order_type
        in: query
        description: Sort order direction.
        schema:
          type: string
          enum:
          - asc
          - desc
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Ticket'
        '401':
          $ref: '#/components/responses/Unauthorized'
    post:
      operationId: createTicket
      summary: Create a ticket
      description: Creates a new ticket in the helpdesk. Requires at least a subject, description, and requester identification (email, phone, or requester_id). Supports attachments and custom fields.
      tags:
      - Tickets
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TicketCreate'
      responses:
        '201':
          description: Ticket created successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Ticket'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /tickets/{ticket_id}:
    get:
      operationId: getTicket
      summary: View a ticket
      description: Retrieves the details of a specific ticket by its ID, including all ticket properties and custom fields.
      tags:
      - Tickets
      parameters:
      - $ref: '#/components/parameters/TicketIdParam'
      - name: include
        in: query
        description: Include additional information in the response. Comma-separated values from conversations, requester, company, stats.
        schema:
          type: string
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Ticket'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
    put:
      operationId: updateTicket
      summary: Update a ticket
      description: Updates the properties of an existing ticket. Only the fields included in the request body will be updated.
      tags:
      - Tickets
      parameters:
      - $ref: '#/components/parameters/TicketIdParam'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TicketUpdate'
      responses:
        '200':
          description: Ticket updated successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Ticket'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
    delete:
      operationId: deleteTicket
      summary: Delete a ticket
      description: Soft-deletes a ticket by moving it to the trash. The ticket can be restored later using the restore endpoint.
      tags:
      - Tickets
      parameters:
      - $ref: '#/components/parameters/TicketIdParam'
      responses:
        '204':
          description: Ticket deleted successfully
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
  /tickets/{ticket_id}/restore:
    put:
      operationId: restoreTicket
      summary: Restore a deleted ticket
      description: Restores a previously deleted ticket from the trash.
      tags:
      - Tickets
      parameters:
      - $ref: '#/components/parameters/TicketIdParam'
      responses:
        '204':
          description: Ticket restored successfully
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
components:
  parameters:
    TicketIdParam:
      name: ticket_id
      in: path
      required: true
      description: The ID of the ticket.
      schema:
        type: integer
    PageParam:
      name: page
      in: query
      description: Page number for pagination.
      schema:
        type: integer
        minimum: 1
        default: 1
    PerPageParam:
      name: per_page
      in: query
      description: Number of results per page (max 100).
      schema:
        type: integer
        minimum: 1
        maximum: 100
        default: 30
  responses:
    NotFound:
      description: The requested resource was not found.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    Unauthorized:
      description: Authentication credentials are missing or invalid.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    BadRequest:
      description: The request body or parameters are invalid.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
  schemas:
    Error:
      type: object
      properties:
        description:
          type: string
          description: Human-readable error message.
        errors:
          type: array
          description: List of specific validation errors.
          items:
            type: object
            properties:
              field:
                type: string
                description: Field that caused the error.
              message:
                type: string
                description: Error message for the field.
              code:
                type: string
                description: Error code.
    Ticket:
      type: object
      properties:
        id:
          type: integer
          description: Unique ID of the ticket.
        subject:
          type: string
          description: Subject of the ticket.
        description:
          type: string
          description: HTML content of the ticket description.
        description_text:
          type: string
          description: Plain text content of the ticket description.
        status:
          type: integer
          description: Status of the ticket. 2=Open, 3=Pending, 4=Resolved, 5=Closed.
          enum:
          - 2
          - 3
          - 4
          - 5
        priority:
          type: integer
          description: Priority of the ticket. 1=Low, 2=Medium, 3=High, 4=Urgent.
          enum:
          - 1
          - 2
          - 3
          - 4
        source:
          type: integer
          description: Channel through which the ticket was created. 1=Email, 2=Portal, 3=Phone, 7=Chat, 9=Feedback Widget, 10=Outbound Email.
        type:
          type: string
          description: Type of the ticket.
        requester_id:
          type: integer
          description: ID of the requester who raised the ticket.
        responder_id:
          type: integer
          description: ID of the agent assigned to the ticket.
        group_id:
          type: integer
          description: ID of the group to which the ticket is assigned.
        company_id:
          type: integer
          description: ID of the company associated with the ticket.
        product_id:
          type: integer
          description: ID of the product associated with the ticket.
        email:
          type: string
          format: email
          description: Email address of the requester.
        phone:
          type: string
          description: Phone number of the requester.
        tags:
          type: array
          description: Tags associated with the ticket.
          items:
            type: string
        due_by:
          type: string
          format: date-time
          description: Timestamp indicating when the ticket is due.
        fr_due_by:
          type: string
          format: date-time
          description: Timestamp indicating when the first response is due.
        is_escalated:
          type: boolean
          description: Whether the ticket has been escalated.
        custom_fields:
          type: object
          description: Key-value pairs of custom field values.
          additionalProperties: true
        created_at:
          type: string
          format: date-time
          description: Timestamp when the ticket was created.
        updated_at:
          type: string
          format: date-time
          description: Timestamp when the ticket was last updated.
    TicketUpdate:
      type: object
      properties:
        subject:
          type: string
          description: Subject of the ticket.
        description:
          type: string
          description: HTML content of the ticket description.
        status:
          type: integer
          description: Status of the ticket.
          enum:
          - 2
          - 3
          - 4
          - 5
        priority:
          type: integer
          description: Priority of the ticket.
          enum:
          - 1
          - 2
          - 3
          - 4
        responder_id:
          type: integer
          description: ID of the agent to assign.
        group_id:
          type: integer
          description: ID of the group to assign.
        type:
          type: string
          description: Type of the ticket.
        tags:
          type: array
          items:
            type: string
          description: Tags to associate with the ticket.
        custom_fields:
          type: object
          additionalProperties: true
          description: Key-value pairs for custom fields.
    TicketCreate:
      type: object
      required:
      - subject
      - description
      properties:
        subject:
          type: string
          description: Subject of the ticket.
        description:
          type: string
          description: HTML content of the ticket description.
        email:
          type: string
          format: email
          description: Email of the requester.
        phone:
          type: string
          description: Phone number of the requester.
        requester_id:
          type: integer
          description: ID of the requester.
        status:
          type: integer
          description: Status of the ticket.
          enum:
          - 2
          - 3
          - 4
          - 5
          default: 2
        priority:
          type: integer
          description: Priority of the ticket.
          enum:
          - 1
          - 2
          - 3
          - 4
          default: 1
        source:
          type: integer
          description: Channel through which the ticket was created.
        type:
          type: string
          description: Type of the ticket.
        responder_id:
          type: integer
          description: ID of the agent to assign.
        group_id:
          type: integer
          description: ID of the group to assign.
        product_id:
          type: integer
          description: ID of the associated product.
        company_id:
          type: integer
          description: ID of the associated company.
        tags:
          type: array
          items:
            type: string
          description: Tags to associate with the ticket.
        cc_emails:
          type: array
          items:
            type: string
            format: email
          description: Email addresses to CC on the ticket.
        custom_fields:
          type: object
          additionalProperties: true
          description: Key-value pairs for custom fields.
        parent_id:
          type: integer
          description: ID of the parent ticket to create a child ticket.
  securitySchemes:
    apiKeyAuth:
      type: apiKey
      in: header
      name: X-Api-Auth
      description: API key authentication. The API key can be found in your Freshcaller admin settings.
externalDocs:
  description: Freshcaller API Documentation
  url: https://developers.freshcaller.com/api/