Integrations

Zoho Desk

Connect Zoho Desk to manage tickets, customer replies, contacts, accounts, agents, tasks, the knowledge base, and support reports.

OAuth authorizationSupport & MessagingZoho Desk API docsZoho Desk MCP server overview

You paste the Client ID and Client secret of a Server-based Application you register in the Zoho API Console, then sign in with Zoho and pick the Zoho Desk organization to connect.

Setup time
6 min
Auth
OAuth authorization
API base URL
https://desk.zoho.com/api/v1
Rate limits
Per portal, per day, API credits by edition: Free 5,000; Express 25,000 plus 100 per user; Standard 50,000 plus 250 per user; Professional 75,000 plus 500 per user; Enterprise 100,000 plus 1,000 per user. At the same time: Free 5, Express and Standard 10, Professional 15, Enterprise 25. Zoho mints at most 10 access tokens per refresh token every 10 minutes.

Before you begin

  • A Zoho Desk organization on any edition, the free one included.
  • A Zoho Desk user whose profile can see what the AI should work with. An admin reaches everything.
  • Knowing which Zoho data center your account lives in: the domain you sign in at, such as zoho.com, zoho.eu, zoho.in or zoho.com.au.
  • PopMCP's callback URL from the connect form: https://app.popmcp.com/api/providers/zoho-desk/callback

Get your credentials

Open the API Console for your data center

Sign in at api-console.zoho.com as the Zoho user whose Zoho Desk access the AI should have. If your Zoho account lives in another data center, use that data center's console instead, for example api-console.zoho.eu, api-console.zoho.in or api-console.zoho.com.au. Click Get Started on your first visit, or Add Client if you already have clients.

Open this screen →

api-console.zoho.com
ops@acme.com
API Console / Applications

Applications

Clients registered to call Zoho APIs with OAuth 2.0.

Add Client
Client nameClient typeClient ID
Reporting scriptCreated Mar 4, 2026Self Client1000.7Q2L****WK9T

The console shows the clients of the data center you signed in to. A client made at api-console.zoho.eu does not appear at api-console.zoho.com.

Choose Server-based Applications

Pick Server-based Applications and click Create Now. PopMCP signs you in through a redirect, so the other client types, Self Client included, cannot complete the connection.

Open this screen →

api-console.zoho.com/add
ops@acme.com
API Console / Applications / Choose a client type

Choose a client type

The client type decides how users authorize your application.

Client typeUse it for
Client-based ApplicationsApps that run only in the browser
Server-based ApplicationsPick this oneWeb apps with a server that redirect users to Zoho to authorize
Mobile-based ApplicationsApps on phones and tablets
Non-browser Mobile ApplicationsDevices without a browser, such as smart TVs
Self ClientBack-end scripts with no redirect
Create Now

Server-based Applications is the only type that accepts PopMCP's redirect URL.

Name the client and add PopMCP's redirect URI

Enter a Client Name such as PopMCP and any Homepage URL, for example https://app.popmcp.com. Paste https://app.popmcp.com/api/providers/zoho-desk/callback into Authorized Redirect URI, then click Create.

Open this screen →

api-console.zoho.com/add
ops@acme.com
API Console / Applications / Server-based Applications

Server-based Applications

Enter the client's details.

Client details
Client Name
PopMCP
Homepage URL
https://app.popmcp.com
Authorized Redirect URI
https://app.popmcp.com/api/providers/zoho-desk/callback
CreateCancel

Zoho matches the redirect URI exactly, so paste it from the PopMCP connect form rather than typing it.

Copy the Client ID and Client Secret

Open the Client Secret tab and copy Client ID (it starts with 1000.) and Client Secret. You only need the Settings tab if people in other data centers will sign in through this client: there you can turn on Multi-DC and tick their data centers.

Open this screen →

api-console.zoho.com/client/1000.X8RT****MQ2Z
ops@acme.com
API Console / PopMCP / Client Secret

PopMCP

Server-based Applications

Client DetailsClient SecretSettings
Client Secret
Client ID
1000.X8RT****MQ2Z
Client Secret
4c1f****b07e

The Client ID stays the same in every data center; with Multi-DC on, Zoho can give each data center its own secret.

Paste both values into PopMCP, sign in and pick the organization

In PopMCP, paste the values into Client ID and Client secret. Only if you created the client outside zoho.com, open More options and type that data center into Zoho data center, for example EU, IN or AU. Click Sign in with Zoho and accept the permissions. If you have several Zoho Desk organizations, Zoho asks you to choose one on its consent screen: choose the one you want here, because the sign-in only works for that one. PopMCP then lists the organization: pick it and the workspace it belongs in.

Connect in PopMCP

Open your workspace, choose Zoho Desk in the marketplace, and fill in the connect dialog:

FieldWhat to enter
Client IDtextThe "Client ID" on your app's Client Secret tab.
Client secretsecretThe "Client Secret" on the same tab. Stored encrypted and used only on the server.Encrypted with AES-256-GCM on save and never shown again.
Zoho data centertextOnly when your app was made outside zoho.com: the data center its console is in, e.g. EU (zoho.eu), IN, AU, JP, CA, SA or CN. One of: US, EU, IN, AU, JP, CA, SA, UK, AE, SG, CN.
Authorized Redirect URI
https://app.popmcp.com/api/providers/zoho-desk/callback

At api-console.zoho.com choose "Server-based Applications", set any homepage URL, and paste this exact URL as the Authorized Redirect URI.

PopMCP verifies the credential against Zoho Desk immediately. On success the connection flips to Verified and its MCP tools are provisioned.

Permissions PopMCP requests

These are the scopes sent to Zoho Desk at authorization time.

ScopeWhy PopMCP asks for it
Desk.InstantMessages.READReads instant messaging channels, sessions and messages.
Desk.accounts.READReads customer accounts.
Desk.activities.calls.READReads calls.
Desk.activities.events.READReads calendar events.
Desk.activities.tasks.READReads tasks as activities.
Desk.agents.READReads agents and their presence.
Desk.articles.READReads knowledge base articles, categories and translations.
Desk.automations.READReads automation rules, SLAs and business hours.
Desk.basic.READReads the organization, agents, departments and other basic records. PopMCP checks your profile with it when you connect.
Desk.channels.email.READReads support email addresses and mail settings.
Desk.channels.helpcenter.READReads help centers, themes and portal users.
Desk.community.READReads community categories, topics and comments.
Desk.contacts.READReads contacts, their accounts and their history.
Desk.contracts.READReads contracts.
Desk.custommodule.READReads records in custom modules.
Desk.departments.READReads departments.
Desk.events.READReads webhook and event subscriptions.
Desk.featuresettings.READReads feature settings.
Desk.fields.READReads custom fields.
Desk.integrations.READReads connected integrations.
Desk.layouts.READReads ticket layouts and their rules.
Desk.modules.READReads modules.
Desk.organization.READReads organization settings. PopMCP lists your organizations with it when you connect.
Desk.permissions.READReads profiles, roles and sharing rules.
Desk.privacysettings.READReads privacy settings.
Desk.products.READReads products.
Desk.sandbox.READReads sandboxes.
Desk.search.READReads search across modules.
Desk.settings.READReads settings across the portal.
Desk.tasks.READReads tasks.
Desk.teams.READReads teams.
Desk.templates.READReads email and ticket templates.
Desk.tickets.READReads tickets, threads, comments, attachments, tags and time entries.
Desk.InstantMessages.CREATECreates instant messaging channels, sessions and messages.
Desk.InstantMessages.UPDATEChanges instant messaging channels, sessions and messages.
Desk.accounts.CREATECreates customer accounts.
Desk.accounts.DELETEDeletes customer accounts.
Desk.accounts.UPDATEChanges customer accounts.
Desk.activities.calls.CREATECreates calls.
Desk.activities.calls.DELETEDeletes calls.
Desk.activities.calls.UPDATEChanges calls.
Desk.activities.events.CREATECreates calendar events.
Desk.activities.events.DELETEDeletes calendar events.
Desk.activities.events.UPDATEChanges calendar events.
Desk.activities.tasks.CREATECreates tasks as activities.
Desk.activities.tasks.DELETEDeletes tasks as activities.
Desk.activities.tasks.UPDATEChanges tasks as activities.
Desk.agents.CREATECreates agents and their presence.
Desk.agents.DELETEDeletes agents and their presence.
Desk.agents.UPDATEChanges agents and their presence.
Desk.articles.CREATECreates knowledge base articles, categories and translations.
Desk.articles.DELETEDeletes knowledge base articles, categories and translations.
Desk.articles.UPDATEChanges knowledge base articles, categories and translations.
Desk.automations.CREATECreates automation rules, SLAs and business hours.
Desk.automations.DELETEDeletes automation rules, SLAs and business hours.
Desk.automations.UPDATEChanges automation rules, SLAs and business hours.
Desk.basic.CREATECreates the organization, agents, departments and other basic records.
Desk.basic.UPDATEChanges the organization, agents, departments and other basic records.
Desk.channels.email.CREATECreates support email addresses and mail settings.
Desk.channels.email.DELETEDeletes support email addresses and mail settings.
Desk.channels.email.UPDATEChanges support email addresses and mail settings.
Desk.channels.helpcenter.CREATECreates help centers, themes and portal users.
Desk.channels.helpcenter.DELETEDeletes help centers, themes and portal users.
Desk.channels.helpcenter.UPDATEChanges help centers, themes and portal users.
Desk.community.CREATECreates community categories, topics and comments.
Desk.community.DELETEDeletes community categories, topics and comments.
Desk.community.UPDATEChanges community categories, topics and comments.
Desk.contacts.CREATECreates contacts, their accounts and their history.
Desk.contacts.DELETEDeletes contacts, their accounts and their history.
Desk.contacts.UPDATEChanges contacts, their accounts and their history.
Desk.contracts.CREATECreates contracts.
Desk.contracts.UPDATEChanges contracts.
Desk.custommodule.CREATECreates records in custom modules.
Desk.custommodule.UPDATEChanges records in custom modules.
Desk.departments.CREATECreates departments.
Desk.departments.UPDATEChanges departments.
Desk.events.CREATECreates webhook and event subscriptions.
Desk.events.DELETEDeletes webhook and event subscriptions.
Desk.events.UPDATEChanges webhook and event subscriptions.
Desk.featuresettings.UPDATEChanges feature settings.
Desk.fields.CREATECreates custom fields.
Desk.fields.DELETEDeletes custom fields.
Desk.fields.UPDATEChanges custom fields.
Desk.integrations.CREATECreates connected integrations.
Desk.integrations.UPDATEChanges connected integrations.
Desk.layouts.CREATECreates ticket layouts and their rules.
Desk.layouts.DELETEDeletes ticket layouts and their rules.
Desk.layouts.UPDATEChanges ticket layouts and their rules.
Desk.modules.CREATECreates modules.
Desk.modules.UPDATEChanges modules.
Desk.organization.UPDATEChanges organization settings.
Desk.permissions.CREATECreates profiles, roles and sharing rules.
Desk.permissions.DELETEDeletes profiles, roles and sharing rules.
Desk.permissions.UPDATEChanges profiles, roles and sharing rules.
Desk.products.CREATECreates products.
Desk.products.DELETEDeletes products.
Desk.products.UPDATEChanges products.
Desk.sandbox.CREATECreates sandboxes.
Desk.sandbox.UPDATEChanges sandboxes.
Desk.settings.CREATECreates settings across the portal.
Desk.settings.DELETEDeletes settings across the portal.
Desk.settings.UPDATEChanges settings across the portal.
Desk.tasks.CREATECreates tasks.
Desk.tasks.DELETEDeletes tasks.
Desk.tasks.UPDATEChanges tasks.
Desk.teams.CREATECreates teams.
Desk.teams.DELETEDeletes teams.
Desk.teams.UPDATEChanges teams.
Desk.templates.CREATECreates email and ticket templates.
Desk.templates.DELETEDeletes email and ticket templates.
Desk.templates.UPDATEChanges email and ticket templates.
Desk.tickets.CREATECreates tickets, threads, comments, attachments, tags and time entries.
Desk.tickets.DELETEDeletes tickets, threads, comments, attachments, tags and time entries.
Desk.tickets.UPDATEChanges tickets and sends replies to customers.

Verify it worked

PopMCP shows Zoho Desk as Connected under your organization's name, and zoho_desk_get_my_info returns the agent you signed in as while zoho_desk_list_tickets lists your tickets.

Troubleshooting

"Zoho did not accept the Client ID and Client secret for the United States data center"

Why: The client was created in another data center's console, such as api-console.zoho.eu, while **Zoho data center** was left empty, or one of the values was mistyped.

Fix: Type that data center (EU, IN, AU, JP, CA, SA, UK, AE, SG or CN) into **Zoho data center** under **More options**, or turn on Multi-DC on the client's **Settings** tab. Recopy both values from the **Client Secret** tab.

"Zoho rejected the redirect URI"

Why: The client's **Authorized Redirect URI** does not exactly match PopMCP's callback.

Fix: Open the client in the API Console, correct **Authorized Redirect URI** on the **Client Details** tab to `https://app.popmcp.com/api/providers/zoho-desk/callback`, save, and connect again.

"The Zoho sign-in expired before it could be completed"

Why: Zoho's authorization codes last two minutes, and the consent screen was left open too long.

Fix: Click **Sign in with Zoho** again and accept the consent screen without waiting.

"This Zoho account has no Zoho Desk organization"

Why: You signed in with a Zoho account that has no Zoho Desk organization in that data center.

Fix: Sign in with the Zoho account you use for Zoho Desk, or start a Zoho Desk organization first.

"Zoho tied this sign-in to a different Zoho Desk organization"

Why: You have several Zoho Desk organizations and chose another one on Zoho's consent screen.

Fix: Connect again and choose the same organization on Zoho's consent screen as in PopMCP. To connect a second organization, connect it in another workspace.

"Zoho Desk refused to list your organizations"

Why: The permissions were not all accepted, or the Zoho user has no Zoho Desk seat.

Fix: Connect again and accept every permission on the consent screen, or ask an admin to connect.

A working connection stops with "Zoho no longer accepts this connection's authorization"

Why: The refresh token was revoked, the password changed, or more than 20 connections were made for the same Zoho user, which makes Zoho retire the oldest.

Fix: Disconnect and reconnect Zoho Desk.

A tool says this portal has used its API credits for today

Why: Zoho Desk counts API credits per portal per day, by edition and number of users, and resets them at midnight in its data center's time zone. Reading one record costs 1 credit and a list costs 3 or more, rising the deeper it reaches.

Fix: Wait for the reset, filter lists rather than paging deep, or ask your Zoho Desk super admin to buy more credits. **Setup, Developer Space, APIs** shows what has been used.

A tool says it needs Desk.exports.CUSTOM, Desk.imports.CUSTOM, Desk.sandbox.deploy.CUSTOM or a Desk.qaautomation scope

Why: PopMCP does not ask Zoho for these permissions yet, so bulk export, import, sandbox deployment and QA automation tools are refused.

Fix: Contact PopMCP support if you need them.

Reference

On this page