Client Credentials Flow

Use the Client Credentials Flow when your application needs to communicate with ZoomInfo without requiring a user to sign in. This flow is designed for server-to-server integrations, background services, scheduled jobs, and other scenarios where your application acts on its own rather than on behalf of an individual user.

During this flow, your application exchanges its client ID and client secret for an access token. Because no user authentication occurs, you must select an integration user when creating your application. This user is used to attribute all API requests and actions performed by the integration.


Common use cases include:

  • Data synchronization: Automatically sync ZoomInfo data on a scheduled basis to keep your CRM or internal systems enriched with the latest information.
  • Backend services: Power server-side applications or workflows that access ZoomInfo APIs without requiring users to sign in.
  • Internal applications: Integrate ZoomInfo into internal tools where all users share the same application-level access and tracking activity for individual users isn't necessary.

Exchange Client Credentials for Access Token

To request an access token, send a POST request to the token endpoint. You can provide your client credentials in one of two ways:

  • HTTP Basic Authentication (recommended) – Include the credentials in the Authorization header.
  • Request Body Parameters – Pass the credentials in the request body.

POST https://api.zoominfo.com/gtm/oauth/v1/token
Authorization: Basic *********************************
Content-Type: application/x-www-form-urlencoded
Accept: application/json
grant_type=client_credentials
POST https://api.zoominfo.com/gtm/oauth/v1/token
Content-Type: application/x-www-form-urlencoded
Accept: application/json
grant_type=client_credentials&
client_id=0oaf6t3osgvaPvy4E1d7&
client_secret=***************************

The following parameters are required for each token exchange request

ParameterDescription
grant_typeThe type of validation that the client can provide to prove it can be issued access tokens. For this flow the value is always client_credentials

The following parameters are optional for each token exchange request

ParameterDescription
scope(Optional) A space-delimited list of scopes to apply to the generated access token. If provided, the requested scopes must be a subset of the scopes configured for your application in the ZoomInfo Developer Portal. Requests containing invalid scopes will return an error. If omitted, the access token is issued with all scopes configured for the application. For the complete list of available scopes, see ZoomInfo Scopes.

Upon successful verification of the external client's credentials, ZoomInfo's authorization server will respond with the access token. The response will always be encoded in the application/json content type.

{
  "access_token": "eyJraWQiOiJKdThxUW1tTUx1SG9QSEFVQlJnUmh...jnIn951t3kLf6VZ6SOsYKSVY9kGeNbCGkufCNLQ",
  "expires_in": 1000,
  "scope": "api:data:company api:data:contact api:audience:read...",
  "token_type": "Bearer"
}
ParameterDescription
access_tokenOAuth token that can be used by applications calling the ZoomInfo API
expires_inThe length of time, in seconds, that the access token is valid
scopeThe list of scopes that are applied to this access token
token_typeDenotes the type of token provided. This value will always be "Bearer" but is included for completeness. This indicates that this token is meant to be included in the `Authorization` header using the bearer format. See RFC-6750 for more information on Bearer token usage in OAuth.


Did this page help you?