Everything an AI agent can do with the Freshdesk API.

A reference guide for building AI agents: every method, how to authenticate, and the permissions each one needs.

Endpoints34
API versionv2
Last updated23 June 2026
Orientation

How the Freshdesk API works.

The Freshdesk API is how an app or AI agent works with a support account: creating and updating tickets, replying to customers and adding internal notes, and managing the contacts and companies behind those tickets. Access is granted through a per-agent API key, and because Freshdesk has no permission scopes, the key can do exactly what its agent's role allows and no more. Events reach an app through webhook actions set on automation rules rather than a fixed subscription.

34Endpoints
8Capability groups
14Read
20Write
0Permissions
Authentication
Freshdesk authenticates every call with an API key sent through HTTP Basic auth, where the key is the username and any non-empty string is the password. Each key belongs to one agent and is found on that agent's profile. There is no OAuth flow and no separate token scopes for the core API.
Permissions
Freshdesk has no granular per-method permission scopes. An API key inherits the role and permissions of the agent it belongs to, so the key can do exactly what that agent can do in the product, no more and no less. To limit what an integration can reach, the practice is to give it a dedicated agent with a restricted role. A request the agent's role does not allow returns 403.
Versioning
The current API is v2, served under the /api/v2 path, and it is not dated. An older v1 API still exists but is not recommended for new integrations. Changes are published in the developer API reference rather than through dated version strings.
Data model
Freshdesk is resource-oriented JSON over HTTPS at a per-account domain, account.freshdesk.com/api/v2. The core resource is the ticket, which holds a requester and a conversation of replies and notes; contacts and companies model the customers, while agents and groups model the support team. Lists are page-paginated, and events reach an app through webhook actions configured on automation rules.
Connect & authenticate

Connection & authentication methods.

How an app or AI agent connects to Freshdesk determines what it can reach. There is one route for making calls, authenticated with an API key, and a route for receiving events through webhooks driven by automation rules. Freshdesk has no granular permission scopes, so a key inherits the role of the agent it belongs to.

Ways to connect

REST API (v2)

The REST API answers at https://account.freshdesk.com/api/v2 and exchanges JSON over HTTPS. Every call authenticates with an API key sent as HTTP Basic auth, where the key is the username and any non-empty string is the password.

Best forConnecting an app or AI agent to Freshdesk.
Governed byThe API key and the role of the agent it belongs to.
Docs ↗

MCP server (Model Context Protocol)

Freshworks publishes a first-party MCP server that lets an agent call Freshdesk over the Model Context Protocol. It is in beta through an Early Access Program for Enterprise-plan accounts, answers at https://account.freshdesk.com/mcp over HTTP transport, and authenticates with an API key. Access is limited to administrator and agent privileges.

Best forConnecting an AI agent to Freshdesk through MCP.
Governed byThe API key and the role of the agent it belongs to.
Docs ↗

Webhooks (via automations)

Freshdesk has no standalone webhook subscription endpoint. An administrator adds a webhook action to a ticket-creation or ticket-update automation rule, sets the condition that fires it, picks the fields to send, and Freshdesk POSTs that JSON payload to the app's URL.

Best forReceiving ticket events at an app or AI agent without polling.
Governed byThe automation rule and its conditions.
Docs ↗
Authentication

API key (HTTP Basic auth)

Each agent has a personal API key, shown on their profile in Freshdesk. It is sent as HTTP Basic auth, with the key as the username and any non-empty string as the password. The key carries no separate scopes; it inherits the role and permissions of the agent it belongs to, so what the key can do is exactly what that agent can do in the product.

TokenPer-agent API key
Best forServer-side calls scoped to one agent's role
Docs ↗
Capability map

What an AI agent can do in Freshdesk.

The Freshdesk API is split into areas an agent can act on, like tickets, ticket conversations, contacts, companies, agents, and groups. Each area has its own methods, and writes in some areas reply to customers, change support records, or delete people's accounts.

Tickets

7 endpoints

Create, view, list, update, delete, and restore tickets, and send a proactive outbound email as a ticket. A ticket holds the requester, status, priority, group, and assigned agent.

Writes here change real ticket data, and a delete removes a customer's support request.
View endpoints

Conversations

4 endpoints

Reply to a ticket, add a private note, and update or delete a conversation. A reply is sent to the customer; a note stays internal to the agents.

A reply is sent to the customer and cannot be unsent.
View endpoints

Contacts

7 endpoints

Create, view, list, update, soft-delete, restore, and merge contacts. A contact is a customer or requester who raises tickets.

Writes here change customer records, and a hard delete is permanent.
View endpoints

Companies

5 endpoints

Create, view, list, update, and delete companies. A company groups the contacts that belong to one customer organization.

Writes here change company records that contacts and tickets are linked to.
View endpoints

Agents

3 endpoints

View an agent, list agents, read the agent the key belongs to, and create, update, or delete agents. An agent is a support team member with a role.

Writes here change who can sign in and what their role allows.
View endpoints

Groups

3 endpoints

Create, view, list, update, and delete groups. A group is a team that tickets are routed to and assigned within.

Writes here change how tickets are routed and assigned.
View endpoints

Canned responses

3 endpoints

Create and view canned responses and create a canned response folder. A canned response is a reusable reply template available to agents.

Writes here change the reply templates agents use with customers.
View endpoints

Search & filter

2 endpoints

Filter tickets, contacts, and companies with a query expression. Search returns matching records rather than changing anything.

These are read-only and change no data.
View endpoints
Endpoint reference

Every Freshdesk API method.

Filter by method, access, or permission, or search any path. Select a row for version detail, rate limits, the related webhook event, and the source.

MethodEndpointWhat it doesAccessPermissionVersion

Tickets

Create, view, list, update, delete, and restore tickets, and send a proactive outbound email as a ticket. A ticket holds the requester, status, priority, group, and assigned agent.7

Freshdesk has no per-method scopes. The call succeeds only if the agent whose API key is used has permission to create tickets.

Acts onticket
Permission (capability)None required
VersionAvailable since the API’s base version
Webhook eventNone
Rate limit80 per minute on Growth, 160 on Pro, 280 on Enterprise

Read-only. The agent's role and ticket-scope setting decide which tickets are visible.

Acts onticket
Permission (capability)None required
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Read-only. This endpoint carries its own tighter sub-limit, separate from the account rate.

Acts onticket
Permission (capability)None required
VersionAvailable since the API’s base version
Webhook eventNone
Rate limit20 per minute on Growth, 100 on Pro, 200 on Enterprise

Needs the agent permission to edit the ticket. Carries its own tighter sub-limit.

Acts onticket
Permission (capability)None required
VersionAvailable since the API’s base version
Webhook eventNone
Rate limit80 per minute on Growth, 160 on Pro, 280 on Enterprise

Needs the agent permission to delete tickets. Soft-deleted tickets are recoverable with restore.

Acts onticket
Permission (capability)None required
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Reverses a soft delete. Needs the agent permission to manage tickets.

Acts onticket
Permission (capability)None required
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Sends an email to the customer immediately, so it is a customer-facing write.

Acts onticket
Permission (capability)None required
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Conversations

Reply to a ticket, add a private note, and update or delete a conversation. A reply is sent to the customer; a note stays internal to the agents.4

Customer-facing: a reply is emailed to the requester and cannot be unsent.

Acts onconversation
Permission (capability)None required
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

A private note stays internal; a public note is visible to the requester in the portal.

Acts onconversation
Permission (capability)None required
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Only the body of a note can be updated; outgoing replies that were emailed are not edited at the customer's end.

Acts onconversation
Permission (capability)None required
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Removes the message from the ticket record.

Acts onconversation
Permission (capability)None required
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Contacts

Create, view, list, update, soft-delete, restore, and merge contacts. A contact is a customer or requester who raises tickets.7

Stores personal details such as name, email, and phone. Needs the agent permission to manage contacts.

Acts oncontact
Permission (capability)None required
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Read-only. Returns the contact's personal and contact details.

Acts oncontact
Permission (capability)None required
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Read-only. Carries its own tighter sub-limit, separate from the account rate.

Acts oncontact
Permission (capability)None required
VersionAvailable since the API’s base version
Webhook eventNone
Rate limit20 per minute on Growth, 100 on Pro, 200 on Enterprise

Changes a customer's personal record. Needs the agent permission to manage contacts.

Acts oncontact
Permission (capability)None required
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

This is a soft delete, reversible with restore. A separate hard-delete call at /api/v2/contacts/{id}/hard_delete removes the contact for good.

Acts oncontact
Permission (capability)None required
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Reverses a soft delete. A hard-deleted contact cannot be restored.

Acts oncontact
Permission (capability)None required
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Combines duplicate records; the secondary contacts are folded into the primary.

Acts oncontact
Permission (capability)None required
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Companies

Create, view, list, update, and delete companies. A company groups the contacts that belong to one customer organization.5

Needs the agent permission to manage companies.

Acts oncompany
Permission (capability)None required
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Read-only.

Acts oncompany
Permission (capability)None required
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Read-only.

Acts oncompany
Permission (capability)None required
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Needs the agent permission to manage companies.

Acts oncompany
Permission (capability)None required
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Needs the agent permission to manage companies.

Acts oncompany
Permission (capability)None required
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Agents

View an agent, list agents, read the agent the key belongs to, and create, update, or delete agents. An agent is a support team member with a role.3

Read-only. Useful for an agent to confirm the identity and reach of the key it is using.

Acts onagent
Permission (capability)None required
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Read-only.

Acts onagent
Permission (capability)None required
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Read-only.

Acts onagent
Permission (capability)None required
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Groups

Create, view, list, update, and delete groups. A group is a team that tickets are routed to and assigned within.3

An administrator-level action that shapes ticket routing.

Acts ongroup
Permission (capability)None required
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Read-only.

Acts ongroup
Permission (capability)None required
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Read-only.

Acts ongroup
Permission (capability)None required
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Canned responses

Create and view canned responses and create a canned response folder. A canned response is a reusable reply template available to agents.3

Needs the agent permission to manage canned responses.

Acts oncanned_response
Permission (capability)None required
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Read-only.

Acts oncanned_response
Permission (capability)None required
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Needs the agent permission to manage canned responses.

Acts oncanned_response_folder
Permission (capability)None required
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply
Filter tickets, contacts, and companies with a query expression. Search returns matching records rather than changing anything.2

Read-only. The query is URL-encoded and limited to a defined set of filterable fields, with a cap on results returned.

Acts onticket
Permission (capability)None required
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Read-only. The query is URL-encoded and limited to a defined set of filterable fields.

Acts oncontact
Permission (capability)None required
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply
No endpoints match those filters.
Webhooks

Webhook events.

Freshdesk can notify an app when something happens in an account, like a ticket being created or updated. There is no fixed event catalog: an administrator builds an automation rule with a webhook action, chooses the condition that fires it and the ticket fields to send, and Freshdesk posts that payload to the app's URL.

EventWhat it signalsTriggered by
No events match that search.
Rate limits & pagination

Rate limits, pagination & request size.

Freshdesk limits how fast an app can call by a request rate measured per minute, set by the account's plan, and applied across the whole account rather than per key. Some endpoints carry tighter sub-limits, and going over returns a 429 response with a Retry-After header.

Request rate

Freshdesk meters requests per minute, and the ceiling is set by the account's plan, counted across the whole account rather than per API key, so every integration sharing the account draws from one bucket. The plan limits are 200 calls per minute on Growth, 400 on Pro, and 700 on Enterprise, with a trial account capped at 50. Some endpoints carry tighter sub-limits on top: listing tickets or contacts is held to 20 per minute on Growth, 100 on Pro, and 200 on Enterprise, while creating or updating tickets is held to 80, 160, and 280 across those plans. Every response reports the current state through the X-RateLimit-Total, X-RateLimit-Remaining, and X-RateLimit-Used-CurrentRequest headers, and going over returns a 429 with a Retry-After header giving the seconds to wait.

Pagination

List endpoints use page-number pagination through the page parameter, which starts at 1, and the per_page parameter, which defaults to 30 and tops out at 100. When more pages exist, the response includes a Link header pointing at the next page, which should be followed rather than built by hand.

Request size

Responses are JSON. A list page returns at most 100 records, the maximum value of per_page. Filter (search) endpoints cap how many results a query can return and restrict filtering to a defined set of fields.

Errors

Status codes & error handling.

The status codes an agent should handle, and what to do about each.

StatusCodeMeaningWhat to do
400invalid_json / validation errorThe request was malformed or failed validation. The body holds a description and an errors array, each entry naming the field, a message, and a code such as missing_field, invalid_value, datatype_mismatch, or duplicate_value.Read the errors array, correct the named field, and resend.
401invalid_credentialsAuthentication failed: the API key is missing, wrong, or sent incorrectly.Confirm the API key and that it is sent as the Basic auth username with a non-empty password.
403access_deniedThe key is valid but the agent's role does not permit this action, or the feature is not on the plan.Use a key for an agent whose role allows the action, or enable the required feature on the plan.
404object not foundThe resource does not exist, or is not visible to this agent.Confirm the id and that the agent has access to the record.
409inconsistent_stateThe request conflicts with the current state, such as acting on a record that is in an incompatible state.Refetch the current state and retry once the conflict is resolved.
415unsupported_content_typeThe request used a Content-Type other than application/json, which most write calls require.Send the body as application/json.
429rate_limit_exceededThe account or an endpoint sub-limit was exceeded. Limits are per minute and counted across the whole account, not per key.Wait the number of seconds in the Retry-After header before retrying, and spread calls out.
Versioning & freshness

Version history.

The Freshdesk REST API is served under a single stable version, v2, in the path /api/v2. It does not use dated versions; changes are published in the developer API reference, and a v1 API still exists for older integrations.

Version history

What changed, and when

Latest versionv2
v2Current version
Current stable API (v2)

The Freshdesk API v2 is the current stable version, served under the /api/v2 path on a per-account domain. It is not dated: there is one v2 surface, and changes are published in the developer API reference rather than as new dated versions. An older v1 API still exists for legacy integrations but is not recommended for new work. Every call authenticates with a per-agent API key over HTTP Basic auth, and access is governed by that agent's role rather than by token scopes.

What changed
  • JSON over HTTPS at account.freshdesk.com/api/v2
  • Per-agent API key authentication via HTTP Basic auth, no OAuth for the core API
  • Per-minute, account-wide rate limits set by plan, with tighter per-endpoint sub-limits
  • Soft delete with restore for tickets and contacts, plus a separate hard delete for contacts
v1
Legacy API (v1)

The original Freshdesk API, v1, predates v2 and remains available for older integrations. It is not recommended for new work; v2 is the supported surface. Its reference is published separately.

What changed
  • Original REST surface, superseded by v2
  • Retained for backward compatibility with existing integrations

Build against v2; v1 is older and not recommended for new integrations.

Freshdesk API reference ↗
Questions

Freshdesk API, answered.

How does Freshdesk authenticate API calls?+
With an API key sent as HTTP Basic auth. The key, found on an agent's profile in Freshdesk, is used as the username and any non-empty string as the password, then Base64-encoded into the Authorization header. There is no OAuth flow for the core API, so the key alone identifies and authorizes the caller.
Does Freshdesk have permission scopes I can limit an agent to?+
No. Unlike APIs that issue narrow tokens, Freshdesk has no per-method scopes. A key inherits the full role and permissions of the agent it belongs to, so it can do whatever that agent can do. The way to constrain an integration is to create a dedicated agent with a restricted role and use that agent's key, or to put a governing layer in front of the API.
What are the rate limits, and how are they counted?+
Limits are per minute and set by the plan: 200 calls per minute on Growth, 400 on Pro, and 700 on Enterprise, with a trial capped at 50. They are counted across the whole account, not per key, so every integration sharing the account shares one budget. Some endpoints carry tighter sub-limits, such as 20 to 200 per minute for listing tickets or contacts depending on the plan. Going over returns a 429 with a Retry-After header.
How do I receive ticket events instead of polling?+
Freshdesk has no standalone webhook subscription. Instead, an administrator adds a webhook action to an automation rule that runs on ticket creation or update, sets the conditions that fire it, chooses the ticket fields to send, and points it at the app's URL. Freshdesk then POSTs that JSON payload when the rule matches, which avoids repeatedly polling the API.
What's the difference between a reply and a note?+
A reply is sent to the customer and added to the ticket conversation, so it leaves the helpdesk as an email. A note is internal: a private note is visible only to agents, while a public note appears to the requester in the support portal. An agent reaching for the reply endpoint is making a customer-facing action that cannot be unsent.
When I delete a ticket or contact, is it gone for good?+
Not always. Deleting a ticket is a soft delete that can be reversed with the restore endpoint, and the same is true for the standard contact delete. Contacts also have a separate hard-delete endpoint that removes the record permanently, with no restore. The List Tickets endpoint hides deleted and spam tickets unless they are explicitly requested.
How does pagination work?+
List endpoints take page and per_page query parameters, where page starts at 1 and per_page defaults to 30 and tops out at 100. When more results exist, the response carries a Link header with the URL of the next page, which should be followed rather than constructed by hand.
Related

More support API guides for agents

What is Bollard AI?

Control what every AI agent can do in Freshdesk.

Bollard AI sits between a team's AI agents and Freshdesk. Grant each agent exactly the access it needs, read or write, resource by resource, and every call is checked and logged.

  • Set read, write, or full access per agent, never a shared Freshdesk key.
  • Denied by default, so an agent reaches only what has been explicitly allowed.
  • Every call recorded in plain English: who, what, where, and the decision.
Freshdesk
Support Triage Agent
Read tickets ResourceOffReadFull use
Reply and add notes ActionOffReadFull use
Delete contacts ActionOffReadFull use
Per-agent access, set in Bollard AI, not in Freshdesk