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
- Log in to your Freshdesk portal
- Click your Profile Picture (top right) → Profile Settings
- Your API Key is displayed on the right side of the page
Step 2: Connect in Staffify
- Go to Settings → Integrations
- Click Connect Platform → Freshdesk
- Enter your subdomain (e.g. "yourcompany" from yourcompany.freshdesk.com) and your API key
- Click Test & Connect
All 33 Templates
Click "Add Action" on your Freshdesk connection, then browse templates by category.
Tickets (5 templates)
| Template | Method | Endpoint | Description |
|---|---|---|---|
| List All Tickets | GET | /tickets | List all tickets in Freshdesk |
| Get Ticket by ID | GET | /tickets/{{ticket_id}} | Retrieve a specific ticket |
| Create Ticket | POST | /tickets | Create a new support ticket |
| Update Ticket | PUT | /tickets/{{ticket_id}} | Update ticket status, priority, or assignee |
| Delete Ticket | DELETE | /tickets/{{ticket_id}} | Permanently delete a ticket |
Contacts (4 templates)
| Template | Method | Endpoint | Description |
|---|---|---|---|
| List All Contacts | GET | /contacts | List all contacts |
| Get Contact by ID | GET | /contacts/{{contact_id}} | Retrieve a specific contact |
| Create Contact | POST | /contacts | Create a new contact |
| Update Contact | PUT | /contacts/{{contact_id}} | Update contact details |
Companies (4 templates)
| Template | Method | Endpoint | Description |
|---|---|---|---|
| List All Companies | GET | /companies | List all companies |
| Get Company by ID | GET | /companies/{{company_id}} | Retrieve a specific company |
| Create Company | POST | /companies | Create a new company |
| Update Company | PUT | /companies/{{company_id}} | Update company details |
Agents (3 templates)
| Template | Method | Endpoint | Description |
|---|---|---|---|
| List All Agents | GET | /agents | List all agents |
| Get Agent by ID | GET | /agents/{{agent_id}} | Retrieve a specific agent |
| Update Agent | PUT | /agents/{{agent_id}} | Update agent details |
Groups (2 templates)
| Template | Method | Endpoint | Description |
|---|---|---|---|
| List All Groups | GET | /groups | List all agent groups |
| Get Group by ID | GET | /groups/{{group_id}} | Retrieve a specific group |
Solutions (Knowledge Base) (4 templates)
| Template | Method | Endpoint | Description |
|---|---|---|---|
| List Solution Categories | GET | /solutions/categories | List all solution categories |
| List Solution Folders | GET | /solutions/categories/{{category_id}}/folders | List folders in a category |
| List Solution Articles | GET | /solutions/folders/{{folder_id}}/articles | List articles in a folder |
| Create Solution Article | POST | /solutions/folders/{{folder_id}}/articles | Create a new knowledge base article |
Canned Responses (3 templates)
| Template | Method | Endpoint | Description |
|---|---|---|---|
| List Canned Responses | GET | /canned_responses | List all canned responses |
| Get Canned Response | GET | /canned_responses/{{canned_response_id}} | Retrieve a specific canned response |
| List in Folder | GET | /canned_response_folders/{{folder_id}}/canned_responses | List canned responses in a folder |
Time Entries (4 templates)
| Template | Method | Endpoint | Description |
|---|---|---|---|
| List for Ticket | GET | /tickets/{{ticket_id}}/time_entries | List time entries for a ticket |
| Get Time Entry | GET | /time_entries/{{time_entry_id}} | Retrieve a specific time entry |
| Create Time Entry | POST | /tickets/{{ticket_id}}/time_entries | Log time against a ticket |
| Update Time Entry | PUT | /time_entries/{{time_entry_id}} | Update a time entry |
Search (4 templates)
| Template | Method | Endpoint | Description |
|---|---|---|---|
| Search Tickets | GET | /search/tickets?query="{{query}}" | Search tickets with Freshdesk query |
| Search Contacts | GET | /search/contacts?query="{{term}}" | Search contacts by name, email, or phone |
| Search Companies | GET | /search/companies?query="{{name}}" | Search companies by name or domain |
| Search Agents | GET | /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
| Value | Meaning |
|---|---|
| 1 | Low |
| 2 | Medium |
| 3 | High |
| 4 | Urgent |
Ticket Status
| Value | Meaning |
|---|---|
| 2 | Open |
| 3 | Pending |
| 4 | Resolved |
| 5 | Closed |
Source
| Value | Meaning |
|---|---|
| 1 | |
| 2 | Portal |
| 3 | Phone |
| 7 | Chat |
| 9 | Feedback Widget |
| 10 | Outbound 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
| Parameter | Type | Required | Description |
|---|---|---|---|
| subject | string | Yes | Ticket subject line |
| description | string | Yes | Ticket body (HTML supported) |
| email / requester_id | string / integer | One required | Requester email or existing contact ID |
| priority | integer | No | 1=Low, 2=Medium, 3=High, 4=Urgent |
| status | integer | No | 2=Open, 3=Pending, 4=Resolved, 5=Closed |
| source | integer | No | 1=Email, 2=Portal, 3=Phone, 7=Chat |
| tags | string[] | No | Array of tag strings |
| type | string | No | Ticket 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
| Parameter | Type | Required | Description |
|---|---|---|---|
| name | string | Yes | Full name of the contact |
| string | Recommended | Primary email address | |
| phone | string | No | Phone number |
| company_id | integer | No | Link to existing company |
| description | string | No | Short bio or notes |
{
"name": "John Smith",
"email": "[email protected]",
"phone": "+15551234567",
"description": "Called in regarding billing inquiry"
}Create Company
| Parameter | Type | Required | Description |
|---|---|---|---|
| name | string | Yes | Company name |
| domains | string[] | No | Company email domains (e.g., ["techcorp.com"]) |
| description | string | No | Company description |
Update Ticket
| Parameter | Type | Required | Description |
|---|---|---|---|
| ticket_id | integer | Yes (path) | Ticket ID to update |
| status | integer | No | New status value |
| priority | integer | No | New priority value |
| agent_id | integer | No | Assign to a specific agent |
| tags | string[] | No | Replace all tags |
Update Contact
| Parameter | Type | Required | Description |
|---|---|---|---|
| contact_id | integer | Yes (path) | Contact ID to update |
| name | string | No | Updated name |
| string | No | Updated email | |
| phone | string | No | Updated 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 Code | Meaning | Common Cause |
|---|---|---|
| 401 Unauthorized | Invalid API key | Check your API key in Freshdesk profile settings |
| 403 Forbidden | Rate limit exceeded or insufficient permissions | Freshdesk rate limits vary by plan. Wait and retry. |
| 404 Not Found | Resource not found | The ticket, contact, or company ID does not exist |
| 422 Validation Error | Invalid request body | Check required fields. Common: missing subject/description for tickets. |
Last updated: March 2026