freshdesk Agents API
Manage support agents and their properties.
Manage support agents and their properties.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/freshdesk-agents-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.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:
responses:
BadRequest:
description: The request is invalid or malformed.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
Unauthorized:
description: Authentication failed or credentials were not provided.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
NotFound:
description: The requested resource was not found.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
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.
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.
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.
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.
parameters:
page:
name: page
in: query
description: Page number for paginated results.
schema:
type: integer
minimum: 1
default: 1
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
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/