# Table of Contents - [Overview](#overview) - [ZoomInfo APIs](#zoominfo-apis) - [Error Handling ](#error-handling-) - [Zoominfo APIs](#zoominfo-apis) - [Overview](#overview) - [Overview](#overview) - [Contacts](#contacts) - [General Overview](#general-overview) - [Credit Usage and Limits](#credit-usage-and-limits) - [App Creation - Developer Portal Guide](#app-creation-developer-portal-guide) - [Ask Account Summary Question](#ask-account-summary-question) - [Get Account Summary](#get-account-summary) - [Authentication](#authentication) - [Get insights by type](#get-insights-by-type) - [Creates a new audience](#creates-a-new-audience) - [Lists all audiences](#lists-all-audiences) - [Companies](#companies) - [Gets audience upload status](#gets-audience-upload-status) - [Deletes audience by ID](#deletes-audience-by-id) - [Corporate Hierarchy](#corporate-hierarchy) - [Hashtags](#hashtags) - [Intent](#intent) - [Lookup Enrich Fields](#lookup-enrich-fields) - [Lookup Data](#lookup-data) - [Scoops](#scoops) - [Companies](#companies) - [News](#news) - [Technologies](#technologies) - [Gets existing audience by ID](#gets-existing-audience-by-id) - [Lookup Search Fields](#lookup-search-fields) - [Intent](#intent) - [News](#news) - [Contacts](#contacts) - [Usage Data](#usage-data) - [Scoops](#scoops) - [Upsert Content Interactions](#upsert-content-interactions) - [Updates audience by ID](#updates-audience-by-id) - [Delete content interaction](#delete-content-interaction) - [Org Charts](#org-charts) - [Get content interaction](#get-content-interaction) - [Creates new audience upload](#creates-new-audience-upload) - [Get GTM entities list](#get-gtm-entities-list) - [Get GTM entity fields](#get-gtm-entity-fields) - [Upsert GTM entity records](#upsert-gtm-entity-records) - [Recipes](#recipes) - [Get user entitlements](#get-user-entitlements) --- # Overview 📊 Data API - Overview [](https://docs.zoominfo.com/reference/overview#-data-api---overview) ================================================================================================ The Data API provides comprehensive access to search and retrieve various data types from ZoomInfo's extensive database. This powerful API enables you to access rich business intelligence data through a streamlined two-step process. 🔍 Available Data Types [](https://docs.zoominfo.com/reference/overview#-available-data-types) -------------------------------------------------------------------------------------------------- The Data API currently supports the following data types: * **Contact** - Individual professional profiles and contact information * **Company** - Business profiles and organizational data * **Scoops** - Business intelligence and company updates * **Intent** - Purchase intent signals and buyer behavior data * **News** - Industry news and company-related articles 🚀 API Workflow [](https://docs.zoominfo.com/reference/overview#-api-workflow) ---------------------------------------------------------------------------------- The standard flow for using the Data API consists of two main steps: ### 1\. 🔎 Search [](https://docs.zoominfo.com/reference/overview#1--search) Use a variety of parameters to identify specific records you wish to retrieve from the system. **Key Points:** * Counts against your **Rate Limit** and **Request Limit** * Does **NOT** count against your **Record Limit** or **Credits** * Helps you identify the exact records you need before enrichment ### 2\. 💎 Enrich [](https://docs.zoominfo.com/reference/overview#2--enrich) Once you've identified the desired record, use the appropriate Enrich endpoint to retrieve detailed information. **Features:** * Specify the exact record using unique ID (recommended) * Choose specific fields to retrieve * Alternative: Use search parameters similar to Search API **Usage Limits:** * Every enriched record counts against your **Record Limit** * First-time retrieval within 12 months charges a **Credit** * See [Credit Usage and Limits](https://docs.zoominfo.com/reference/link-to-credit-docs) for more information 📋 HTTP Status Codes [](https://docs.zoominfo.com/reference/overview#-http-status-codes) -------------------------------------------------------------------------------------------- The following status codes apply to all Search and Enrich endpoints within the Data API: | Status Code | Description | Details | | --- | --- | --- | | `200` | ✅ **Success** | Request completed successfully | | `400` | ❌ **Bad Request** | Invalid request parameters or format | | `401` | 🔐 **Unauthorized** | Authentication required or invalid credentials | | `403` | 🚫 **Forbidden** | Access denied - insufficient permissions | | `429` | ⏱️ **Too Many Requests** | Rate limit exceeded - please retry later | 💡 Best Practices [](https://docs.zoominfo.com/reference/overview#-best-practices) -------------------------------------------------------------------------------------- * **Use unique IDs** when calling Enrich endpoints for precise record retrieval * **Monitor your limits** to avoid hitting rate or record limits * **Cache results** when appropriate to minimize API calls * **Handle errors gracefully** with proper retry logic for rate limits 📚 Additional Resources [](https://docs.zoominfo.com/reference/overview#-additional-resources) -------------------------------------------------------------------------------------------------- * [API Authentication Guide](https://docs.zoominfo.com/docs/authentication#/) * [Rate Limiting Documentation](https://docs.zoominfo.com/docs/credit-usage-and-limits#/) * [Credit Usage and Billing](https://docs.zoominfo.com/docs/credit-usage-and-limits#/) * [API Examples and Tutorials](https://docs.zoominfo.com/reference/searchinterface_searchcontact#/) * * * _For technical support or questions, please contact our[Developer Support Team](https://docs.zoominfo.com/cdn-cgi/l/email-protection#e7838291828b88978295ca94929797889593a79d88888a8e898188c984888a) ._ --- # ZoomInfo APIs ZoomInfo APIs ZoomInfo APIs ============= Interactive documentation on all currently available ZoomInfo API endpoints. * Comprehensive endpoint documentation * Interactive API testing playground * Real-time code examples * Authentication and rate limiting guides [Get Started](https://docs.zoominfo.com/docs/general-overview) // ZoomInfo API Example const response = await fetch ( 'https://api.zoominfo.com/gtm/v1/data' ); const data = await response . json (); ### Guides General information that applies to all ZoomInfo APIs and best practices for integration. Learn about authentication, rate limiting, error handling, and common implementation patterns. [Learn More →](https://docs.zoominfo.com/docs/general-overview) ### API Docs Full documentation for each API Endpoint with detailed request/response schemas, parameter descriptions, and interactive examples to test API calls directly from your browser. [View Documentation →](https://docs.zoominfo.com/reference/overview#/) ### Legacy APIs Access ZoomInfo's legacy API endpoints and documentation. Find older API versions, authentication methods, and implementation guides. [View Legacy Docs →](https://api-docs.zoominfo.com/?version=latest#api-structure) --- # Error Handling 🚀 ZoomInfo API Documentation [](https://docs.zoominfo.com/docs/error-handling#-zoominfo-api-documentation) =============================================================================================================== Error Codes Reference [](https://docs.zoominfo.com/docs/error-handling#error-codes-reference) ================================================================================================= 🔴 Client Errors (4xx) [](https://docs.zoominfo.com/docs/error-handling#-client-errors-4xx) ----------------------------------------------------------------------------------------------- ### 400 – Bad Request [](https://docs.zoominfo.com/docs/error-handling#400--bad-request) | Error Code | Error Message | Recommended Action | | --- | --- | --- | | PFAPI0001 | _Disallowed field '\[field\_name\]' requested in query_ | Check user entitlements, remove disallowed fields, and verify field availability for the current API endpoint. | | PFAPI0002 | _One or more fields have validation errors_ | Remove disallowed fields, validate input values, and contact your administrator for access if needed. | | PFAPI0002 | _Required request parameters are missing: \[parameter\_name\]_ | Verify all required parameters are included. Refer to the API documentation for a complete list. | | PFAPI0002 | _Page number cannot be greater than max value 100_ | Ensure pagination does not exceed 100 pages. | | PFAPI0003 | _Invalid request body_ | Validate JSON syntax and ensure the structure matches the API schema. | | PFAPI0003 | _Invalid field requested_ | Remove or correct unrecognized fields. Refer to the official field documentation. | | PFAPI0003 | _Invalid field type_ | Match field types with the expected schema. Use proper data types. | | PFAPI0003 | _There is invalid field(s) in the request_ | Confirm that all fields match the schema definition. | | PFAPI0004 | _There is not sufficient info for your request. Please provide at least one input field._ | Add at least one valid input parameter. | | PFAPI0004 | _Missing required inputs, please provide a value for at least one of \[field1, field2, ...\]_ | Include one or more of the required fields listed. Refer to endpoint documentation. | | PFAPI0005 | _Invalid field requested_ | Ensure all field names are spelled correctly and are valid for the endpoint. | | PFAPI0006 | _Input parameter '\[parameter\]' is invalid - \[reason\]_ | Use lookup endpoints for valid enumerated values and format strings correctly. | | PFAPI0006 | _'\[fieldMin\]' cannot be greater than '\[fieldMax\]'_ | Ensure logical consistency between min and max values. | | PFAPI0006 | _Invalid 'topics' (or some other values)_ | Check field constraints and validate values against allowed inputs. | | PFAPI0008 | _Invalid field type_ | Ensure field types match the API specification. Convert inputs to appropriate types as needed. | | PFAPI0009 | _Invalid field '\[field\]' requested in query_ | Refer to the field list for valid values. Remove or correct invalid fields. | | PFAPI0009 | _OutputFields invalid or disallowed_ | Remove invalid entries from `outputFields`. Use lookup endpoints if needed to confirm valid fields. | ### 401 – Unauthorized [](https://docs.zoominfo.com/docs/error-handling#401--unauthorized) | Error Code | Error Message | Recommended Action | | --- | --- | --- | | ZI0001 | _The token provided is invalid. Please provide a valid token and try again._ | Verify the token format and contents. Regenerate if expired or malformed. | | ZI0001 | _The Authorization token is required and cannot be left blank. Please provide a valid token and try again._ | Include the `Authorization` header with a valid token in every request. | | ZI0001 | _Your session has expired. Please provide a valid token and try again._ | Re-authenticate and implement logic to refresh expired tokens automatically. | ### 403 – Forbidden [](https://docs.zoominfo.com/docs/error-handling#403--forbidden) | Error Code | Error Message | Recommended Action | | --- | --- | --- | | ZI0002 | _This application does not have the required scope to access the requested resource '\[resource\]'._ | Request additional scopes from your ZoomInfo Administrator. Confirm required scopes per endpoint in the API documentation. | | ZI0003 | _You do not have access to this endpoint. Please contact your ZoomInfo Account Manager for purchasing options._ | Review your account's access level. Contact your Account Manager to enable access or upgrade your subscription. | | ZI0003 | _You do not have permission to access the ZoomInfo API._ | Confirm your subscription includes API access. Contact ZoomInfo support or your Account Manager to enable access. | ### 429 – Too Many Requests [](https://docs.zoominfo.com/docs/error-handling#429--too-many-requests) | Error Code | Error Message | Recommended Action | | --- | --- | --- | | ZI0004 | _You have exceeded the rate limit for this resource. Please try again later._ | Implement exponential backoff. Review rate limits in the documentation. Consider request batching to reduce frequency. | * * * 🔴 Server Errors (5xx) [](https://docs.zoominfo.com/docs/error-handling#-server-errors-5xx) ----------------------------------------------------------------------------------------------- ### 500 – Internal Server Error [](https://docs.zoominfo.com/docs/error-handling#500--internal-server-error) | Error Code | Error Message | Recommended Action | | --- | --- | --- | | PFAPI0007 | _Internal Server Error_ | Retry after a short delay. If the issue persists, check system status or contact ZoomInfo support. | ### 504 – Gateway Timeout [](https://docs.zoominfo.com/docs/error-handling#504--gateway-timeout) | Error Code | Error Message | Recommended Action | | --- | --- | --- | | PFAPI0010 | _Gateway Timeout Exception_ | Retry the request after a delay. If timeouts are frequent, reduce request size or complexity, and contact support if needed. | * * * Best Practices for Error Handling [](https://docs.zoominfo.com/docs/error-handling#best-practices-for-error-handling) ------------------------------------------------------------------------------------------------------------------------- * **Implement proper retry logic** for 5xx errors with exponential backoff * **Cache authentication tokens** and refresh them before expiration * **Validate input parameters** before making API calls to avoid 4xx errors * **Monitor rate limits** and implement request throttling for 429 errors * **Log error details** for debugging while avoiding sensitive information exposure * **Provide meaningful error messages** to end users based on error codes * * * _For additional support and documentation, contact your ZoomInfo API representative._ Updated 12 days ago * * * --- # Zoominfo APIs Recipes ======= --- # Overview The Zoominfo APIs Model Context Protocol (MCP) server enables AI-powered code editors like Cursor and Windsurf, plus general-purpose tools like Claude Desktop, to interact directly with your Zoominfo APIs API and documentation. What is MCP? [](https://docs.zoominfo.com/docs/mcp#what-is-mcp) ------------------------------------------------------------------- Model Context Protocol (MCP) is an open standard that allows AI applications to securely access external data sources and tools. The Zoominfo APIs MCP server provides AI agents with: * **Direct API access** to Zoominfo APIs functionality * **Documentation search** capabilities * **Real-time data** from your Zoominfo APIs account * **Code generation** assistance for Zoominfo APIs integrations Zoominfo APIs MCP Server Setup [](https://docs.zoominfo.com/docs/mcp#zoominfo-apis-mcp-server-setup) -------------------------------------------------------------------------------------------------------- Zoominfo APIs hosts a remote MCP server at `https://docs.zoominfo.com/mcp`. Configure your AI development tools to connect to this server. If your APIs require authentication, you can pass in headers via query parameters or however headers are configured in your MCP client. **Add to `~/.cursor/mcp.json`:** JSON `{ "mcpServers": { "zoominfoenterprise": { "url": "https://docs.zoominfo.com/mcp" } } }` Testing Your MCP Setup [](https://docs.zoominfo.com/docs/mcp#testing-your-mcp-setup) ---------------------------------------------------------------------------------------- Once configured, you can test your MCP server connection: 1. **Open your AI editor** (Cursor, Windsurf, etc.) 2. **Start a new chat** with the AI assistant 3. **Ask about Zoominfo APIs** - try questions like: * "How do I \[common use case\]?" * "Show me an example of \[API functionality\]" * "Create a \[integration type\] using Zoominfo APIs" The AI should now have access to your Zoominfo APIs account data and documentation through the MCP server. Updated 12 days ago * * * --- # Overview Use the ZoomInfo connector to integrate ZoomInfo’s comprehensive B2B database with your AI assistant. This connection allows you to bring high-quality company and contact data directly into AI-powered conversations for personalized business intelligence. With the connector, you can ask natural-language questions like: * **Sales**: “Find all VP-level contacts at tech companies in San Francisco with 100–500 employees.” * **Marketing**: “Show me fast-growing SaaS companies in the Northeast that raised funding in the last 2 years.” * **Recruiting**: “Identify senior engineering managers at Fortune 500 companies with LinkedIn profiles.” * **Business Development**: “Give me ZoomInfo’s competitor profiles with revenue and employee growth trends.” * * * Requirements [](https://docs.zoominfo.com/docs/zi-api-mcp-overview#requirements) ------------------------------------------------------------------------------------ Before setup, make sure you meet the following: * **ZoomInfo subscription**: Co-Pilot, or legacy plan with API add-on * **AI assistant subscription**: A paid account (e.g., Claude Pro/Max/Team/Enterprise) that supports MCP (Model Context Protocol). * **Compatible AI assistants**: Claude and other MCP-enabled tools. * **Authentication**: Users must connect the assistant to the MCP using their ZoomInfo credentials. * **Limits**: Data usage follows ZoomInfo API limits and your subscription terms. * * * Supported Data [](https://docs.zoominfo.com/docs/zi-api-mcp-overview#supported-data) ---------------------------------------------------------------------------------------- ### Contact Information [](https://docs.zoominfo.com/docs/zi-api-mcp-overview#contact-information) * Names, job titles, emails, phone numbers * Departments, seniority, management levels * Company details, industries, experience * Validation dates, accuracy scores * Social media profiles, professional networks ### Company Information [](https://docs.zoominfo.com/docs/zi-api-mcp-overview#company-information) * Company names, industries, descriptions * Revenue, employee count, growth metrics * Headquarters, phone numbers, websites * Subsidiaries and parent company structures * Leadership teams and decision-makers * Market intelligence and competitive insights * * * Setup Instructions [](https://docs.zoominfo.com/docs/zi-api-mcp-overview#setup-instructions) ------------------------------------------------------------------------------------------------ ### Step 1: Configure Your AI Assistant [](https://docs.zoominfo.com/docs/zi-api-mcp-overview#step-1-configure-your-ai-assistant) 1. Open **Settings > Connectors (or Integrations)**. 2. Add a new MCP server connection. 3. Enter ZoomInfo MCP server URL: `https://mcp.zoominfo.com/mcp` 4. Save the configuration. ### Step 2: Authenticate with ZoomInfo [](https://docs.zoominfo.com/docs/zi-api-mcp-overview#step-2-authenticate-with-zoominfo) 1. Select **Connect to ZoomInfo** in your AI assistant. 2. Log in with your ZoomInfo username/password. 3. Approve the requested permissions. 4. You’ll be redirected back once connected. * * * Using the Connector [](https://docs.zoominfo.com/docs/zi-api-mcp-overview#using-the-connector) -------------------------------------------------------------------------------------------------- 1. Enable it in conversations: Turn on the ZoomInfo connector under **Tools/Connectors** in your AI assistant. 2. Ask natural questions like: * “Find marketing directors at SaaS companies in the Bay Area.” * “Get me detailed information about Zoom Video Communications.” * “Show technology companies in Austin with 50–200 employees growing quickly.” 3. Review results: * Contacts include accuracy scores. * Companies show financial and leadership details. * Use results to drive sales, recruiting, or research actions. * * * Best Practices [](https://docs.zoominfo.com/docs/zi-api-mcp-overview#best-practices) ---------------------------------------------------------------------------------------- * **Be specific**: Add job titles, locations, industries, and company sizes. * **Use accuracy scores**: Focus on higher-scoring contacts for better outreach. * **Combine search + enrichment**: Start broad, then request deep profiles. * **Respect limits**: Stay within your ZoomInfo API quota. * **Verify data**: Double-check critical info before big decisions. * * * Disconnecting the Connector [](https://docs.zoominfo.com/docs/zi-api-mcp-overview#disconnecting-the-connector) ------------------------------------------------------------------------------------------------------------------ 1. Go to **Settings > Connectors** in your AI assistant. 2. Select **ZoomInfo**. 3. Click **Disconnect** or **Remove**. 4. Confirm the action. * * * Data & Privacy [](https://docs.zoominfo.com/docs/zi-api-mcp-overview#data--privacy) --------------------------------------------------------------------------------------- * **Encryption**: All data uses HTTPS. * **Authentication**: OAuth2 with industry-standard security. * **Permissions**: The connector respects your ZoomInfo role-based access. * **No permanent storage**: AI assistants do not store ZoomInfo data. * **Auditing**: All usage is logged in ZoomInfo’s logging framework. * * * Troubleshooting [](https://docs.zoominfo.com/docs/zi-api-mcp-overview#troubleshooting) ------------------------------------------------------------------------------------------ * **Can’t connect?** Check credentials, server access, and permissions. * **No results?** Try broader queries. Verify subscription covers the data type. Check [API usage limits](https://docs.zoominfo.com/reference/userinterface_userusage#/versionsChe) . * **Authentication issues?** Re-authenticate. Clear cache/cookies. Ensure your ZoomInfo account is active. * **Limited data?** Verify subscription tier. Some datasets require higher plans. * * * Supported AI Assistants [](https://docs.zoominfo.com/docs/zi-api-mcp-overview#supported-ai-assistants) ---------------------------------------------------------------------------------------------------------- The ZoomInfo connector works with any AI assistant that supports MCP, including: * Claude (Anthropic) * Coming soon: Other MCP-compatible AI tools including GPT Updated 12 days ago * * * --- # Contacts ShellNodeRubyPHPPython Bearer Click `Try It!` to start a request and see the response here! --- # General Overview This documentation provides a comprehensive overview of the ZoomInfo API endpoints as defined by the TypeSpec specification. The API enables: * Searching and enriching contact and company records using ZoomInfo’s proprietary data * Accessing usage data for monitoring and reporting * Looking up available parameters and supported values for each endpoint and data type Base URL [](https://docs.zoominfo.com/docs/general-overview#base-url) ------------------------------------------------------------------------- plaintext `https://api.zoominfo.com/gtm` For in-depth usage examples, request/response schemas, and best practices, refer to the relevant sections of this documentation. Updated 12 days ago * * * --- # Credit Usage and Limits Rate Limit [](https://docs.zoominfo.com/docs/credit-usage-and-limits#rate-limit) ------------------------------------------------------------------------------------ All endpoints are subject to rate limiting at the gateway level. **Default Rate Limit:** 25 requests per second **Premium Limit Add-On:** 30 requests per second **Premium+ Limit Add-On:** 35 requests per second Record Limit [](https://docs.zoominfo.com/docs/credit-usage-and-limits#record-limit) ---------------------------------------------------------------------------------------- Customers are limited in the number of records they can enrich through the API based on their plan: **Default:** 25 records per credit purchased **Premium Limit Add-On:** 50 records per credit purchased **Premium+ Limit Add-On:** 100 records per credit purchased Request Limit [](https://docs.zoominfo.com/docs/credit-usage-and-limits#request-limit) ------------------------------------------------------------------------------------------ The number of API requests a customer can send is also limited by plan. This includes all request types unless otherwise noted. **Default:** 100 requests per credit purchased **Premium Limit Add-On:** 200 requests per credit purchased **Premium+ Limit Add-On:** Unlimited Credits [](https://docs.zoominfo.com/docs/credit-usage-and-limits#credits) ------------------------------------------------------------------------------ Customers purchase credits in bulk on an annual basis. Each time a record is enriched for the first time within a rolling 12-month period, one credit is consumed and the record is placed **Under Management** for one year from the initial enrichment date. While a record is under management, it can be enriched again without consuming an additional credit. However, each enrichment still counts against the customer’s **Record Limit**. Updated 12 days ago * * * --- # App Creation - Developer Portal Guide Okta Partner App Creation [](https://docs.zoominfo.com/docs/app-creation-developer-portal-guide#okta-partner-app-creation) ------------------------------------------------------------------------------------------------------------------------------ Partners and customers building custom applications that access ZoomInfo APIs must create an Okta application to authenticate and authorize users. This setup involves configuring an OpenID Connect (OIDC) application, specifying redirect URIs, and obtaining client credentials. Proper configuration of security settings and access permissions is essential for ensuring secure and seamless integration with the ZoomInfo API. ZoomInfo Developer Portal [](https://docs.zoominfo.com/docs/app-creation-developer-portal-guide#zoominfo-developer-portal) ------------------------------------------------------------------------------------------------------------------------------ To streamline the application setup process, ZoomInfo provides a dedicated **Developer Portal**. ### Overview [](https://docs.zoominfo.com/docs/app-creation-developer-portal-guide#overview) The ZoomInfo Developer Portal is a centralized platform for managing custom applications built on ZoomInfo APIs. Through the portal, customers and partners can: * Register new applications * Define and manage OAuth 2.0 scopes * Generate and rotate security credentials * View and update existing application configurations By registering applications with ZoomInfo's Okta identity provider, partners can securely enable OAuth 2.0 authentication for scalable, standards-compliant access to ZoomInfo APIs. ![](https://files.readme.io/3198d6476703014a4a9879a574e18280bdfaf75b655994090b1f5a4b03e7bd01-all-apps-view.png) Prerequisites [](https://docs.zoominfo.com/docs/app-creation-developer-portal-guide#prerequisites) ------------------------------------------------------------------------------------------------------ Before creating and registering an application through the ZoomInfo Developer Portal, ensure the following requirements are met: * Your organization must have an **Enterprise API** or **Copilot** package (or both). * A ZoomInfo admin must assign the **DevPortal** subscription to users or developers who will access the portal. To assign the DevPortal subscription: 1. Navigate to **Admin Portal > User Management > Users**. 2. Select the appropriate user. 3. In the **Subscription** dropdown, select **DevPortal**, and save the update. 4. The user will see the **DevPortal** option in the waffle menu the next time they log in. Application Types [](https://docs.zoominfo.com/docs/app-creation-developer-portal-guide#application-types) -------------------------------------------------------------------------------------------------------------- The ZoomInfo DevPortal supports the creation of two types of applications: ### Custom Applications for Internal Use [](https://docs.zoominfo.com/docs/app-creation-developer-portal-guide#custom-applications-for-internal-use) * Created and managed by customers within their own organization. * Intended for internal usage of ZoomInfo data. * Automatically approved upon registration in the DevPortal. ### Partner Applications for Third-Party and Internal Use [](https://docs.zoominfo.com/docs/app-creation-developer-portal-guide#partner-applications-for-third-party-and-internal-use) * Developed by partners for external user access (across tenant boundaries). * Must be reviewed and approved by ZoomInfo's API and Partnership product teams. * Access is restricted until the approval process is completed. * Customers attempting to register a Partner Application without prior approval will be denied. App Registration and Authentication [](https://docs.zoominfo.com/docs/app-creation-developer-portal-guide#app-registration-and-authentication) -------------------------------------------------------------------------------------------------------------------------------------------------- ZoomInfo uses **Okta**, a standards-compliant **OAuth 2.0** server, to manage secure app registration and authentication. Upon registering a new application in the DevPortal: * You will receive a **Client ID** and **Client Secret**. * These credentials enable your app to securely authenticate with ZoomInfo's API. * When a user accesses your application, the app connects directly with Okta. * Okta authenticates the user and authorizes access to requested data based on the user’s assigned permissions and scopes. ZoomInfo API Scopes and Endpoints [](https://docs.zoominfo.com/docs/app-creation-developer-portal-guide#zoominfo-api-scopes-and-endpoints) ---------------------------------------------------------------------------------------------------------------------------------------------- Each registered application must be assigned one or more **OAuth scopes**. Scopes define the specific types of data and actions the application can access. * Only assign the scopes necessary for your application's functionality. * Partner Applications may have additional restrictions on scope assignments. * API access is controlled by both the assigned scopes and the user’s access permissions. Refer to the API documentation for a complete list of available scopes and corresponding endpoints. ### Available Scopes [](https://docs.zoominfo.com/docs/app-creation-developer-portal-guide#available-scopes) | Category | Description | Display Name | Scope Value | | --- | --- | --- | --- | | **Copilot** | Read and access account summary features | Read Account Summaries | _api:account-summary:read_ | | **Marketing** | Create and Manage Audiences | Manage Audiences | _api:audience:manage_ | | | Read Audiences | Read Audiences | _api:audience:read_ | | | Create and Manage Audience Members | Manage Audience Members | _api:audience-member:manage_ | | | Read Audience Members | Read Audience Members | _api:audience-member:read_ | | **Data** | Search and enrich ZoomInfo Contact data | Contact | _api:data:contact_ | | | Search and enrich ZoomInfo Company data | Company | _api:data:company_ | | | Search and enrich ZoomInfo Scoops data | Scoops | _api:data:scoops_ | | | Search and enrich ZoomInfo News data | News | _api:data:news_ | | | Search and enrich ZoomInfo Intent data | Intent | _api:data:intent_ | Creating an Internal Use App [](https://docs.zoominfo.com/docs/app-creation-developer-portal-guide#creating-an-internal-use-app) ------------------------------------------------------------------------------------------------------------------------------------ Develop a custom app for use within your organization which will receive automatic approval for immediate deployment. ### Step-by-Step Guide [](https://docs.zoominfo.com/docs/app-creation-developer-portal-guide#step-by-step-guide) 1. **Access the DevPortal** * Navigate to the ZoomInfo Developer Portal 2. **Create New App** * Click **Create App** to register a new application ![](https://files.readme.io/2ef0b9dbcb37ef0e65824a508970f582db88bfcb0d04ba4056c5f3ff8ea03ca7-create-app-button.png) 3. **Provide App Details** * Enter app name and upload logo * Select **"For internal use only"** for the Application Type ![](https://files.readme.io/f3fdca02926290185bdaa2751e8c0522a362e2140723b57172978cc76323f78c-create-app-page.png) 4. **Configure Redirect URIs** * Set up Sign-in redirect URIs * ZoomInfo will send authentication responses and ID tokens to these URIs ![](https://files.readme.io/66a92babf8f68ed0be525443dad4148ba662ee5daee992ba70b78ea959e9f24b-sign-in-redirect-uris.png) 5. **Select Access Scopes** * Choose required access scopes * Expand available scopes to select specific endpoints * Refer to the [ZoomInfo API Scopes](https://docs.zoominfo.com/docs/app-creation-developer-portal-guide#zoominfo-api-scopes-and-endpoints) section for details ![](https://files.readme.io/0a44ea4e9fce4144bc979a032b1fd373806261d63a516f2b1a4b7b527d9e8c5f-scopes-list.png) 6. **Create and Deploy** * Click **Create** ![](https://files.readme.io/8980c60df08d0c7e566d150d3b41576d33b1818ec14d63ae70c7a8945ae41c3f-create-app-button.png) * The app is immediately created and approved ![](https://files.readme.io/52518b214cd30f5215a28b13335e2fced30d6cab56b0ff566bc48b3aeca4372e-approved-view-app.png) * Click the app link to retrieve your OAuth Client ID and Client Secret ![](https://files.readme.io/1b678cff1fa01847be59ff92dadcb1e813139b05cef5b288550464a1819b0314-clientId-page.png) Creating an App for Partner and Internal Use [](https://docs.zoominfo.com/docs/app-creation-developer-portal-guide#creating-an-app-for-partner-and-internal-use) -------------------------------------------------------------------------------------------------------------------------------------------------------------------- Approved Partners can create apps intended for third-party users (outside their organization) as well as internal users. > **Prerequisites:** This option should only be used by partners who have already completed the additional contracting and approval process. If you're interested in becoming an approved partner, please visit [https://www.zoominfo.com/partner](https://www.zoominfo.com/partner) ### Configuration Steps [](https://docs.zoominfo.com/docs/app-creation-developer-portal-guide#configuration-steps) 1. **Create App** * Select **"For partner and internal use"** for the Application Type * Complete the configuration as outlined in the internal use guide ![](https://files.readme.io/e83365438b2d1f125e323784a1c9e727f5b6ee25308f100a29143f4f77ab3114-application-type.png) 2. **Review Process** * Once created, the app will be listed in an **"Under Review"** state ![](https://files.readme.io/e2cb238247944c0996dde585abe544b317d8605c19331627a2fbc9e63cbeb789-app-in-reviewmode.png) * Partners must collaborate with the ZoomInfo API and Partnership product teams * The app will be approved if all criteria are met Support and Resources [](https://docs.zoominfo.com/docs/app-creation-developer-portal-guide#support-and-resources) ---------------------------------------------------------------------------------------------------------------------- * 📚 **API Documentation:** [ZoomInfo API Docs](https://developers.zoominfo.com/) * 🤝 **Partnership Program:** [https://www.zoominfo.com/partner](https://www.zoominfo.com/partner) * 💬 **Developer Support:** Contact your ZoomInfo representative * * * _Last updated: January 2025_ Updated 12 days ago * * * --- # Ask Account Summary Question ShellNodeRubyPHPPython Bearer Click `Try It!` to start a request and see the response here! --- # Get Account Summary ShellNodeRubyPHPPython Bearer Click `Try It!` to start a request and see the response here! --- # Authentication Generate a Bearer Token [](https://docs.zoominfo.com/docs/authentication#generate-a-bearer-token) ===================================================================================================== To test the ZoomInfo API using your application, you can easily generate a Bearer Token. This token is valid for **24 hours** and can be used in the API Reference section or other testing environments. ### Steps to Generate a Bearer Token [](https://docs.zoominfo.com/docs/authentication#steps-to-generate-a-bearer-token) 1. **Log in** to the [ZoomInfo Developer Portal](https://developer.zoominfo.com/) . > If you don't have access, contact your ZoomInfo Administrator to assign you a Developer Portal license via the **User Management** screen in the **Admin Portal**. 2. **Find your application** in the list. > If needed, create a new application with the appropriate scopes for your use case. 3. In the **Bearer Token** column, click **"Generate"**. 4. **Enter the credentials** of the user you wish to use for testing the API. > This may be different from the user currently logged into the Developer Portal, depending on your testing needs. 5. After successful login, **copy the generated token**. 6. **Paste the token** into the Bearer Token field on the API Resource page to begin querying the ZoomInfo API. * * * > ⚠️ > > **Note:** All API calls made with this token are treated as real **production** requests. > They will **consume credits** and are subject to **rate limits** based on your account. ZoomInfo API OAuth Authentication [](https://docs.zoominfo.com/docs/authentication#zoominfo-api-oauth-authentication) ========================================================================================================================= Partners are responsible for creating applications that can handle the two parts of the OAuth authentication flow: **authorization** and **token exchange**. ZoomInfo API requires all applications to provide **Proof Key for Code Exchange (PKCE)** along with other standard OAuth client details for additional security. ![](https://files.readme.io/6880881d3733a50b2efe9856f1c654b4fa50ceac4201c92a655f6434c30064ec-zoominfo-login-flow.png) Proof Key for Code Exchange (PKCE) [](https://docs.zoominfo.com/docs/authentication#proof-key-for-code-exchange-pkce) ------------------------------------------------------------------------------------------------------------------------- The Proof Key for Code Exchange (PKCE) is an OAuth 2.0 extension that secures the Authorization Code flow for public clients by replacing fixed secrets with a dynamic mechanism. It works by having the client generate a random Code Verifier and a hashed Code Challenge at the start of the flow. The Code Challenge is sent to the Authorization Server (Okta), which stores it temporarily. After authentication, the client exchanges the authorization code for tokens by sending the original Code Verifier. The server hashes this verifier and, if it matches the stored challenge, issues the tokens, ensuring secure authorization. ### Generating the `code_verifier` and `code_challenge` [](https://docs.zoominfo.com/docs/authentication#generating-the-code_verifier-and-code_challenge) A Code Verifier is a random, securely stored string used during the token exchange and The Code Challenge is a hashed version of the Code Verifier, sent to the Authorization Server to validate the token request. Authorization [](https://docs.zoominfo.com/docs/authentication#authorization) --------------------------------------------------------------------------------- The client application must redirect its users to authenticate through **ZoomInfo Login**, which uses the Authorization server (Okta) to verify, authenticate, and provide a token. ### Prerequisites [](https://docs.zoominfo.com/docs/authentication#prerequisites) Partners must ensure the following query parameters are appended to the ZoomInfo login URL: | Parameter | Required | Description | | --- | --- | --- | | `state` | ✅ | A randomly generated UUID to maintain state between the request and callback | | `code_challenge` | ✅ | A SHA-256 generated message digest used for PKCE | | `redirect_uri` | ✅ | The callback URI where the authorization response will be sent | | `client_id` | ✅ | The Okta application ID | | `scopes` | ❌ | Required scopes for access. If not provided, access will be granted to all scopes registered upon app creation | > **Note on Scopes:** Multiple scopes are separated by spaces and must be URL encoded. Best practice is to exclude scopes from the login URL. When application access needs to be split across multiple sets of scopes, we recommend creating a separate application. ### Example Login URL [](https://docs.zoominfo.com/docs/authentication#example-login-url) The login URL follows this format: `https://login.zoominfo.com/` with the required query parameters appended. Token Exchange [](https://docs.zoominfo.com/docs/authentication#token-exchange) ----------------------------------------------------------------------------------- The client application makes a request to exchange the code for tokens, sending the **Code Verifier** instead of a fixed secret. The Authorization Server hashes the Code Verifier and compares it to the stored hashed value. If they match, the Authorization Server returns the tokens. ### Callback Parameters [](https://docs.zoominfo.com/docs/authentication#callback-parameters) The callback should accept the following request parameters: * **`code`**: The authorization code received in the query parameters * **`state`**: The state parameter to validate the request ### Token Exchange Steps [](https://docs.zoominfo.com/docs/authentication#token-exchange-steps) #### 1\. Create the Authorization Header [](https://docs.zoominfo.com/docs/authentication#1-create-the-authorization-header) Create a Basic Authentication header by encoding the client ID and client secret in Base64 format. The format should be `Basic ` where the credentials are `clientId:clientSecret`. #### 2\. Construct the Request Body [](https://docs.zoominfo.com/docs/authentication#2-construct-the-request-body) Prepare the request body with the following parameters: * `code`: The authorization code received from the callback * `grant_type`: Set to "authorization\_code" * `redirect_uri`: The same redirect URI used in the authorization request * `code_verifier`: The original code verifier generated during PKCE #### 3\. Make a POST Request to Okta [](https://docs.zoominfo.com/docs/authentication#3-make-a-post-request-to-okta) **Endpoint:** `https://okta-login.zoominfo.com/oauth2/default/v1/token` **Headers:** * `Authorization: Basic ` * `Content-Type: application/x-www-form-urlencoded` ### Expected Response [](https://docs.zoominfo.com/docs/authentication#expected-response) The response will contain: | Token Type | Validity | Description | | --- | --- | --- | | **Access Token** | 24 hours | Used for API authentication | | **ID Token** | 24 hours | Contains user identity information | | **Refresh Token** | Rotated after use | Used to obtain new access tokens | | **Scopes** | * | The scopes granted to the tokens | ### Refresh Tokens [](https://docs.zoominfo.com/docs/authentication#refresh-tokens) #### What they are [](https://docs.zoominfo.com/docs/authentication#what-they-are) Refresh tokens are credentials issued alongside access tokens during the OAuth authorization flow. While access tokens grant direct access to protected resources, refresh tokens are used solely to obtain new access tokens. #### Why they're needed [](https://docs.zoominfo.com/docs/authentication#why-theyre-needed) Access tokens are intentionally short-lived for security reasons. If compromised, they expire quickly (24 hours in the ZoomInfo Platform), limiting potential damage. However, forcing users to re-authenticate every time an access token expires would create poor user experience. #### How they work [](https://docs.zoominfo.com/docs/authentication#how-they-work) 1. After successful authentication, the authorization server issues both an access token and a refresh token 2. Your application uses the access token to make API requests 3. When the access token expires (after 24 hours), instead of prompting the user to log in again, your application sends the refresh token to the authorization server 4. The server validates the refresh token and issues a new access token and a new refresh token 5. **The old refresh token is immediately invalidated (token rotation with 30 second grace period)** 6. This cycle continues until the refresh token itself expires or is revoked #### Key benefits [](https://docs.zoominfo.com/docs/authentication#key-benefits) * Users stay authenticated without repeated login prompts * Access tokens remain short-lived (24 hours) for better security * Refresh token rotation ensures that each token is single-use, providing additional security * Refresh tokens can be revoked if suspicious activity is detected, immediately ending the session #### Security note [](https://docs.zoominfo.com/docs/authentication#security-note) Refresh tokens should be stored securely (never in client-side code for public clients) and transmitted only over secure channels, as they provide long-term access to user resources. Token rotation helps detect token theft - if an old refresh token is reused, it indicates potential compromise. 🔄 **Important:** The refresh token will be rotated after each use. There is a **30-second grace period** during which the previous refresh token remains valid to allow seamless token renewal. Implementation Overview [](https://docs.zoominfo.com/docs/authentication#implementation-overview) ----------------------------------------------------------------------------------------------------- ZoomInfo OAuth Integration Open Recipe The authentication implementation involves two main components: ### Authorization Flow (Generating ZoomInfo Login URL) [](https://docs.zoominfo.com/docs/authentication#authorization-flow-generating-zoominfo-login-url) The authorization process requires: 1. **Generate Code Verifier**: Create a random 32-byte string, encode it in Base64, and apply URL-safe transformations (replace `/` with `_`, `+` with `-`, and remove `=` padding). 2. **Generate Code Challenge**: Hash the code verifier using SHA-256, encode the result in Base64, and apply the same URL-safe transformations. 3. **Store PKCE Data**: Create a PKCE record containing both the code challenge and code verifier, then store it temporarily using a randomly generated state UUID as the key. 4. **Build Login URL**: Construct the ZoomInfo login URL with all required query parameters including state, code challenge, redirect URI, client ID, and optional scopes. ### Token Exchange Flow [](https://docs.zoominfo.com/docs/authentication#token-exchange-flow) The token exchange process involves: 1. **Retrieve PKCE Data**: Use the state parameter to retrieve the stored code verifier from your temporary storage and remove it to prevent reuse. 2. **Create Authentication**: Generate a Basic Authentication header by Base64-encoding the client ID and secret combination. 3. **Prepare Request**: Build the token exchange request body with the authorization code, grant type, redirect URI, and code verifier. 4. **Exchange Tokens**: Send the POST request to Okta's token endpoint and receive the access token, ID token, refresh token, and granted scopes. Security Best Practices [](https://docs.zoominfo.com/docs/authentication#security-best-practices) ----------------------------------------------------------------------------------------------------- * 🔐 **Always use HTTPS** for redirect URIs and token exchanges * 🔄 **Implement proper token rotation** handling with the 30-second grace period * 🗂️ **Store code verifiers securely** and remove them after use * 🎯 **Use minimal scopes** required for your application * 🔍 **Validate state parameters** to prevent CSRF attacks * * * _For additional support and documentation, contact your ZoomInfo API representative._ Updated 8 days ago * * * --- # Get insights by type ShellNodeRubyPHPPython Bearer Click `Try It!` to start a request and see the response here! --- # Creates a new audience ShellNodeRubyPHPPython Bearer Click `Try It!` to start a request and see the response here! --- # Lists all audiences ShellNodeRubyPHPPython Bearer Click `Try It!` to start a request and see the response here! --- # Companies ShellNodeRubyPHPPython Bearer Click `Try It!` to start a request and see the response here! --- # Gets audience upload status ShellNodeRubyPHPPython Bearer Click `Try It!` to start a request and see the response here! --- # Deletes audience by ID ShellNodeRubyPHPPython Bearer Click `Try It!` to start a request and see the response here! --- # Corporate Hierarchy ShellNodeRubyPHPPython Bearer Click `Try It!` to start a request and see the response here! --- # Hashtags ShellNodeRubyPHPPython Bearer Click `Try It!` to start a request and see the response here! --- # Intent ShellNodeRubyPHPPython Bearer Click `Try It!` to start a request and see the response here! --- # Lookup Enrich Fields ShellNodeRubyPHPPython Bearer Click `Try It!` to start a request and see the response here! --- # Lookup Data ShellNodeRubyPHPPython Bearer Click `Try It!` to start a request and see the response here! --- # Scoops ShellNodeRubyPHPPython Bearer Click `Try It!` to start a request and see the response here! --- # Companies ShellNodeRubyPHPPython Bearer Click `Try It!` to start a request and see the response here! --- # News ShellNodeRubyPHPPython Bearer Click `Try It!` to start a request and see the response here! --- # Technologies ShellNodeRubyPHPPython Bearer Click `Try It!` to start a request and see the response here! --- # Gets existing audience by ID ShellNodeRubyPHPPython Bearer Click `Try It!` to start a request and see the response here! --- # Lookup Search Fields ShellNodeRubyPHPPython Bearer Click `Try It!` to start a request and see the response here! --- # Intent ShellNodeRubyPHPPython Bearer Click `Try It!` to start a request and see the response here! --- # News ShellNodeRubyPHPPython Bearer Click `Try It!` to start a request and see the response here! --- # Contacts **Scope Required**: `Data -> Contact` ShellNodeRubyPHPPython Bearer Click `Try It!` to start a request and see the response here! --- # Usage Data ShellNodeRubyPHPPython Bearer Click `Try It!` to start a request and see the response here! --- # Scoops ShellNodeRubyPHPPython Bearer Click `Try It!` to start a request and see the response here! --- # Upsert Content Interactions Content interaction engagement data to create or update (supports single or multiple engagements) data array of objects required The primary data of the document data\* ADD object 201 Created ================ object data array of objects required The primary data of the document data\* object id string required The unique identifier for the resource type string required Defaults to ContentInteraction The type of the resource attributes object required Content interaction engagement record attributes attributes object meta object API response meta information for upsert operations timestamp string required Response timestamp processingTime int64 required Processing time in milliseconds recordsProcessed int32 required Number of records processed recordsSuccessful int32 required Number of records successfully processed recordsFailed int32 required Number of records that failed processing 400 Bad Request ==================== object detail string A high-level detail of the error(s) that occurred during the request title string A high-level summary of the error(s) detected errors array of objects required The list of errors raised during the request errors\* object id string required The unique id used to identify this specific error instance code string required The error code describing the error category. A full list of error codes can be found in the documentation for each service detail string Message containing the specific details about this occurrence of the error source object An optional object identifying which part of the request caused the error source object status string required The HTTP status code for the error title string The error name that describes this type of error 401 Unauthorized ===================== object detail string A high-level detail of the error(s) that occurred during the request title string A high-level summary of the error(s) detected errors array of objects required The list of errors raised during the request errors\* object id string required The unique id used to identify this specific error instance code string required The error code describing the error category. A full list of error codes can be found in the documentation for each service detail string Message containing the specific details about this occurrence of the error source object An optional object identifying which part of the request caused the error source object status string required The HTTP status code for the error title string The error name that describes this type of error 403 Forbidden ================== object detail string A high-level detail of the error(s) that occurred during the request title string A high-level summary of the error(s) detected errors array of objects required The list of errors raised during the request errors\* object id string required The unique id used to identify this specific error instance code string required The error code describing the error category. A full list of error codes can be found in the documentation for each service detail string Message containing the specific details about this occurrence of the error source object An optional object identifying which part of the request caused the error source object status string required The HTTP status code for the error title string The error name that describes this type of error 429 Too Many Requests ========================== object detail string A high-level detail of the error(s) that occurred during the request title string A high-level summary of the error(s) detected errors array of objects required The list of errors raised during the request errors\* object id string required The unique id used to identify this specific error instance code string required The error code describing the error category. A full list of error codes can be found in the documentation for each service detail string Message containing the specific details about this occurrence of the error source object An optional object identifying which part of the request caused the error source object status string required The HTTP status code for the error title string The error name that describes this type of error Updated about 21 hours ago * * * ShellNodeRubyPHPPython Bearer xxxxxxxxxx 1 curl \--request POST \\ 2 \--url https://api.zoominfo.com/gtm/platform/v1/engagements/content-interactions \\ 3 \--header 'accept: application/vnd.api+json' \\ 4 \--header 'content-type: application/vnd.api+json' Click `Try It!` to start a request and see the response here! Or choose an example: application/vnd.api+json 201400401403429 Updated about 21 hours ago * * * --- # Updates audience by ID ShellNodeRubyPHPPython Bearer Click `Try It!` to start a request and see the response here! --- # Delete content interaction id string required The unique identifier of the content interaction engagement to delete 204 Success ================ json 401 Unauthorized ===================== object detail string A high-level detail of the error(s) that occurred during the request title string A high-level summary of the error(s) detected errors array of objects required The list of errors raised during the request errors\* object id string required The unique id used to identify this specific error instance code string required The error code describing the error category. A full list of error codes can be found in the documentation for each service detail string Message containing the specific details about this occurrence of the error source object An optional object identifying which part of the request caused the error source object status string required The HTTP status code for the error title string The error name that describes this type of error 403 Forbidden ================== object detail string A high-level detail of the error(s) that occurred during the request title string A high-level summary of the error(s) detected errors array of objects required The list of errors raised during the request errors\* object id string required The unique id used to identify this specific error instance code string required The error code describing the error category. A full list of error codes can be found in the documentation for each service detail string Message containing the specific details about this occurrence of the error source object An optional object identifying which part of the request caused the error source object status string required The HTTP status code for the error title string The error name that describes this type of error 404 Not Found ================== object detail string A high-level detail of the error(s) that occurred during the request title string A high-level summary of the error(s) detected errors array of objects required The list of errors raised during the request errors\* object id string required The unique id used to identify this specific error instance code string required The error code describing the error category. A full list of error codes can be found in the documentation for each service detail string Message containing the specific details about this occurrence of the error source object An optional object identifying which part of the request caused the error source object status string required The HTTP status code for the error title string The error name that describes this type of error 429 Too Many Requests ========================== object detail string A high-level detail of the error(s) that occurred during the request title string A high-level summary of the error(s) detected errors array of objects required The list of errors raised during the request errors\* object id string required The unique id used to identify this specific error instance code string required The error code describing the error category. A full list of error codes can be found in the documentation for each service detail string Message containing the specific details about this occurrence of the error source object An optional object identifying which part of the request caused the error source object status string required The HTTP status code for the error title string The error name that describes this type of error Updated about 21 hours ago * * * ShellNodeRubyPHPPython Bearer xxxxxxxxxx 1 curl \--request DELETE \\ 2 \--url https://api.zoominfo.com/gtm/platform/v1/engagements/content-interactions/id \\ 3 \--header 'accept: application/vnd.api+json' Click `Try It!` to start a request and see the response here! Or choose an example: application/vnd.api+json 401403404429 Updated about 21 hours ago * * * --- # Org Charts ShellNodeRubyPHPPython Bearer Click `Try It!` to start a request and see the response here! --- # Get content interaction id string required The unique identifier of the content interaction engagement 200 Success ================ object data object required Content interaction model id string required The unique identifier for the resource type string required Defaults to ContentInteraction The type of the resource attributes object required Content interaction engagement record attributes attributes object 401 Unauthorized ===================== object detail string A high-level detail of the error(s) that occurred during the request title string A high-level summary of the error(s) detected errors array of objects required The list of errors raised during the request errors\* object id string required The unique id used to identify this specific error instance code string required The error code describing the error category. A full list of error codes can be found in the documentation for each service detail string Message containing the specific details about this occurrence of the error source object An optional object identifying which part of the request caused the error source object status string required The HTTP status code for the error title string The error name that describes this type of error 403 Forbidden ================== object detail string A high-level detail of the error(s) that occurred during the request title string A high-level summary of the error(s) detected errors array of objects required The list of errors raised during the request errors\* object id string required The unique id used to identify this specific error instance code string required The error code describing the error category. A full list of error codes can be found in the documentation for each service detail string Message containing the specific details about this occurrence of the error source object An optional object identifying which part of the request caused the error source object status string required The HTTP status code for the error title string The error name that describes this type of error 404 Not Found ================== object detail string A high-level detail of the error(s) that occurred during the request title string A high-level summary of the error(s) detected errors array of objects required The list of errors raised during the request errors\* object id string required The unique id used to identify this specific error instance code string required The error code describing the error category. A full list of error codes can be found in the documentation for each service detail string Message containing the specific details about this occurrence of the error source object An optional object identifying which part of the request caused the error source object status string required The HTTP status code for the error title string The error name that describes this type of error 429 Too Many Requests ========================== object detail string A high-level detail of the error(s) that occurred during the request title string A high-level summary of the error(s) detected errors array of objects required The list of errors raised during the request errors\* object id string required The unique id used to identify this specific error instance code string required The error code describing the error category. A full list of error codes can be found in the documentation for each service detail string Message containing the specific details about this occurrence of the error source object An optional object identifying which part of the request caused the error source object status string required The HTTP status code for the error title string The error name that describes this type of error Updated about 21 hours ago * * * ShellNodeRubyPHPPython Bearer xxxxxxxxxx 1 curl \--request GET \\ 2 \--url https://api.zoominfo.com/gtm/platform/v1/engagements/content-interactions/id \\ 3 \--header 'accept: application/vnd.api+json' Click `Try It!` to start a request and see the response here! Or choose an example: application/vnd.api+json 200401403404429 Updated about 21 hours ago * * * --- # Creates new audience upload ShellNodeRubyPHPPython Bearer Click `Try It!` to start a request and see the response here! --- # Get GTM entities list ShellNodeRubyPHPPython Bearer Click `Try It!` to start a request and see the response here! --- # Get GTM entity fields ShellNodeRubyPHPPython Bearer Click `Try It!` to start a request and see the response here! --- # Upsert GTM entity records ShellNodeRubyPHPPython Bearer Click `Try It!` to start a request and see the response here! --- # Recipes Recipes ======= --- # Get user entitlements ShellNodeRubyPHPPython Bearer Click `Try It!` to start a request and see the response here! ---