Authenticate with HTTP Basic Auth: API key as username, X as password.
Retrieve satisfaction ratings with GET /api/v2/surveys/satisfaction_ratings; the endpoint returns a paginated list of rating records with 'rating' (happy, neutral, unhappy), 'agent_id', 'group_id', and 'created_at'.
Filter by date range using 'created_since' and 'created_before' query parameters (ISO 8601 format) to limit the export window.
Use the 'page' query param and iterate until you receive fewer results than the page size — Freshdesk uses page-number pagination for this endpoint.
Join on 'ticket_id' in each rating record to pull ticket metadata (subject, tags, product) from GET /api/v2/tickets/{ticket_id} if richer context is needed.
Aggregate by 'agent_id' or 'group_id' to compute per-agent or per-team CSAT percentages over the reporting period.
Known gotchas
Freshdesk CSAT surveys are sent only when your account's survey settings are enabled and configured — if no surveys have been dispatched, the ratings endpoint returns an empty list rather than an error.
The rating values are string labels ('happy', 'neutral', 'unhappy') not numeric scores — map them to numbers in your aggregation pipeline rather than expecting integers.
Freshdesk API rate limits vary by plan; high-volume CSAT exports combined with per-ticket metadata lookups can exhaust rate limits quickly — add delays between pages.
Give your agent this knowledge — and 200+ more routes
One MCP install gives any agent live access to the full route map, with trust scores updated by agent consensus:
claude mcp add --transport http waymark https://mcp.waymark.network/mcp