freshdesk Agents API

Manage support agents and their properties.

OpenAPI Specification

freshdesk-agents-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Freshdesk REST Agents API
  description: The Freshdesk REST API (v2) provides programmatic access to helpdesk data and operations within Freshdesk, a customer support platform by Freshworks. It exposes endpoints for managing tickets, contacts, companies, agents, groups, conversations, products, email configurations, SLA policies, business hours, time entries, satisfaction ratings, solution categories, solution folders, solution articles, and more. The API uses JSON for request and response payloads, supports API key-based authentication, and follows RESTful conventions for CRUD operations.
  version: '2.0'
  contact:
    name: Freshdesk Support
    url: https://support.freshdesk.com/
  termsOfService: https://www.freshworks.com/terms/
servers:
- url: https://{domain}.freshdesk.com/api/v2
  description: Freshdesk Production Server
  variables:
    domain:
      default: yourdomain
      description: Your Freshdesk subdomain, e.g. if your helpdesk URL is acme.freshdesk.com, use acme.
security:
- basicAuth: []
tags:
- name: Agents
  description: Manage support agents and their properties.
paths:
  /agents:
    get:
      operationId: listAgents
      summary: List all agents
      description: Retrieves a paginated list of agents. Agents can be filtered by email, phone, mobile, or state.
      tags:
      - Agents
      parameters:
      - $ref: '#/components/parameters/page'
      - $ref: '#/components/parameters/perPage'
      - name: email
        in: query
        description: Filter agents by email address.
        schema:
          type: string
          format: email
      - name: phone
        in: query
        description: Filter agents by phone number.
        schema:
          type: string
      - name: mobile
        in: query
        description: Filter agents by mobile number.
        schema:
          type: string
      - name: state
        in: query
        description: Filter agents by state.
        schema:
          type: string
          enum:
          - fulltime
          - occasional
      responses:
        '200':
          description: Successfully retrieved list of agents.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Agent'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /agents/{agent_id}:
    get:
      operationId: getAgent
      summary: View an agent
      description: Retrieves the details of a specific agent by ID.
      tags:
      - Agents
      parameters:
      - $ref: '#/components/parameters/agentId'
      responses:
        '200':
          description: Successfully retrieved agent details.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Agent'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
    put:
      operationId: updateAgent
      summary: Update an agent
      description: Updates the properties of an existing agent.
      tags:
      - Agents
      parameters:
      - $ref: '#/components/parameters/agentId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AgentUpdate'
      responses:
        '200':
          description: Agent updated successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Agent'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
    delete:
      operationId: deleteAgent
      summary: Delete an agent
      description: Deletes an agent from the helpdesk. The agent's tickets will need to be reassigned.
      tags:
      - Agents
      parameters:
      - $ref: '#/components/parameters/agentId'
      responses:
        '204':
          description: Agent deleted successfully.
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
components:
  schemas:
    AgentUpdate:
      type: object
      properties:
        occasional:
          type: boolean
          description: Whether the agent is occasional.
        signature:
          type: string
          description: Agent signature in HTML.
        ticket_scope:
          type: integer
          description: Ticket scope.
        group_ids:
          type: array
          items:
            type: integer
            format: int64
          description: Groups to assign.
        role_ids:
          type: array
          items:
            type: integer
            format: int64
          description: Roles to assign.
    Contact:
      type: object
      properties:
        id:
          type: integer
          format: int64
          description: Unique identifier of the contact.
        name:
          type: string
          description: Full name of the contact.
        email:
          type: string
          format: email
          description: Primary email address of the contact.
        phone:
          type: string
          nullable: true
          description: Phone number of the contact.
        mobile:
          type: string
          nullable: true
          description: Mobile phone number of the contact.
        twitter_id:
          type: string
          nullable: true
          description: Twitter handle of the contact.
        address:
          type: string
          nullable: true
          description: Physical address of the contact.
        description:
          type: string
          nullable: true
          description: Description or notes about the contact.
        job_title:
          type: string
          nullable: true
          description: Job title of the contact.
        language:
          type: string
          nullable: true
          description: Language preference of the contact.
        time_zone:
          type: string
          nullable: true
          description: Time zone of the contact.
        company_id:
          type: integer
          format: int64
          nullable: true
          description: ID of the company the contact belongs to.
        active:
          type: boolean
          description: Whether the contact is active.
        tags:
          type: array
          items:
            type: string
          description: Tags associated with the contact.
        other_emails:
          type: array
          items:
            type: string
            format: email
          description: Additional email addresses for the contact.
        custom_fields:
          type: object
          additionalProperties: true
          description: Custom fields set on the contact.
        created_at:
          type: string
          format: date-time
          description: Timestamp when the contact was created.
        updated_at:
          type: string
          format: date-time
          description: Timestamp when the contact was last updated.
    Agent:
      type: object
      properties:
        id:
          type: integer
          format: int64
          description: Unique identifier of the agent.
        available:
          type: boolean
          description: Whether the agent is currently available.
        occasional:
          type: boolean
          description: Whether the agent is an occasional agent.
        signature:
          type: string
          nullable: true
          description: Signature of the agent in HTML format.
        ticket_scope:
          type: integer
          description: Ticket scope of the agent. 1=Global, 2=Group, 3=Restricted.
          enum:
          - 1
          - 2
          - 3
        group_ids:
          type: array
          items:
            type: integer
            format: int64
          description: IDs of the groups the agent belongs to.
        role_ids:
          type: array
          items:
            type: integer
            format: int64
          description: IDs of the roles assigned to the agent.
        contact:
          $ref: '#/components/schemas/Contact'
        type:
          type: string
          description: Type of the agent (e.g., support_agent).
        created_at:
          type: string
          format: date-time
          description: Timestamp when the agent was created.
        updated_at:
          type: string
          format: date-time
          description: Timestamp when the agent was last updated.
    Error:
      type: object
      properties:
        description:
          type: string
          description: Human-readable error description.
        errors:
          type: array
          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.
  responses:
    Unauthorized:
      description: Authentication failed or credentials were not provided.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    BadRequest:
      description: The request is invalid or malformed.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    NotFound:
      description: The requested resource was not found.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
  parameters:
    agentId:
      name: agent_id
      in: path
      required: true
      description: Unique identifier of the agent.
      schema:
        type: integer
        format: int64
    perPage:
      name: per_page
      in: query
      description: Number of results per page (max 100).
      schema:
        type: integer
        minimum: 1
        maximum: 100
        default: 30
    page:
      name: page
      in: query
      description: Page number for paginated results.
      schema:
        type: integer
        minimum: 1
        default: 1
  securitySchemes:
    basicAuth:
      type: http
      scheme: basic
      description: Freshdesk uses API key-based authentication. Pass your API key as the username with any string (e.g. X) as the password using HTTP Basic Authentication.
externalDocs:
  description: Freshdesk API Documentation
  url: https://developers.freshdesk.com/api/