Freshdesk node reference - all 239 operations, the credential it needs, and a worked example.
Freshdesk v2 API (Support desk). 239 operations: tickets, bulk actions, merges, forwards, archives, watchers and ticket access; conversations, replies and notes; contacts and companies with their custom fields, imports and exports; agents, groups, roles and skills; time entries; CSAT surveys and satisfaction ratings; the Solutions knowledge base; canned responses; ticket fields, sections and forms; custom objects; collaboration threads; community forums; automations and SLA policies; email mailboxes, products, business hours and account settings.
Credential: Freshdesk API key - see Credentials.
Each operation below lists the role privilege it needs. Role privileges are held by the AGENT whose API key the credential carries, set on that agent's role under Admin -> Team -> Roles. Freshdesk has no OAuth and no token scopes at all: the key is sent as the username half of HTTP Basic auth (base64("<key>:X")), it cannot be narrowed, and it simply IS its agent - so the blast radius is chosen by whose key you paste, not by anything on the key. Freshdesk's role editor groups privileges into Tickets, Scenario Automation, Solutions, Forums, Customers, Field Service, Analytics, Administration, General and Custom Objects, and the column below names the group each operation falls under; the entire /admin/* surface plus agents, groups, roles, skills, SLA policies, automations, email settings, ticket fields and ticket forms sits under Administration, which in practice means an Administrator or Account Administrator key. Three things a 403 here is NOT a missing privilege. First, it is very often a FEATURE GATE - Freshdesk's own error reference says a 403 can mean "the Freshdesk portal doesn't have the corresponding feature enabled", and Custom Objects, Skills, Multiple Ticket Forms, Dynamic Sections, Multiple Companies, Multiple Languages, Multiple Time Zones, Collaboration threads and Field Service are each separately enabled. Second, on Create agent and Convert contact to agent it is a SEAT: those consume a paid agent licence and fail identically when the account has none free. Third, a restricted agent gets 404 rather than 403 for a ticket outside their scope, so "not found" and "not yours" are indistinguishable - and so is a mistyped helpdesk subdomain, which 404s on every path. Two more failures are not permissions either: a 401 usually means the key was regenerated (Freshdesk's Profile Settings page shows only the current one), and a 429 is the account-wide rate limit, which is per MINUTE on current plans - 100/min on Growth, 400 on Pro, 700 on Enterprise - with tighter per-endpoint sub-limits on ticket create, ticket update and the ticket and contact lists, counting invalid requests and charging an extra credit for every include= embed.. If a run fails with a permission error, the node names the missing role privilege in the error - grant it and re-run; you do not need to rebuild the workflow.
| Operation | What it does | Role privilege |
|---|
createTicket | Create ticket | Tickets → Create (the agent must also be able to see the group the ticket lands in) |
createOutboundEmail | Create outbound email ticket | Tickets → Create, plus a configured support mailbox — email_config_id is mandatory |
getTicket | Get ticket | Tickets → View (an agent with Group Access or Restricted Access sees only their own scope, and Freshdesk answers 404 for a ticket outside it) |
listTickets | List tickets | Tickets → View |
searchTickets | Search / filter tickets | Tickets → View |
updateTicket | Update ticket | Tickets → Edit ticket properties |
deleteTicket | Delete ticket (to trash) | Tickets → Delete tickets |
restoreTicket | Restore deleted ticket | Tickets → Delete tickets (restore is the same privilege) |
bulkUpdateTickets | Bulk update tickets | Tickets → Edit ticket properties (returns a job id; poll it with Get async job status) |
bulkDeleteTickets | Bulk delete tickets | Tickets → Delete tickets (returns a job id; poll it with Get async job status) |
mergeTickets | Merge tickets | Tickets → Merge/split tickets |
forwardTicket | Forward ticket | Tickets → Reply to tickets |
listAssociatedTickets | List associated tickets | Tickets → View (parent/child and tracker links need the Linked Tickets feature enabled) |
getPrimeAssociation | Get prime association | Tickets → View |
getArchivedTicket | Get archived ticket | Tickets → View (archiving is automatic: a closed ticket inactive for 120 days moves to the archive and stops answering on the normal ticket routes) |
deleteArchivedTicket | Delete archived ticket | Tickets → Delete tickets |
listArchivedTicketConversations | List archived ticket conversations | Tickets → View |
deleteAttachment | Delete attachment | Tickets → Edit ticket properties |
| Operation | What it does | Role privilege |
|---|
listWatchers | List watchers | Tickets → View |
addWatcher | Add watcher | Tickets → View (the user_id must be an AGENT — a contact cannot watch a ticket) |
removeWatcher | Remove watcher | Tickets → View |
bulkAddWatchers | Add watcher to many tickets | Tickets → View |
bulkRemoveWatchers | Remove watcher from many tickets | Tickets → View |
getTicketUserAccess | Get ticket user access | Tickets → View |
addTicketUserAccess | Grant ticket user access | Tickets → Edit ticket properties |
updateTicketUserAccess | Update ticket user access | Tickets → Edit ticket properties |
removeTicketUserAccess | Revoke all ticket user access | Tickets → Edit ticket properties |
| Operation | What it does | Role privilege |
|---|
getTicketSummary | Get ticket summary | Tickets → View |
updateTicketSummary | Create / update ticket summary | Tickets → Edit ticket notes (the summary is a note, and this endpoint both creates and replaces it) |
deleteTicketSummary | Delete ticket summary | Tickets → Edit ticket notes |
| Operation | What it does | Role privilege |
|---|
listConversations | List conversations on a ticket | Tickets → View |
replyToTicket | Reply to ticket | Tickets → Reply to tickets |
addNote | Add note | Tickets → Add notes (a note is PRIVATE by default — set Public to make it customer-visible) |
replyToForward | Reply to a forward | Tickets → Reply to tickets |
updateConversation | Update conversation | Tickets → Edit ticket notes |
deleteConversation | Delete conversation | Tickets → Edit ticket notes |
| Operation | What it does | Role privilege |
|---|
createContact | Create contact | Customers → Create contacts |
getContact | Get contact | Customers → View contacts |
listContacts | List contacts | Customers → View contacts |
updateContact | Update contact | Customers → Edit contacts |
deleteContact | Delete contact (to trash) | Customers → Delete contacts |
hardDeleteContact | Permanently delete contact | Customers → Delete contacts. This is IRREVERSIBLE and needs force=true, which this node always sends |
restoreContact | Restore deleted contact | Customers → Delete contacts |
autocompleteContacts | Autocomplete contacts by name/email | Customers → View contacts |
searchContacts | Search / filter contacts | Customers → View contacts |
mergeContacts | Merge contacts | Customers → Edit contacts |
makeAgent | Convert contact to agent | Administration → Manage agents, and a free agent seat — this consumes one |
sendContactInvite | Send portal invite | Customers → Edit contacts |
exportContacts | Start a contacts export | Customers → Export contacts (admin-level; returns an export id to poll) |
getContactExport | Get contacts export status | Customers → Export contacts |
listContactImports | List contact imports | Customers → Create contacts |
getContactImport | Get contact import | Customers → Create contacts |
cancelContactImport | Cancel contact import | Customers → Create contacts |
| Operation | What it does | Role privilege |
|---|
listContactFields | List contact fields | (any valid agent key — the field list is readable by every agent) |
getContactField | Get contact field | (any valid agent key — the field list is readable by every agent) |
createContactField | Create contact field | Administration → Manage customer fields |
updateContactField | Update contact field | Administration → Manage customer fields |
deleteContactField | Delete contact field | Administration → Manage customer fields |
| Operation | What it does | Role privilege |
|---|
createCompany | Create company | Customers → Create companies |
getCompany | Get company | Customers → View companies |
listCompanies | List companies | Customers → View companies |
updateCompany | Update company | Customers → Edit companies |
deleteCompany | Delete company | Customers → Delete companies |
autocompleteCompanies | Autocomplete companies by name | Customers → View companies |
searchCompanies | Search / filter companies | Customers → View companies |
exportCompanies | Start a companies export | Customers → Export companies (admin-level; returns an export id to poll) |
getCompanyExport | Get companies export status | Customers → Export companies |
listCompanyImports | List company imports | Customers → Create companies |
getCompanyImport | Get company import | Customers → Create companies |
cancelCompanyImport | Cancel company import | Customers → Create companies |
| Operation | What it does | Role privilege |
|---|
listCompanyFields | List company fields | (any valid agent key — the field list is readable by every agent) |
getCompanyField | Get company field | (any valid agent key — the field list is readable by every agent) |
createCompanyField | Create company field | Administration → Manage customer fields |
updateCompanyField | Update company field | Administration → Manage customer fields |
deleteCompanyField | Delete company field | Administration → Manage customer fields |
| Operation | What it does | Role privilege |
|---|
listAgents | List agents | (any valid agent key for the basic list — the full agent record needs Administration → Manage agents) |
getAgent | Get agent | (any valid agent key for the basic record — the full record needs Administration → Manage agents) |
createAgent | Create agent | Administration → Manage agents, and a free agent seat. A 403 here is usually the SEAT, not the role |
updateAgent | Update agent | Administration → Manage agents (an agent cannot change their own ticket_scope) |
deleteAgent | Delete agent (downgrade to contact) | Administration → Manage agents. This downgrades the agent to a contact and frees the seat |
getCurrentAgent | Get the authenticated agent | (any valid agent key — this returns the key's own agent record and is the cheapest way to test a credential) |
createMultipleAgents | Create multiple agents | Administration → Manage agents, and enough free seats for the whole batch |
autocompleteAgents | Autocomplete agents | (any valid agent key) |
listAgentsAvailability | List agent availability | (any valid agent key — this is List agents with only=availability, so it needs whatever that needs) |
getAgentAvailability | Get agent availability | Administration → Manage agents |
updateAgentAvailability | Update agent load settings | Administration → Manage agents (this is the omnichannel load setting, not the online/offline toggle) |
| Operation | What it does | Role privilege |
|---|
createGroup | Create group | Administration → Manage groups |
getGroup | Get group | (any valid agent key) |
listGroups | List groups | (any valid agent key) |
updateGroup | Update group | Administration → Manage groups |
deleteGroup | Delete group | Administration → Manage groups |
createAdminGroup | Create group (admin API) | Administration → Manage groups (the admin API is the one that exposes automatic assignment and business calendars) |
getAdminGroup | Get group (admin API) | Administration → Manage groups |
listAdminGroups | List groups (admin API) | Administration → Manage groups |
updateAdminGroup | Update group (admin API) | Administration → Manage groups |
deleteAdminGroup | Delete group (admin API) | Administration → Manage groups |
listGroupAgents | List agents in a group | Administration → Manage groups |
updateGroupAgents | Add / remove agents in a group | Administration → Manage groups |
| Operation | What it does | Role privilege |
|---|
listRoles | List roles | Administration → Manage roles |
getRole | Get role | Administration → Manage roles |
listSkills | List skills | Administration → Manage skills, and the Skills feature enabled on the plan |
getSkill | Get skill | Administration → Manage skills, and the Skills feature enabled on the plan |
createSkill | Create skill | Administration → Manage skills, and the Skills feature enabled on the plan |
updateSkill | Update skill | Administration → Manage skills, and the Skills feature enabled on the plan |
deleteSkill | Delete skill | Administration → Manage skills, and the Skills feature enabled on the plan |
| Operation | What it does | Role privilege |
|---|
createTimeEntry | Log time on a ticket | Tickets → Add/edit time entries, and Time Tracking enabled on the account |
listTicketTimeEntries | List a ticket's time entries | Tickets → View time entries |
listTimeEntries | List all time entries | Tickets → View time entries |
updateTimeEntry | Update time entry | Tickets → Add/edit time entries |
toggleTimer | Start / stop timer | Tickets → Add/edit time entries (one agent can have only ONE timer running; starting a second stops the first) |
deleteTimeEntry | Delete time entry | Tickets → Add/edit time entries |
| Operation | What it does | Role privilege |
|---|
listCsatSurveys | List CSAT surveys | (any valid agent key — this is the NEW customer-satisfaction API and needs the new CSAT surveys enabled on the account) |
listSurveyResponses | List CSAT survey responses | (any valid agent key — the new CSAT API; note it pages with next_token, not page/per_page) |
createSurveyResponse | Submit a CSAT survey response | (any valid agent key — the new CSAT API; the answers must match the survey's own question ids) |
listSurveys | List surveys (legacy) | (any valid agent key — the LEGACY survey API, superseded by the customer-satisfaction endpoints) |
listSatisfactionRatings | List satisfaction ratings (legacy) | (any valid agent key — the legacy satisfaction-rating API) |
listTicketSatisfactionRatings | List a ticket's satisfaction ratings | Tickets → View |
createSatisfactionRating | Create a satisfaction rating | Tickets → View (the rating values must be the ids configured on the account's survey) |
| Operation | What it does | Role privilege |
|---|
createSolutionCategory | Create solution category | Solutions → Manage categories |
getSolutionCategory | Get solution category | Solutions → View articles |
listSolutionCategories | List solution categories | Solutions → View articles |
updateSolutionCategory | Update solution category | Solutions → Manage categories |
deleteSolutionCategory | Delete solution category | Solutions → Manage categories |
createSolutionFolder | Create solution folder | Solutions → Manage folders |
getSolutionFolder | Get solution folder | Solutions → View articles |
listSolutionFolders | List folders in a category | Solutions → View articles |
listSolutionSubfolders | List folders in a folder | Solutions → View articles (nested folders need the feature enabled on the plan) |
updateSolutionFolder | Update solution folder | Solutions → Manage folders |
deleteSolutionFolder | Delete solution folder | Solutions → Manage folders |
createSolutionArticle | Create solution article | Solutions → Create articles (publishing one — status 2 — additionally needs Publish articles) |
getSolutionArticle | Get solution article | Solutions → View articles |
listSolutionArticles | List articles in a folder | Solutions → View articles |
updateSolutionArticle | Update solution article | Solutions → Edit articles (publishing one — status 2 — additionally needs Publish articles) |
deleteSolutionArticle | Delete solution article | Solutions → Delete articles |
searchSolutionArticles | Search solution articles | Solutions → View articles |
| Operation | What it does | Role privilege |
|---|
createCannedResponse | Create canned response | Tickets → Manage canned responses |
getCannedResponse | Get canned response | Tickets → Manage canned responses |
updateCannedResponse | Update canned response | Tickets → Manage canned responses |
bulkCreateCannedResponses | Bulk create canned responses | Tickets → Manage canned responses |
createCannedResponseFolder | Create canned response folder | Tickets → Manage canned responses |
updateCannedResponseFolder | Update canned response folder | Tickets → Manage canned responses |
listCannedResponseFolders | List canned response folders | Tickets → Manage canned responses |
getCannedResponseFolder | Get canned response folder | Tickets → Manage canned responses |
listFolderCannedResponses | List responses in a folder | Tickets → Manage canned responses |
| Operation | What it does | Role privilege |
|---|
listTicketFields | List ticket fields | (any valid agent key — the plain /ticket_fields list is readable by every agent, which is why it is the one to use for a lookup) |
listAdminTicketFields | List ticket fields (admin API) | Administration → Manage ticket fields |
createTicketField | Create ticket field | Administration → Manage ticket fields |
getTicketField | Get ticket field | Administration → Manage ticket fields |
updateTicketField | Update ticket field | Administration → Manage ticket fields |
deleteTicketField | Delete ticket field | Administration → Manage ticket fields |
listTicketFieldSections | List sections of a ticket field | Administration → Manage ticket fields, and Dynamic Sections enabled on the plan |
createTicketFieldSection | Create section | Administration → Manage ticket fields, and Dynamic Sections enabled on the plan |
getTicketFieldSection | Get section | Administration → Manage ticket fields, and Dynamic Sections enabled on the plan |
updateTicketFieldSection | Update section | Administration → Manage ticket fields, and Dynamic Sections enabled on the plan |
deleteTicketFieldSection | Delete section | Administration → Manage ticket fields, and Dynamic Sections enabled on the plan |
listTicketForms | List ticket forms | Administration → Manage ticket forms, and Multiple Ticket Forms enabled on the plan |
createTicketForm | Create ticket form | Administration → Manage ticket forms, and Multiple Ticket Forms enabled on the plan |
getTicketForm | Get ticket form | Administration → Manage ticket forms, and Multiple Ticket Forms enabled on the plan |
updateTicketForm | Update ticket form | Administration → Manage ticket forms, and Multiple Ticket Forms enabled on the plan |
deleteTicketForm | Delete ticket form | Administration → Manage ticket forms, and Multiple Ticket Forms enabled on the plan |
cloneTicketForm | Clone ticket form | Administration → Manage ticket forms, and Multiple Ticket Forms enabled on the plan |
getTicketFormField | Get a ticket form's field | Administration → Manage ticket forms |
updateTicketFormField | Update a ticket form's field | Administration → Manage ticket forms |
deleteTicketFormField | Delete a ticket form's field | Administration → Manage ticket forms |
| Operation | What it does | Role privilege |
|---|
listCustomObjectSchemas | List custom object schemas | Custom Objects → View records, and the Custom Objects feature enabled on the plan. Schemas themselves can only be CREATED in the UI, never via the API |
getCustomObjectSchema | Get custom object schema | Custom Objects → View records, and the Custom Objects feature enabled on the plan |
listCustomObjectRecords | List / filter custom object records | Custom Objects → View records (this endpoint pages with page_size and _links cursors, not page/per_page) |
countCustomObjectRecords | Count custom object records | Custom Objects → View records |
createCustomObjectRecord | Create custom object record | Custom Objects → Create records |
getCustomObjectRecord | Get custom object record | Custom Objects → View records |
updateCustomObjectRecord | Update custom object record | Custom Objects → Update records |
deleteCustomObjectRecord | Delete custom object record | Custom Objects → Delete records |
| Operation | What it does | Role privilege |
|---|
createThread | Create thread | Tickets → Add notes, and Collaboration (Threads) enabled on the account |
getThread | Get thread | Tickets → View, and Collaboration (Threads) enabled on the account |
updateThread | Update thread | Tickets → Add notes, and Collaboration (Threads) enabled on the account |
deleteThread | Delete thread | Tickets → Edit ticket notes, and Collaboration (Threads) enabled on the account |
createThreadMessage | Post a message in a thread | Tickets → Add notes, and Collaboration (Threads) enabled on the account |
getThreadMessage | Get thread message | Tickets → View, and Collaboration (Threads) enabled on the account |
updateThreadMessage | Update thread message | Tickets → Edit ticket notes, and Collaboration (Threads) enabled on the account |
deleteThreadMessage | Delete thread message | Tickets → Edit ticket notes, and Collaboration (Threads) enabled on the account |
getThreadMessageQuote | Get a message's quoted text | Tickets → View, and Collaboration (Threads) enabled on the account |
| Operation | What it does | Role privilege |
|---|
createForumCategory | Create forum category | Forums → Manage categories |
getForumCategory | Get forum category | Forums → View forums |
listForumCategories | List forum categories | Forums → View forums |
updateForumCategory | Update forum category | Forums → Manage categories |
deleteForumCategory | Delete forum category | Forums → Manage categories |
listCategoryForums | List forums in a category | Forums → View forums |
createForum | Create forum | Forums → Manage forums |
getForum | Get forum | Forums → View forums |
updateForum | Update forum | Forums → Manage forums |
deleteForum | Delete forum | Forums → Manage forums |
listForumTopics | List topics in a forum | Forums → View forums |
monitorForum | Monitor forum | Forums → View forums |
unmonitorForum | Unmonitor forum | Forums → View forums |
getForumMonitorStatus | Get forum monitoring status | Forums → View forums |
createTopic | Create topic | Forums → Create topics |
getTopic | Get topic | Forums → View forums |
updateTopic | Update topic | Forums → Moderate topics |
deleteTopic | Delete topic | Forums → Moderate topics |
listTopicComments | List comments on a topic | Forums → View forums |
monitorTopic | Monitor topic | Forums → View forums |
unmonitorTopic | Unmonitor topic | Forums → View forums |
getTopicMonitorStatus | Get topic monitoring status | Forums → View forums |
listMonitoredTopics | List monitored topics | Forums → View forums |
listParticipatedTopics | List participated topics | Forums → View forums |
createComment | Create comment | Forums → Comment on topics |
updateComment | Update comment | Forums → Moderate topics |
deleteComment | Delete comment | Forums → Moderate topics |
| Operation | What it does | Role privilege |
|---|
listScenarioAutomations | List scenario automations | Tickets → Manage scenario automations. Note there is NO endpoint to RUN a scenario on a ticket — Freshdesk deliberately does not expose one, so this list is read-only |
listSlaPolicies | List SLA policies | Administration → Manage SLA policies |
createSlaPolicy | Create SLA policy | Administration → Manage SLA policies, and Multiple SLA Policies enabled on the plan |
updateSlaPolicy | Update SLA policy | Administration → Manage SLA policies |
listAutomationRules | List automation rules | Administration → Manage automations (the automation type id is 1 = ticket creation, 3 = time triggers, 4 = ticket updates) |
getAutomationRule | Get automation rule | Administration → Manage automations |
createAutomationRule | Create automation rule | Administration → Manage automations. This is also the only programmatic way to point a Freshdesk outbound webhook at a URL |
updateAutomationRule | Update automation rule | Administration → Manage automations |
deleteAutomationRule | Delete automation rule | Administration → Manage automations |
| Operation | What it does | Role privilege |
|---|
listEmailConfigs | List email configs (legacy) | Administration → Manage email settings (this is the LEGACY route, superseded by email mailboxes) |
getEmailConfig | Get email config (legacy) | Administration → Manage email settings |
listEmailMailboxes | List email mailboxes | Administration → Manage email settings |
getEmailMailbox | Get email mailbox | Administration → Manage email settings |
createEmailMailbox | Create email mailbox | Administration → Manage email settings |
updateEmailMailbox | Update email mailbox | Administration → Manage email settings |
deleteEmailMailbox | Delete email mailbox | Administration → Manage email settings |
getMailboxSettings | Get mailbox settings | Administration → Manage email settings |
updateMailboxSettings | Update mailbox settings | Administration → Manage email settings |
getAutomaticBcc | Get automatic BCC addresses | Administration → Manage email settings |
updateAutomaticBcc | Update automatic BCC addresses | Administration → Manage email settings |
listProducts | List products | (any valid agent key — needs Multiple Products enabled on the plan, otherwise the list is empty) |
getProduct | Get product | (any valid agent key — needs Multiple Products enabled on the plan) |
listBusinessHours | List business hours | (any valid agent key — needs Multiple Business Hours enabled on the plan for anything beyond the default) |
getBusinessHours | Get business hours | (any valid agent key) |
getHelpdeskSettings | Get helpdesk settings | Administration → Manage account settings |
getAccount | Get account | Administration → Manage account settings |
exportAccount | Start an account export | Account Administrator only — Freshdesk documents this endpoint as account-admin, not merely admin |
getJob | Get async job status | (any valid agent key that could start the job — this is the poll endpoint every bulk, import and export operation hands back) |
| Operation | What it does | Role privilege |
|---|
sendOutboundMessage | Send proactive WhatsApp message | (no role privilege — this needs a WhatsApp Business number configured on the account and a template APPROVED BY META; an unapproved template name is rejected, not queued) |
getOutboundMessage | Get outbound message | (any valid agent key that could send the message) |
publishContactActivity | Publish a contact activity | Customers → Edit contacts, and the Omnichannel activity timeline enabled on the account |