freshdesk Agents API
Manage support agents and their properties.
Manage support agents and their properties.
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/