Skip to main content

Freshdesk Integration

33 pre-built templates across 9 categories

Easy Connect: Click "Connect Platform" → Freshdesk → enter your subdomain and API key. All 33 templates unlock instantly.

Quick Setup

Step 1: Get Your API Key

  1. 1Log in to your Freshdesk portal
  2. 2Click your Profile Picture (top right) → Profile Settings
  3. 3Your API Key is displayed on the right side of the page

Step 2: Connect in Staffify

  1. 1Go to Settings Integrations
  2. 2Click Connect Platform Freshdesk
  3. 3Enter your subdomain (e.g. "yourcompany" from yourcompany.freshdesk.com) and your API key
  4. 4Click Test & Connect

Note: Freshdesk uses Basic Auth under the hood. Your API key is the username and "X" is the password. The Easy Connect modal handles this automatically.

All 33 Templates

Click "Add Action" on your Freshdesk connection, then browse templates by category.

Tickets (5 templates)

TemplateMethodEndpointDescription
List All TicketsGET/ticketsList all tickets in Freshdesk
Get Ticket by IDGET/tickets/{{ticket_id}}Retrieve a specific ticket
Create TicketPOST/ticketsCreate a new support ticket
Update TicketPUT/tickets/{{ticket_id}}Update ticket status, priority, or assignee
Delete TicketDELETE/tickets/{{ticket_id}}Permanently delete a ticket

Contacts (4 templates)

TemplateMethodEndpointDescription
List All ContactsGET/contactsList all contacts
Get Contact by IDGET/contacts/{{contact_id}}Retrieve a specific contact
Create ContactPOST/contactsCreate a new contact
Update ContactPUT/contacts/{{contact_id}}Update contact details

Companies (4 templates)

TemplateMethodEndpointDescription
List All CompaniesGET/companiesList all companies
Get Company by IDGET/companies/{{company_id}}Retrieve a specific company
Create CompanyPOST/companiesCreate a new company
Update CompanyPUT/companies/{{company_id}}Update company details

Agents (3 templates)

TemplateMethodEndpointDescription
List All AgentsGET/agentsList all agents
Get Agent by IDGET/agents/{{agent_id}}Retrieve a specific agent
Update AgentPUT/agents/{{agent_id}}Update agent details

Groups (2 templates)

TemplateMethodEndpointDescription
List All GroupsGET/groupsList all agent groups
Get Group by IDGET/groups/{{group_id}}Retrieve a specific group

Solutions (Knowledge Base) (4 templates)

TemplateMethodEndpointDescription
List Solution CategoriesGET/solutions/categoriesList all solution categories
List Solution FoldersGET/solutions/categories/{{category_id}}/foldersList folders in a category
List Solution ArticlesGET/solutions/folders/{{folder_id}}/articlesList articles in a folder
Create Solution ArticlePOST/solutions/folders/{{folder_id}}/articlesCreate a new knowledge base article

Canned Responses (3 templates)

TemplateMethodEndpointDescription
List Canned ResponsesGET/canned_responsesList all canned responses
Get Canned ResponseGET/canned_responses/{{canned_response_id}}Retrieve a specific canned response
List in FolderGET/canned_response_folders/{{folder_id}}/canned_responsesList canned responses in a folder

Time Entries (4 templates)

TemplateMethodEndpointDescription
List for TicketGET/tickets/{{ticket_id}}/time_entriesList time entries for a ticket
Get Time EntryGET/time_entries/{{time_entry_id}}Retrieve a specific time entry
Create Time EntryPOST/tickets/{{ticket_id}}/time_entriesLog time against a ticket
Update Time EntryPUT/time_entries/{{time_entry_id}}Update a time entry

Search (4 templates)

TemplateMethodEndpointDescription
Search TicketsGET/search/tickets?query="{{query}}"Search tickets with Freshdesk query
Search ContactsGET/search/contacts?query="{{term}}"Search contacts by name, email, or phone
Search CompaniesGET/search/companies?query="{{name}}"Search companies by name or domain
Search AgentsGET/search/agents?query="{{query}}"Search agents by name or email

Common AI Use Cases

Caller Identification & Ticket History

When a customer calls, the AI searches for their contact by phone/email and retrieves their recent tickets.

Use: Search Contacts Search Tickets

Create Tickets During Calls

AI captures the issue details during the call and creates a support ticket automatically with proper priority and tags.

Use: Search Contacts Create Ticket

Update Ticket Status

AI can update ticket priority, status, or add notes based on the conversation.

Use: Get Ticket by ID Update Ticket

Knowledge Base Lookup

AI searches your knowledge base articles to find answers for common questions during calls and widget conversations.

Use: List Solution Categories List Solution Articles

Freshdesk Reference Values

Priority

ValueMeaning
1Low
2Medium
3High
4Urgent

Ticket Status

ValueMeaning
2Open
3Pending
4Resolved
5Closed

Source

ValueMeaning
1Email
2Portal
3Phone
7Chat
9Feedback Widget
10Outbound Email

Example: Create Ticket Request Body

{
  "requester_id": 12345,
  "subject": "Issue with billing",
  "description": "Customer reports incorrect charge on latest invoice",
  "priority": 2,
  "status": 2,
  "source": 3,
  "tags": ["phone-support", "billing", "staffify"]
}

Endpoint Details

Create Ticket

ParameterTypeRequiredDescription
subjectstringYesTicket subject line
descriptionstringYesTicket body (HTML supported)
email / requester_idstring / integerOne requiredRequester email or existing contact ID
priorityintegerNo1=Low, 2=Medium, 3=High, 4=Urgent
statusintegerNo2=Open, 3=Pending, 4=Resolved, 5=Closed
sourceintegerNo1=Email, 2=Portal, 3=Phone, 7=Chat
tagsstring[]NoArray of tag strings
typestringNoTicket type (e.g., "Question", "Incident")
{
  "email": "[email protected]",
  "subject": "Unable to access my account",
  "description": "Customer reports login page shows 'Account locked' error after 3 attempts.",
  "priority": 3,
  "status": 2,
  "source": 3,
  "tags": ["phone-support", "account-access", "staffify"]
}

Create Contact

ParameterTypeRequiredDescription
namestringYesFull name of the contact
emailstringRecommendedPrimary email address
phonestringNoPhone number
company_idintegerNoLink to existing company
descriptionstringNoShort bio or notes
{
  "name": "John Smith",
  "email": "[email protected]",
  "phone": "+15551234567",
  "description": "Called in regarding billing inquiry"
}

Create Company

ParameterTypeRequiredDescription
namestringYesCompany name
domainsstring[]NoCompany email domains (e.g., ["techcorp.com"])
descriptionstringNoCompany description

Update Ticket

ParameterTypeRequiredDescription
ticket_idintegerYes (path)Ticket ID to update
statusintegerNoNew status value
priorityintegerNoNew priority value
agent_idintegerNoAssign to a specific agent
tagsstring[]NoReplace all tags

Update Contact

ParameterTypeRequiredDescription
contact_idintegerYes (path)Contact ID to update
namestringNoUpdated name
emailstringNoUpdated email
phonestringNoUpdated phone number

Response Examples

Search Tickets Response

{
  "total": 1,
  "results": [{
    "id": 42,
    "subject": "Issue with billing",
    "status": 2,
    "priority": 2,
    "requester_id": 12345,
    "created_at": "2026-02-28T14:30:00Z",
    "updated_at": "2026-03-01T09:15:00Z"
  }]
}

Get Ticket Response

{
  "id": 42,
  "subject": "Issue with billing",
  "description": "Customer reports incorrect charge on latest invoice",
  "status": 2,
  "priority": 2,
  "source": 3,
  "requester_id": 12345,
  "responder_id": 67890,
  "tags": ["phone-support", "billing"],
  "created_at": "2026-02-28T14:30:00Z",
  "updated_at": "2026-03-01T09:15:00Z"
}

Create Ticket Response

{
  "id": 43,
  "subject": "Unable to access my account",
  "status": 2,
  "priority": 3,
  "requester_id": 12345,
  "created_at": "2026-03-01T10:00:00Z"
}

Example Conversation

Here's how your AI agent uses Freshdesk during a real phone call:

Caller: “Hi, this is Sarah from TechCorp. I have an issue with my dashboard.”

→ Executes: search_contacts with query=“Sarah TechCorp”

→ Found: Sarah Davis (id: 12345), [email protected]

AI Agent: “Hi Sarah! Let me check your recent tickets.”

→ Executes: search_tickets with query=“requester_id:12345”

→ Found: 2 tickets, most recent “Login timeout error” (status: Open)

AI Agent: “I see you have an open ticket about a login timeout error. Is this a new issue or related to that one?”

Caller: “It's a new one. My analytics dashboard is showing blank charts.”

→ Executes: create_ticket with subject=“Analytics dashboard showing blank charts”, requester_id=12345, priority=2, source=3

→ Created: Ticket #43

AI Agent: “I've created ticket #43 for the dashboard issue. Our team will investigate and follow up at [email protected] within 24 hours. Is there anything else I can help with?”

Freshdesk-Specific Notes

Authentication: Freshdesk uses Basic Auth with your API key as the username and X as the password. The base64 encoding is handled automatically by Staffify.

Pagination: List endpoints support a page query parameter. Default page size is 30 items. Maximum is 100 per page.

Date format: All dates use ISO 8601 format (e.g., 2026-03-01T10:00:00Z). Timestamps are in UTC.

Search syntax: Search queries use Freshdesk's query language. Wrap values in double quotes: "requester_id:12345", "status:2 AND priority:3".

Error Reference

Status CodeMeaningCommon Cause
401 UnauthorizedInvalid API keyCheck your API key in Freshdesk profile settings
403 ForbiddenRate limit exceeded or insufficient permissionsFreshdesk rate limits vary by plan. Wait and retry.
404 Not FoundResource not foundThe ticket, contact, or company ID does not exist
422 Validation ErrorInvalid request bodyCheck required fields. Common: missing subject/description for tickets.

Last updated: March 2026

Freshdesk Integration | Staffify Docs