> ## Documentation Index
> Fetch the complete documentation index at: https://nango.dev/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Zoho

> Access the Zoho API in 2 minutes 💨

<Tabs>
  <Tab title="🚀 Quickstart">
    <Steps>
      <Step title="Create an integration">
        In Nango ([free signup](https://app.nango.dev)), go to [Integrations](https://app.nango.dev/dev/integrations) -> *Configure New Integration* -> *Zoho*.
      </Step>

      <Step title="Authorize Zoho">
        Go to [Connections](https://app.nango.dev/dev/connections) -> *Add Test Connection* -> *Authorize*, then log in to Zoho. Later, you'll let your users do the same directly from your app.
      </Step>

      <Step title="Call the Zoho API">
        Let's make your first request to the Zoho API (fetch a list of contacts). Replace the placeholders below with your [secret key](https://app.nango.dev/dev/environment-settings), [integration ID](https://app.nango.dev/dev/integrations), and [connection ID](https://app.nango.dev/dev/connections):

        <Tabs>
          <Tab title="cURL">
            ```bash theme={null}
            curl "https://api.nango.dev/proxy/crm/v2/Contacts?per_page=10" \
              -H "Authorization: Bearer <NANGO-SECRET-KEY>" \
              -H "Provider-Config-Key: <INTEGRATION-ID>" \
              -H "Connection-Id: <CONNECTION-ID>"
            ```
          </Tab>

          <Tab title="Node">
            Install Nango's backend SDK with `npm i @nangohq/node`. Then run:

            ```typescript theme={null}
            import { Nango } from '@nangohq/node';

            const nango = new Nango({ secretKey: '<NANGO-SECRET-KEY>' });

            const res = await nango.get({
                endpoint: '/crm/v2/Contacts',
                providerConfigKey: '<INTEGRATION-ID>',
                params: {
                  per_page: 10
                },
                connectionId: '<CONNECTION-ID>'
            });

            console.log(JSON.stringify(res.data.data, null, 2));
            ```
          </Tab>
        </Tabs>

        Or fetch credentials dynamically via the [Node SDK](/reference/sdks/node#get-a-connection-with-credentials) or [API](/reference/api/connection/get).
      </Step>
    </Steps>

    ✅ You're connected! Check the [Logs](https://app.nango.dev/dev/logs) tab in Nango to inspect requests.

    <Tip>
      Next step: [Embed the auth flow](/guides/primitives/auth) in your app to let your users connect their Zoho accounts.
    </Tip>
  </Tab>

  <Tab title="🧑‍💻 OAuth app setup">
    <Steps>
      <Step title="Create a Zoho account">
        If you don't already have one, go to [Zoho's signup page](https://www.zoho.com/signup.html) and create one.
      </Step>

      <Step title="Access the Zoho API Console">
        1. Go to the [Zoho API Console](https://api-console.zoho.com/).
        2. Sign in with your Zoho account if prompted.
      </Step>

      <Step title="Create a new client">
        1. In the API Console, click on the **+ ADD CLIENT** button and select **Server-based Applications** as your client type.
        2. Fill in all the required information. For **Authorized Redirect URIs** enter `https://api.nango.dev/oauth/callback`
        3. Click **Create** to register your client. You will then receive a **Client ID** and **Client Secret**, which are required to configure your integration in Nango.
      </Step>

      <Step title="Configure Multi-DC">
        1. On the **Settings** tab, check the option to use the same OAuth credentials for all data centers, this enables you to handle users from different regions
      </Step>

      <Step title="Next">
        Follow the [*Quickstart*](/getting-started/quickstart).
      </Step>
    </Steps>

    ## Common Scopes

    | Scope                    | Description                 |
    | ------------------------ | --------------------------- |
    | `AaaServer.profile.READ` | Read access to user profile |
  </Tab>

  <Tab title="🔗 Useful links">
    | Topic             | Links                                                                                                  |
    | ----------------- | ------------------------------------------------------------------------------------------------------ |
    | Authorization     | [Guide to connect to Zoho using Connect UI](/integrations/all/zoho/connect)                            |
    | General           | [Zoho API Console](https://api-console.zoho.com/)                                                      |
    |                   | [Zoho Website](https://www.zoho.com)                                                                   |
    | Developer / OAuth | [OAuth 2.0 Overview](https://www.zoho.com/accounts/protocol/oauth.html)                                |
    |                   | [Get Authorization Code](https://www.zoho.com/accounts/protocol/oauth/web-apps/authorization.html)     |
    |                   | [Get Access Token](https://www.zoho.com/accounts/protocol/oauth/web-apps/access-token.html)            |
    |                   | [Refresh Access Token](https://www.zoho.com/accounts/protocol/oauth/web-apps/access-token-expiry.html) |
    |                   | [Multi DC Support](https://www.zoho.com/accounts/protocol/oauth/multi-dc.html)                         |
    |                   | [OAuth Scopes](https://www.zoho.com/accounts/protocol/oauth/scope.html)                                |
    | API               | [Zoho REST APIs](https://www.zoho.com/developer/rest-api.html)                                         |

    <Note>Contribute useful links by [editing this page](https://github.com/nangohq/nango/tree/master/docs/integrations/all/zoho.mdx)</Note>
  </Tab>

  <Tab title="🚨 API gotchas">
    * Zoho offers multiple services, each with its own API. Have a look at the various services offered by Nango to integrate them independently. Each Zoho service has its own specific API endpoints and scopes. The OAuth setup process is similar across all Zoho services.
    * Zoho uses datacenter-specific URLs for authentication. Make sure to use the correct datacenter domain extension (`com`, `eu`, `in`, `com.cn`, `com.au`) based on where your user's account is registered.
    * Zoho has rate limits that vary by service. Check the specific service documentation for details.
    * If your application needs to access multiple Zoho services, you need to request scopes for each service during the authorization process.
    * For production applications, consider implementing [multi-datacenter support](https://www.zoho.com/accounts/protocol/oauth/multi-dc.html) to handle users from different regions.

    <Note>Contribute API gotchas by [editing this page](https://github.com/nangohq/nango/tree/master/docs/integrations/all/zoho.mdx)</Note>
  </Tab>
</Tabs>

<Info>
  Questions? Join us in the [Slack community](https://nango.dev/slack).
</Info>
