Generate Access Token and Refresh Token

OAuth2.0 requests are usually authenticated with an access token, which is passed as a bearer token. To use this access token, you need to construct a normal HTTP request and include it in an Authorization header along with the value of Bearer.


You must use your domain-specific Zoho Accounts URL to generate access and refresh tokens. The following are the various domains and their corresponding accounts URLs.

  • For US:
  • For AU:
  • For EU:
  • For IN:
  • For CA:
  • For SA:
  • For CN:
  • For JP:

To generate access and refresh token:

  1. Make a POST request with the following URL. Replace {Accounts_URL} with your domain-specific Zoho accounts URL when you make the request.


    Note: For security reasons, pass the below parameters in the body of your request as form-data.

    Request Parameters

    grant_typeEnter the value as "authorization_code".
    client_idSpecify client-id obtained from the connected app.
    client_secretSpecify client-secret obtained from the connected app.
    redirect_uriSpecify the Callback URL that you registered during the app registration.
    codeEnter the grant token generated from the previous step.
  2. If the request is successful, you would receive the following:

        "access_token": "{access_token}",
        "refresh_token": "{refresh_token}",
        "api_domain": "",
        "token_type": "Bearer",
        "expires_in": 3600

    Response Parameters

    access_tokenAccess token to access ZohoRecruit APIs
    refresh_tokenRefresh token to obtain new access tokens
    expires_inTime in seconds after which the access token expires
    api_domainDomain name of the API. Use this domain in your requests to make API calls to Zoho Recruit.
    token_typeType of token obtained. "Bearer" indicates this is an access token.

This completes the authentication. Once your app receives the access token, send the token in your HTTP authorization header to Zoho Recruit API with the value "Zoho-oauthtoken {access_token}" for each endpoint (for each request).


  • Each access token is valid for only an hour and used only for the operations defined in the scope.
  • Refresh token does not expire. Use it to refresh access tokens when they expire.
  • You can only generate a maximum of five refresh tokens in a minute.

Possible Errors

  • You have passed an invalid Client ID or secret.
  • Domain mismatch. You have registered the client and generated the grant token in a certain domain (US), but generating the tokens from a different domain (EU).
  • You have passed the wrong client secret when multi-DC is enabled.


  • Specify the correct client ID and secret.
  • Ensure that you generate the grant, access, and refresh tokens from the same domain using the same domain URL
    Enable Multi-DC for your client to generate tokens from any domain.
  • Each DC holds a unique client secret. Ensure to pass the right client secret for that DC.
  • The grant token has expired.
  • You have already used the grant token.
  • The refresh token to generate a new access token is wrong or revoked.


  • The grant token is valid only for one minute in the redirection-based flow. Generate the access and refresh tokens before the grant token expires.
  • You can use the grant token only once.
  • Specify the correct refresh token value while refreshing an access token.
invalid_redirect_uriThe redirect URI in the request mismatches the one registered in the developer console.Specify the correct redirect URI in the request.