Skip to content

Sales Intelligence · Beta

ZoomInfo
API integration

Ship Sales Intelligence features without building the integration. Full ZoomInfo API access via Proxy and 110+ MCP-ready tools for AI agents — extend models and mappings to fit your product.

Built for specific customer use cases. Issues are resolved quickly.

Talk to us
ZoomInfo

Use Cases

Why integrate with ZoomInfo

Common scenarios for SaaS companies building ZoomInfo integrations for their customers.

01

Automate inbound lead enrichment and routing

RevOps and lead routing platforms can enrich inbound leads with firmographic, contact, and technographic data from ZoomInfo to score and assign them to the right rep in real time, eliminating manual research and lead leakage.

02

Power signal-based outbound sequences

Sales engagement platforms can listen to ZoomInfo intent signals and scoops (funding rounds, leadership changes) to automatically trigger targeted outreach the moment a target account enters a buying cycle.

03

Keep CRM and marketing records continuously fresh

CRM and marketing automation tools can run scheduled jobs against ZoomInfo to refresh job titles, phone numbers, and company revenue, catching role changes and preventing database decay for their customers.

04

Build in-app prospecting experiences

Sales tools can embed a native 'Find Prospects' workflow that lets users search ZoomInfo contacts and companies, then import them directly into sequences, lists, or campaigns without leaving the product.

05

Enable account-based targeting and org mapping

ABM and enterprise sales platforms can use corporate hierarchies, org charts, and company hashtags to build precise target account lists and help AEs multithread deals across subsidiaries and departments.

What You Can Build

Ship these features with Truto + ZoomInfo

Concrete product features your team can ship faster by leveraging Truto’s ZoomInfo integration instead of building from scratch.

01

Real-time form enrichment

Call contact and company enrichment the moment a lead submits a form, replacing long form fields with a single email input while capturing full firmographic context.

02

Intent-triggered outreach workflows

Poll intent topics on a schedule and automatically kick off outbound sequences when target accounts spike on buyer-intent signals above a defined score.

03

Competitive displacement campaigns

Use technographic enrichment to identify accounts running a specific competitor's software and auto-enroll them into tailored switch campaigns.

04

Scoop-based deal alerts

Surface funding events, hiring moves, and leadership changes from scoops as in-app notifications or Slack alerts tied to a user's target account list.

05

Enterprise org chart explorer

Render ZoomInfo org charts and corporate hierarchies inside your app so AEs can map buying committees and navigate parent/subsidiary structures visually.

06

Scheduled CRM data hygiene jobs

Run nightly bulk enrichment across stale contacts and companies to update titles, direct dials, and revenue, flagging records where the contact has moved on.

SuperAI

ZoomInfo AI agent tools

Comprehensive AI agent toolset with fine-grained control. Integrates with MCP clients like Cursor and Claude, or frameworks like LangChain.

list_all_zoom_info_contacts

Search ZoomInfo contacts by criteria such as companyName, firstName, lastName or personId, sent in the JSON request body (data). Returns id, type and attributes (company, names, jobTitle, contactAccuracyScore, hasEmail-style hints); no emails or phone numbers. Up to 100 per page; paging stops at page 100.

zoom_info_contacts_enrich

Enrich up to 25 ZoomInfo contacts per request using matchPersonInput (personId or name/company details) and outputFields. Returns: id, type, attributes, meta. NO_MATCH results incur no credit; every enriched record counts against the Record Limit. Required: data.

list_all_zoom_info_companies

Search ZoomInfo companies by criteria such as companyName, metroRegion or industryCodes, sent in the JSON request body (data). Returns id, type and attributes with basic info only; use companies.enrich for full details. Up to 100 per page; paging stops at page 100.

zoom_info_companies_enrich

Enrich up to 25 ZoomInfo company records per call, matching on companyId, companyWebsite, or other company attributes (ipAddress must be the sole input for a record). Returns per record: id, type, meta.matchStatus, and attributes carrying the requested outputFields such as name, website, revenue, and socialMediaUrls. Required: data.

list_all_zoom_info_lookup_values

List the allowed values of one ZoomInfo lookup field, such as countries, industries or management levels. Returns: id, type, attributes. Required: field_name. Omitting field_name sends an invalid path and ZoomInfo returns an error.

list_all_zoom_info_search_fields

List the ZoomInfo search fields available for an entity, filtered by entity and field type, with whether the account has access to each. Returns: id, type, attributes. Required: filter (filter[entity], filter[fieldType]).

list_all_zoom_info_enrich_fields

List ZoomInfo enrich input or output fields for an entity, with whether the account has access to each. Returns: id, type, attributes. Required: filter (filter[entity], filter[fieldType]).

list_all_zoom_info_usage_limits

Get the current user's ZoomInfo API usage and limits. Returns: id, type, attributes. Takes no parameters.

list_all_zoom_info_intents

Search ZoomInfo Intent Signals across all companies that match the given search criteria. Returns: id, type, attributes. Required: data containing attributes.topics (1–50 intent topics per request). Needs api:data:intent enabled on the ZoomInfo OAuth app and in the package, else 403 (ZI0002/ZI0003). Intent SKU required. No credits consumed; each Intent Signal returned counts as a Record and a successful response counts as a Request credit.

zoom_info_intents_enrich

Fetch Intent Signals for a single company in ZoomInfo, enriching it with buyer intent data. Returns intent records with type, id, and attributes including topic, signalScore, audienceStrength, signalDate, and recommendedContacts. Required: data. In data.attributes send topics (1-50) and at least one company identifier (companyId, companyName or companyWebsite). Needs api:data:intent enabled on the ZoomInfo OAuth app and in the package, else 403 (ZI0002/ZI0003). Intent SKU required. Charges a single credit for the enriched company (no credit if it is already under management); each Intent Signal returned counts as a Record, and each successful response counts as a Request. Results are paged (page.number, page.size); Truto does not auto-paginate enrich calls and returns only the data array. Request the next page.number until a page returns fewer than page.size records (REST /proxy callers can also add truto_response_format=raw to read meta.page.total, the total page count).

list_all_zoom_info_news

Search ZoomInfo news articles by criteria such as categories and a publish-date range. Returns: id, type, attributes. At least one search criterion must be set. Required: data (with type and search attributes). Needs api:data:news enabled on the ZoomInfo OAuth app and in the package, else 403 (ZI0002/ZI0003). No credits consumed; each news article returned counts towards the Record Limit.

zoom_info_news_enrich

Enrich a specified ZoomInfo company with relevant news articles. Returns news article records with id, type, and attributes including title, url, pageDate, and categories. Required: data. In data.attributes send companyId (ZoomInfo's text also names companyName and companyWebsite, but its request schema declares only companyId). Needs api:data:news enabled on the ZoomInfo OAuth app and in the package, else 403 (ZI0002/ZI0003). A credit is counted for the enriched company (not per article); each article returned counts towards the Record Limit. Results are paged (page.number, page.size); Truto does not auto-paginate enrich calls and returns only the data array. Request the next page.number until a page returns fewer than page.size records (REST /proxy callers can also add truto_response_format=raw to read meta.page.total, the total page count).

list_all_zoom_info_scoops

Search ZoomInfo Scoops across all companies by criteria like scoopType, publishedStartDate, and updatedSinceCreation. Returns Scoop records (type, id, attributes) with company, description, originalPublishedDate, publishedDate, types, topics. Required: data (search criteria go in data.attributes). Sort defaults to -originalPublishedDate. Needs api:data:scoops enabled on the ZoomInfo OAuth app and in the package, else 403 (ZI0002/ZI0003). No credits consumed; each Scoop returned counts towards the Record Limit.

zoom_info_scoops_enrich

Enrich a ZoomInfo company with relevant Scoops (news items). Returns Scoop records with type, id, and attributes including company, description, and published dates. Required: data. In data.attributes send one company identifier (companyId, companyName or companyWebsite). Needs api:data:scoops enabled on the ZoomInfo OAuth app and in the package, else 403 (ZI0002/ZI0003). A credit is counted for the enriched company (not per Scoop); each Scoop returned counts towards the Record Limit. Results are paged (page.number, page.size); Truto does not auto-paginate enrich calls and returns only the data array. Request the next page.number until a page returns fewer than page.size records (REST /proxy callers can also add truto_response_format=raw to read meta.page.total, the total page count).

zoom_info_corporate_hierarchies_enrich

Enrich the corporate hierarchy of up to 25 ZoomInfo companies per request; the data envelope carries matchCompanyInput and outputFields (type CorporateHierarchyEnrich). Returns records with id, type, attributes (companyId, familyTree), meta (matchStatus, input); NoMatch when nothing matches. Required: data. Needs OAuth scope api:data:company. Each record returned charges a credit unless already under management; NoMatch or error responses are not charged.

zoom_info_org_charts_enrich

Enrich a ZoomInfo company's org chart and return its contacts organized by department and seniority tier. Returns the org chart records including id, title, department, orgChartTier, and companyName. Required: data. In data.attributes send companyId and department (ZoomInfo requires at least one department). Needs OAuth scope api:data:contact. A credit is counted for the enriched company, when applicable. Counts one Record per successful request, regardless of how many contacts are returned. Results are paged (page.number, page.size); Truto does not auto-paginate enrich calls and returns only the data array. Request the next page.number until a page returns fewer than page.size records (REST /proxy callers can also add truto_response_format=raw to read meta.page.total, the total page count).

zoom_info_company_technologies_enrich

Enrich Technologies for a matched ZoomInfo company, returning the list of technologies that company uses, identified from company websites, job postings, and data partnerships. Returns: id, type, attributes. Required: data (data.type and data.attributes). companyId in data.attributes is the only input, one company per request. Needs OAuth scope api:data:company. Charges a single credit for the enriched company.

zoom_info_company_hashtags_enrich

Enrich a ZoomInfo company with its hashtags: predefined categorical labels that classify companies for filtering and segmentation. Returns matching hashtag records with id, type, and attributes (label, group, description, parentCategory, priority). Required: data (data.type and data.attributes). companyId in data.attributes is the only input, one company per request. Needs OAuth scope api:data:company. Charges a single credit for the enriched company (no credit if it is already under management).

list_all_zoom_info_agents

List Agents. Lists all agents available to your tenant, including ZoomInfo managed agents and your tenant's published Agent Teams. Before running an agent, use Get Agent Details to review its required inputs and supported capabilities. Per Credit Usage and Limits, this endpoint does not consume credits.

get_single_zoom_info_agent_by_id

Get Agent Details. Retrieves the full details for a specific agent, including the inputs required to run it. Call this endpoint before starting a run. The expected input is defined in `inputSchema`, which describes the message parts the agent accepts, such as `text` or structured `data`, and whether each part is required. For structured input, the `schema` defines the payload that must be provided in the corresponding `data` part of Start Agent Run. `inputSchema` is returned only by this endpoint and is not included in List Agents. It is omitted when the agent does not define an input contract. Required: id.

create_a_zoom_info_agent_run

Start Agent Run. Starts a new run for the specified agent. By default, agent runs are asynchronous. The request returns the in-progress run, including its run id in `data.id`, while execution continues in the background. Use that run id with Get Agent Run to retrieve the latest status and final result. To run the agent synchronously, set `returnImmediately: false` in `data.attributes`. The connection remains open while the agent executes, up to a maximum of 300 seconds. If the run does not complete within that window, the response returns the in-progress run and execution continues in the background. Use the returned run id from `data.id` with Get Agent Run to retrieve the latest status and Required: agent_id, data.

list_all_zoom_info_agent_runs

List Agent Runs. Lists the run history for a specific agent, with the most recent runs returned first. Use this endpoint to review previous and active runs for the agent. To retrieve the current status and results of a specific run, use Get Agent Run instead. This endpoint does not start or modify a run. Required: agent_id.

get_single_zoom_info_agent_run_by_id

Get Agent Run. Retrieves the current status and results of a specific agent run. Use the run id returned in `data.id` by Start Agent Run or the first event of a streaming run by Start Agent Run (Stream). By default, the endpoint returns the run's current state immediately. Set `returnImmediately=false` to wait for the run to reach a terminal state. Requests that remain open can wait for up to 300 seconds. If the request times out before the run completes, the response returns the in-progress run and execution continues in the background. Call this endpoint again with the same run id to retrieve the latest status and results. When the run completes, the first item in `artifacts` contains the Required: id, agent_id.

create_a_zoom_info_agent_run_stream

Start Agent Run (Stream). Starts a new agent run and streams progress and output over Server Sent Events (`text/event-stream`). The first event includes the runId as `task.id`. Store this value so you can retrieve the run later with Get Agent Run or reconnect using Resume Agent Run Stream. The stream includes status updates and artifact content as the agent runs. The first artifact represents the primary response and may contain text and structured data. A final status update indicates that the run has reached a terminal state. This endpoint is available only for agents that support `STREAMING` in `capabilities.executionModes`. The request uses the same message format and `inputSchema` valid Required: agent_id, data.

get_single_zoom_info_agent_run_stream_by_id

Resume Agent Run Stream. Reconnects to an existing agent run and streams its progress and output using Server-Sent Events (`text/event-stream`). Use this endpoint to reconnect to a run if a Start Agent Run (Stream) connection is interrupted, or to start streaming an existing run that was originally started asynchronously or synchronously using Start Agent Run. When reconnecting, the stream replays the run's existing artifacts from the beginning, then continues with live updates until the run reaches a terminal state. If the run has already completed, it returns the final artifacts and terminal status, then closes the stream. Streaming connections can remain open for up to 300 seconds. If the Required: agent_id, run_id.

get_single_zoom_info_account_summary_by_id

Get Account Summary. Retrieve the account summary for a specific company. Required: company_id.

create_a_zoom_info_account_summary_question

Ask Account Summary Question. Ask a question about the account summary of a specific company. Required: company_id, data.

zoom_info_company_insights_search

Get insights by type. Retrieve sales intelligence signals for up to 50 companies, filtered by signal type. Signals include funding events, leadership changes, intent spikes, hiring anomalies, and more. # Insights API - Introduction The **Insights API** provides programmatic access to ZoomInfo's curated intelligence layer — actionable data about customer activity that matters most to your business. **Insights** are automatically filtered for relevance, recency, and context based on your team's specific focus areas. This means you receive high-priority updates like decision-maker job changes at target accounts, intent spikes in your buying groups, or website visits from key personas — without Required: data.

list_all_zoom_info_company_lookalikes

Find Similar Companies. Company Lookalikes can be used to retrieve a ranked list of companies that are similar to a given reference company. The similar companies are identified using a machine learning model that analyzes industry, revenue range, employee count, and other firmographic signals. These lookalike companies can be used to power prospecting, territory planning, or market expansion workflows where one wants to quickly find companies that "look like" a successful or high-priority account. **IMPORTANT: Either `filter[companyId]` or `filter[companyName]` MUST be provided. Omitting both will result in a 422 error.** To find Company Lookalikes, select the `companyId`, which identifies

list_all_zoom_info_contact_recommendations

Get Contact Recommendations. Contact Recommendations can be used to retrieve a ranked list of people at a target company who are most relevant for a given sales motion (use case), such as prospecting, deal acceleration, or renewal and growth.

list_all_zoom_info_contact_lookalikes

Get Contact Lookalikes. Contact Lookalikes can be used to retrieve a ranked list of people who are most similar to a given reference person. The recommendations are generated by a machine learning model that compares the reference person's profile to other contacts. The profile includes person characteristics such as title, seniority, department, as well as company characteristics such as industry and company size. These lookalike contacts can be used to identify additional stakeholders, expand buyer networks, or build targeted prospecting lists based on known high-priority contacts. To find Contact Lookalikes, select the `referencePersonId`, which identifies the person whose profile you wan

list_all_zoom_info_buyer_personas

List Customer Buyer Personas. Returns the list of Customer Buyer Personas configured for the authenticated customer. A Buyer Persona represents a profile of a key decision-maker or influencer that a company's sales and marketing teams target. Personas capture attributes such as the buyer's role, objectives, priorities, and the motivations that influence purchasing decisions. Personas help organizations align their go-to-market strategy by defining who the ideal buyers are, what problems they care about, and how they should be engaged. Buyer Personas can be connected to products or services with the people most likely to purchase them. If you do not know the ID of the record you need, call Li

create_a_zoom_info_buyer_persona

Upsert Customer Buyer Persona. Creates or updates a Customer Buyer Persona. This endpoint performs an upsert operation: If an `id` is included in the request body, the existing persona is updated. Only the fields provided in the request are modified (partial update). If an `id` is not included, a new persona is created. When creating a new persona, `name` is the only required attribute. All other attributes are optional. A Buyer Persona represents a type of buyer that the customer's sales and marketing teams target. Each persona captures key details about the buyer's responsibilities, motivations, and priorities, helping teams tailor messaging and engagement strategies. Buyer Personas can be Required: data.

get_single_zoom_info_buyer_persona_by_id

Get Customer Buyer Persona. Retrieves a single Customer Buyer Persona by its unique identifier. A Buyer Persona represents a profile of a decision-maker or stakeholder that the customer's sales and marketing teams target. Each persona captures insights into who the ideal buyers are, what motivates them, and how to effectively engage them during the sales process. If the specified buyerPersonaId does not exist, the endpoint returns **404 Not Found**. If you do not know the ID of the record you need, call List Customer Buyer Personas to browse the full set. This endpoint is typically used to retrieve the full configuration of a specific persona before updating or referencing it in downstream w Required: id.

delete_a_zoom_info_buyer_persona_by_id

Delete Customer Buyer Persona. Permanently deletes a Customer Buyer Persona identified by `buyerPersonaId`. Deleting a persona removes the associated buyer profile from the system and from any go-to-market configuration that references it. This is a hard delete operation. Once deleted, the persona cannot be recovered. If the specified buyerPersonaId does not exist, the endpoint returns **404 Not Found**. If you want to hide a persona without permanently removing it, use the Archive Customer Buyer Persona endpoint instead. Common use cases - Remove outdated or incorrect personas - Clean up duplicate persona records - Reset persona configuration before recreating it Required: id.

zoom_info_buyer_personas_archive

Archive Buyer Persona. Archives a Customer Buyer Persona. Archiving hides the persona from standard list responses while retaining the record for historical reference, audit compliance, and potential restoration. Archived personas remain stored in the system and continue to count toward customer limits. When a persona is archived, the system sets the metadata fields `archivedAt` and `archivedBy`. This action is reversible. The persona can be restored using the Unarchive Customer Buyer Persona endpoint. Common use cases - Temporarily retire a persona that is no longer actively targeted - Maintain historical records without permanently deleting them - Clean up active persona lists while preser Required: buyer_persona_id.

zoom_info_buyer_personas_unarchive

Unarchive Buyer Persona. Restores a previously archived Customer Buyer Persona. Unarchiving makes the persona visible again in standard list responses and allows it to be used again in GTM configuration and workflows. When a persona is restored, the metadata fields `archivedAt` and `archivedBy` are cleared. If the specified buyerPersonaId does not exist, the endpoint returns **404 Not Found**. Common use cases - Reactivate a previously archived persona - Restore a persona that is relevant again for targeting or messaging - Re-enable personas used in go-to-market strategies Required: buyer_persona_id.

list_all_zoom_info_competitors

List Customer Competitors. Returns the list of Customer Competitors configured for the authenticated customer. A Customer Competitor represents a company that competes with the customer's products or services in the market. Competitor records capture structured competitive intelligence that helps sales and marketing teams understand the competitive landscape and position their products effectively. Competitor profiles may include information such as competing products, win/loss analysis, displacement history, and reasons why deals are won or lost against a particular competitor. A competitor may optionally be linked to a ZoomInfo company record to enable additional enrichment and firmographi

create_a_zoom_info_competitor

Upsert Customer Competitor. Creates or updates a Customer Competitor. This endpoint performs an upsert operation: If an `id` is included in the request body, the existing competitor record is updated. Only the attributes provided in the request are modified (partial update). If an `id` is not included, a new competitor record is created. When creating a new competitor, `name` is the only required attribute. All other attributes are optional. Competitor records store structured competitive intelligence including competing products, win/loss insights, displacement scenarios, and positioning details that help organizations understand how they perform against competitors in the market. Competito Required: data.

get_single_zoom_info_competitor_by_id

Get Customer Competitor by ID. Retrieves a single Customer Competitor by its unique identifier. A Customer Competitor represents a company that competes with the customer's products or services. Competitor records capture structured competitive intelligence such as competing products, win/loss analysis, displacement scenarios, and reasons why deals are won or lost against that competitor. A competitor may optionally be linked to a ZoomInfo company record for additional enrichment. If the specified competitorId does not exist, the endpoint returns **404 Not Found**. If you do not know the ID of the record you need, call List Customer Competitors to browse the full set. Common use cases - Retr Required: id.

delete_a_zoom_info_competitor_by_id

Delete Customer Competitor. Permanently deletes a Customer Competitor identified by `competitorId`. Deleting a competitor removes the associated competitive intelligence from the system. This is a hard delete operation and cannot be undone. If the specified `competitorId` does not exist, the endpoint returns **404 Not Found**. If you want to hide a competitor without permanently removing it, use the Archive Customer Competitor endpoint instead. Common use cases - Remove outdated competitor profiles - Clean up duplicate competitor records - Reset competitor data before recreating it Required: id.

zoom_info_competitors_archive

Archive Customer Competitor. Archives a Customer Competitor. Archiving hides the competitor from standard list responses while retaining the record for historical reference and audit purposes. Archived competitors remain stored in the system and continue to count toward customer limits. When a competitor is archived, the metadata fields `archivedAt` and `archivedBy` are set. This action is reversible using the Unarchive Customer Competitor. Common use cases - Temporarily remove inactive competitors - Preserve historical competitive intelligence - Simplify active competitor lists while retaining records Required: competitor_id.

zoom_info_competitors_unarchive

Unarchive Customer Competitor. Restores a previously archived Customer Competitor. Unarchiving makes the competitor visible again in standard list responses and allows it to be used again in competitive intelligence workflows. When a competitor is restored, the metadata fields `archivedAt` and `archivedBy` are cleared. If the specified `competitorId` does not exist, the endpoint returns **404 Not Found**. Common use cases - Reactivate competitors that are relevant again - Restore archived competitive intelligence records - Re-enable competitors for GTM analysis Required: competitor_id.

list_all_zoom_info_ideal_customer_profiles

List Ideal Customer Profiles. Returns a List of Ideal Customer Profile (ICPs) configured for the authenticated customer. An Ideal Customer Profile represents a target company profile that aligns with a company's go-to-market strategy. Each segment defines the types of organizations most likely to benefit from the company's products or services. Segments typically describe target companies using firmographic attributes such as industry, company size, revenue range, geography, and other qualification criteria. These segments help sales and marketing teams focus outreach on the companies most likely to convert. Ideal Customer Profile can be associated with products or services that are targeted

create_a_zoom_info_ideal_customer_profile

Upsert Ideal Customer Profile. Creates or updates an Ideal Customer Profile. This endpoint performs an upsert operation: If an `id` is included in the request body, the existing segment is updated. Only the attributes provided in the request are modified (partial update). If an `id` is not included, a new segment is created. When creating a new segment, `name` is the only required attribute. All other attributes are optional. An Ideal Customer Profile defines the type of companies that best match the organization’s target market. Segments typically describe firms using firmographic attributes such as industry, company size, revenue range, geography, and other qualification criteria. Common u Required: data.

get_single_zoom_info_ideal_customer_profile_by_id

Get an Ideal Customer Profile. Retrieves a single Ideal Customer Profile by its unique identifier. An Ideal Customer Profile defines the profile of organizations that best match a company's target market. Segments typically describe companies using firmographic attributes such as industry, company size, revenue range, geography, and other qualification criteria. Segments may also include seed companies or structured search filters used for account matching. If the specified segmentId does not exist, the endpoint returns **404 Not Found**. If you do not know the ID of the record you need, call List Ideal Customer Profiles to browse the full set. Common use cases - Retrieve the full configurat Required: id.

delete_a_zoom_info_ideal_customer_profile_by_id

Delete Ideal Customer Profile. Permanently deletes an Ideal Customer Profile identified by `segmentId`. Deleting a segment removes the associated target company profile from the system and from any go-to-market configuration that references it. This is a hard delete operation and cannot be undone. If the specified `segmentId` does not exist, the endpoint returns **404 Not Found**. If you want to hide a segment without permanently removing it, use the Archive Ideal Customer Profile endpoint instead. Use Get Ideal Customer Profile to verify the profile exists before deletion. Common use cases - Remove outdated or incorrect ICP definitions - Clean up duplicate segments - Reset segment configura Required: id.

zoom_info_ideal_customer_profiles_archive

Archive ICP. Archives an Ideal Customer Profile. Archiving hides the segment from standard list responses while retaining the record for historical reference, audit purposes, and possible restoration. Archived segments remain stored in the system and continue to count toward customer limits. When a segment is archived, the system sets the metadata fields `archivedAt` and `archivedBy`. This action is reversible using the Unarchive Ideal Customer Profile endpoint. Common use cases - Temporarily retire an ICP definition - Maintain historical GTM configuration for audit purposes - Simplify active targeting segments without losing data Required: segment_id.

zoom_info_ideal_customer_profiles_unarchive

Unarchive ICP. Restores a previously archived Ideal Customer Profile. Unarchiving makes the segment visible again in standard list responses and allows it to be used again in GTM targeting and configuration workflows. When a segment is restored, the metadata fields `archivedAt` and `archivedBy` are cleared. If the specified `segmentId` does not exist, the endpoint returns **404 Not Found**. Common use cases - Reactivate previously archived ICP segments - Restore segments that are relevant again for targeting - Re-enable segments used in GTM configuration Required: segment_id.

list_all_zoom_info_customer_settings

Get Customer Settings. Retrieves the customer settings for the authenticated customer. Customer Settings represent the core company-level configuration. This includes foundational information such as the company name, description, elevator pitch, and strategic go-to-market priorities. This information provides the baseline context that AI agents use to generate recommendations, messaging, targeting insights, and account prioritization. This resource is a singleton per customer, meaning each customer can have only one Customer Settings record. If no configuration has been created yet, the endpoint will return **404 Not Found**. Use Post Customer Settings to create or update the settings. Comm

create_a_zoom_info_customer_setting

Upsert Customer Settings. Creates or updates the Customer Settings for the authenticated customer. Customer Settings store the Company Overview configuration including the company name, description, elevator pitch, and strategic go-to-market priorities. This endpoint performs an upsert operation: If a Customer Settings record does not exist, it will be created. If a record already exists, only the fields included in the request will be updated. Each customer can have only one Customer Settings record. All attributes in the request body are optional, but at least one attribute must be provided. Requests with no attributes will return a **400 Bad Request**. Updates are applied as a partial upd Required: data.

zoom_info_customer_settings_bulk_delete

Delete Customer Settings. Permanently deletes the Customer Settings record for the authenticated customer. Customer Settings store the customers Company Overview configuration. Deleting this record removes that configuration from the system. This resource is a singleton per customer, meaning each customer can have only one Customer Settings record. If no Customer Settings record exists, the endpoint returns **404 Not Found**. This is a hard delete operation. Once deleted, the record is removed from the backend and must be recreated using Upsert Customer Settings if needed. Common use cases - Remove an existing company overview configuration - Reset customer-level company settings before recr

list_all_zoom_info_products

List Products or Services. Returns the complete list of Products or Services configured for the authenticated customer. An Product or Service represents a product, service, or solution provided by your company and forms the foundation of your go-to-market configuration. Products or Services capture key context such as the product's value proposition, the pain points it addresses, proof points, target buyer personas, and ideal customer profiles. Products or Services serve as the central linking object across GTM configuration, connecting Buyer Personas, Ideal Customer Profiles (ICPs), and Competitors to ensure alignment between targeting, messaging, and competitive positioning. If you do not

create_a_zoom_info_product

Upsert Product or Service. Creates or updates a Product or Service for the authenticated customer. A Product or Service represents a product, service, or solution provided by your company. Products or Services form the foundation of your go-to-market configuration and capture key context such as the product's value proposition, the pain points it addresses, proof points, target buyer personas, and the ideal customer profiles it serves. This endpoint performs an upsert operation: If an `id` is included in the request body, the existing product or service is updated. Only the attributes provided in the request are modified (partial update). If an `id` is not provided, a new product or service Required: data.

get_single_zoom_info_product_by_id

Get Product or Service. Retrieves a single product or service by ID. A product or service represents a discrete product or service provided by your company and forms the foundation of your go-to-market configuration. Each product or service record captures the strategic context of a product: how it is positioned in the market, whom it targets, what pain points it addresses, and the value proposition it delivers. Returns **404 Not Found** if the product or service does not exist. If you do not know the ID of the record you need, call List Products or Services to browse the full set. This endpoint is typically used when retrieving the full details of a specific product or service for viewing, Required: id.

delete_a_zoom_info_product_by_id

Delete Product or Service. Permanently deletes a Product or Service identified by `offeringId`. A Product or Service represents a product, service, or solution provided by your company and serves as a core component of your go-to-market configuration. Deleting a Product or Service removes the associated strategic context used for positioning, targeting, and competitive analysis. This is a hard delete operation. Once deleted, the Product or Service is permanently removed from the system and cannot be recovered. If the specified offeringId does not exist, the endpoint returns **404 Not Found**. If you want to hide a Product or Service without permanently removing it, use the Archive Product or Required: id.

zoom_info_products_archive

Archive Product or Service. Archives an Product or Service identified by `offeringId`. Archiving hides the product or service from standard list responses while retaining the record for historical reference, audit purposes, and potential restoration. The archived record remains stored in the system and continues to count toward customer limits. When a product or service is archived, the system sets the metadata fields `archivedAt` and `archivedBy`. This operation is reversible. An archived product or service can be restored using the Unarchive Product or Service endpoint. Common use cases - Temporarily remove a product or service that is no longer actively sold - Hide deprecated products or Required: offering_id.

zoom_info_products_unarchive

Unarchive Product or Service. Restores a previously archived Product or Service. Unarchiving makes the product or service visible again in standard list responses and reactivates it for use across GTM configuration workflows. When a product or service is unarchived, the metadata fields `archivedAt` and `archivedBy` are cleared. If the specified `offeringId` does not exist, the endpoint returns **404 Not Found**. Common use cases - Restore a previously archived product or service - Reactivate products or services that have returned to market - Re-enable products or services used in GTM configuration Required: offering_id.

create_a_zoom_info_data_quality_preparation

Prepare Data Quality. Cleans a batch of values — phone, email, address, company name, URL, job title, or person name — and returns the prepared results inline. You choose the attribute, not the operations. Each attribute runs its own fixed set of default steps in a fixed order; a subset cannot be requested and the order cannot be changed. Any enrichment you request runs after those defaults complete, adding a stage rather than replacing one. default steps -> Enrichment (optional, paid) Six of the seven attributes run the same defaults: phone, email, person name, company name, URL and job title each parse, then validate, then normalize. Email applies typo correction as part of its normalize s Required: data.

list_all_zoom_info_normalize_configs

List Normalize Configs. Returns a paginated list of stored normalization configurations, each with its full `name`, `description`, `status`, and `rules`, plus `createdAt`/`updatedAt` under `meta`. This is how you discover a `configId` before referencing it in a Prepare call's `config.normalizationRules`, and how you check which rule sets already exist before creating a duplicate. Filter by `filter[name]` (case-insensitive contains match on `name`) and `filter[status]` (`ACTIVE` or `ARCHIVED`). Order with `sort` — allowed fields: `name`, `createdAt`, `updatedAt`; prefix a field with `-` for descending order. Use `page[number]` (1-based) and `page[size]` (default `20`, max `200`) to paginate.

create_a_zoom_info_normalize_config

Create Normalize Config. Creates a reusable set of custom normalization rules. Required: data.

get_single_zoom_info_normalize_config_by_id

Get Normalize Config. Returns a single normalization configuration by id, including its full `name`, `description`, `status`, and `rules`. Use this to inspect exactly which rules a config applies before referencing it in a Prepare call, or to read its current definition before updating it. List Normalize Configs already returns every config in full, so use that to browse or search; reach for this endpoint when you already have a `configId`. Returns `200` with the config. Returns `404` if no config has the given `configId`. This endpoint does not consume credits. Required: id.

update_a_zoom_info_normalize_config_by_id

Update Normalize Config. Partially updates a normalization configuration. Only the attributes present in the request body are changed; omitted attributes are left untouched, so you do not need to resend the whole config to change one field. Supports updating `name`, `description`, `status`, and `rules`. Use this to correct or extend a rule set rather than creating a second config and re-pointing the Prepare calls that reference it. Setting `status` to `ARCHIVED` here is how you retire a config without destroying it. Returns `200` with the updated config. Returns `400` if the payload is malformed and `404` if no config has the given `configId`. This endpoint does not consume credits. Required: id.

delete_a_zoom_info_normalize_config_by_id

Delete Normalize Config. Permanently deletes a normalization configuration along with its rules. This cannot be undone. To retire a config while keeping it on record, set its `status` to `ARCHIVED` with Update Normalize Config instead. Deleting a config does not update the Prepare calls that reference it. Check for references before deleting, and remove the id from your callers. Returns `204` with no body on success. Returns `404` if no config has the given `configId`. This endpoint does not consume credits. Required: id.

list_all_zoom_info_score_configs

List Score Configs. Returns a paginated list of attribute-score model configurations. This is how you discover a `configId` before passing it to Run Scoring, and how you check which models already exist before creating a duplicate. Each item carries the full config definition — `name`, `status`, `modelType`, the ordered `elements` (with their `rules` and `criteria`), and the derived `fieldsUsedInRules` — plus `createdAt` and `updatedAt` under `meta`. Filter by `filter[name]` (case-insensitive contains match on `name`). Order with `sort` — allowed fields: `name`, `createdAt`, `updatedAt`. Prefix the field with `-` for descending order. Use `page[number]` (1-based) and `page[size]` (default `2

create_a_zoom_info_score_config

Create Score Config. Creates a new score configuration. A saved config is required before you can score anything: Run Scoring takes `configIds` and has no inline path, so create the model here first and reference the returned `id` on every run. A model is an ordered list of `elements`. Each element names the `field` it looks at, the `weight` it contributes, and the `rules` whose `criteria` decide whether it applies. Server-assigned fields — `id`, `status`, `modelType`, `fieldsUsedInRules`, and timestamps — are ignored on input and returned in the response. `fieldsUsedInRules` is derived from the rules you supply; it is not something you set. Returns `201` with the created score config. Retur Required: data.

get_single_zoom_info_score_config_by_id

Get Score Config. Returns a single score configuration by id, including its full `elements` (with their `rules` and `criteria`), `status`, and the derived `fieldsUsedInRules`. Use this to inspect the exact elements and weights a model applies before scoring against it, or to read its current definition before updating it. List Score Configs already returns every config in full, so use that to browse or search; reach for this endpoint when you already have a `configId`. Returns `200` with the score config. Returns `404` if no config has the given `configId`. This endpoint does not consume credits. Required: id.

update_a_zoom_info_score_config_by_id

Update Score Config. Partially updates a score configuration. Only the attributes present in the request body are changed; omitted attributes are left untouched, so you do not need to resend the whole model to change one weight. Use this to retune weights or adjust elements rather than creating a second model and re-pointing the runs that reference it. Server-assigned fields — `id`, `status`, `modelType`, `fieldsUsedInRules`, and timestamps — are ignored on input. `fieldsUsedInRules` is re-derived when you change the rules. Returns `200` with the updated score config. Returns `400` if the payload is malformed and `404` if no config has the given `configId`. This endpoint does not consume cre Required: id.

delete_a_zoom_info_score_config_by_id

Delete Score Config. Permanently deletes a score configuration. This cannot be undone. Deleting a config does not fail the runs that reference it — it silently stops scoring them. Run Scoring skips a `configId` that matches no existing config, so a run that still names a deleted model returns `200` with that model simply not applied; only a run whose `configIds` match nothing at all returns `400`. Remove the id from your callers when you delete the config, and do not rely on an error to tell you. Returns `204` with no body on success. Returns `404` if no config has the given `configId`. This endpoint does not consume credits. Required: id.

create_a_zoom_info_scoring_run

Run Scoring. Scores a batch of records against one or more saved models and returns the results inline. Synchronous: the call blocks until every record is scored. Pass several `configIds` to apply several models in one pass. Unknown `configIds` are skipped, not rejected. A well-formed id that matches no existing config is silently ignored and the run proceeds on the remaining models, so verify your ids against List Score Configs rather than trusting a `200` to mean every model was applied. Supply `configIds` (required, 1 to 10 score config ids) and `records` (required, 1 to 25 records). Returns `200` with per-record scores inline. Returns `400` if `configIds` or `records` are missing or empt Required: data.

list_all_zoom_info_segment_configs

List Segment Configs. Returns a paginated list of segment configurations. This is how you discover a `configId` before passing it to Run Segmentation, and how you check which segment definitions already exist before creating a duplicate. Each item carries the full config definition, including its `segments` and their `rules`, plus `createdAt` and `updatedAt` under `meta`. Filter by `filter[name]` (case-insensitive contains match on `name`). Order with `sort` — allowed fields: `name`, `createdAt`, `updatedAt`. Prefix the field with `-` for descending order. Use `page[number]` (1-based) and `page[size]` (default `25`, max `200`) to paginate. Returns `200` with a paginated array of segment conf

create_a_zoom_info_segment_config

Create Segment Config. Creates a new segment configuration — the definition of how records get sorted into buckets. A saved config is required before you can segment anything: Run Segmentation takes `configIds` and has no inline path, so create the definition here first and reference the returned `id` on every run. A config is an ordered list of `segments[]`. Each segment carries the `rules[]` that decide whether a record belongs to it and the `outputValue` returned when it does. Array position sets each segment's order, and `action` decides what that order means: `FIND_FIRST` returns the earliest match, `FIND_LAST` the latest, `FIND_ALL` every match joined by `mergeOperator`, and `ADD_ALL` Required: data.

get_single_zoom_info_segment_config_by_id

Get Segment Config. Returns a single segment configuration by id, including its full `segments[]` / `rules[]` definition and the distinct `fieldsUsedInRules`. Use this to inspect the exact rules and output values a config applies before segmenting against it, or to read its current definition before updating it. List Segment Configs already returns every config in full, so use that to browse or search; reach for this endpoint when you already have a `configId`. Returns `200` with the segment config. Returns `404` if no config has the given `configId`. This endpoint does not consume credits. Required: id.

update_a_zoom_info_segment_config_by_id

Update Segment Config. Partially updates a segment configuration. Only the attributes present in the request body are changed; omitted attributes are left untouched. Use this to adjust rules or output values rather than creating a second config and re-pointing the runs that reference it. `segments` is the exception to the partial rule: sending it replaces the entire segment list. There is no way to patch one segment, add one, or reorder without resending the rest. Read the config first and send the full list you want to end up with, or you will silently drop the segments you left out. Returns `200` with the updated segment config. Returns `400` if the payload is malformed and `404` if no con Required: id.

delete_a_zoom_info_segment_config_by_id

Delete Segment Config. Permanently deletes a segment configuration. This cannot be undone. Deleting a config does not fail the runs that reference it — it silently stops segmenting them. Run Segmentation skips a `configId` that matches no existing config, so a run that still names a deleted config returns `200` with that dimension simply absent from the results; only a run whose `configIds` match nothing at all returns `400`. Remove the id from your callers when you delete the config, and do not rely on an error to tell you. Returns `204` with no body on success. Returns `404` if no config has the given `configId`. This endpoint does not consume credits. Required: id.

create_a_zoom_info_segmentation_run

Run Segmentation. Sorts a batch of records into your segments and returns the assignments inline. Synchronous: the call blocks until every record is assigned. Pass several `configIds` to apply several dimensions in one pass. Unknown `configIds` are skipped, not rejected. A well-formed id that matches no existing config is silently ignored and the run proceeds on the remaining configs, so verify your ids against List Segment Configs rather than trusting a `200` to mean every dimension was applied. Supply `configIds` (required, 1 to 10 segment config ids) and `records` (required, 1 to 25 records). Returns `200` with per-record segment assignments inline. Returns `400` if `configIds` or `record Required: data.

create_a_zoom_info_studio_folder

Create New Folder. Creates a new folder for organizing audiences in GTM Studio. Folders group related audiences together, making it easier to navigate and manage large collections — for example, grouping by campaign, region, or team. Required: data.

list_all_zoom_info_studio_folders

List Folders. Retrieves a paginated list of all folders, with optional filtering and sorting. Use this endpoint to browse the folder structure or to find a `folderId` before creating or moving an audience. Filter by `createdById`, `updatedById`, `searchText` (partial name match), or date ranges (`createdAfter`, `createdBefore`, `updatedAfter`, `updatedBefore`). Use `sort` to order results by `name`, `createdAt`, `updatedAt`, `audienceCount`, or `recentlyViewed`; prefix with `-` for descending order (default: `-updatedAt`). Use `page[number]` and `page[size]` (default `25`, max `100`) to paginate. Returns `200` with a paginated array of folder resources including `audiences` (list of audience

get_single_zoom_info_studio_folder_by_id

Get Specific Folder. Retrieves the full state of a single folder by its `folderId`. Returns all folder attributes — name, starred status, description, notes, creation and update timestamps, and the list of `audienceId` values contained in the folder. Use this endpoint to inspect a folder's contents before operating on its audiences, or to verify folder state after an update. Returns `200` with the folder resource. Returns `404` if no folder matches the provided `folderId`. Required: id.

update_a_zoom_info_studio_folder_by_id

Update Folder. Updates one or more attributes of an existing folder without requiring a full replacement. Supported fields: `name`, `starred`, `description`, and `notes`. Only fields present in the request body are modified; all other attributes remain unchanged. Use this endpoint to rename a folder, star or unstar it, or update its description and notes. Returns `200` with the updated folder resource. Returns `404` if no folder matches the provided `folderId`. Required: id.

delete_a_zoom_info_studio_folder_by_id

Delete Specific Folder. Permanently deletes a folder from GTM Studio. Deleting a folder removes the audiences it contained as well. This action is irreversible. Returns `204 No Content` on success. Returns `404` if no folder matches the provided `folderId`. Required: id.

create_a_zoom_info_studio_audience

Create New Audience. Create a named working list of people (`CONTACT`) or companies (`COMPANY`) to drive a GTM motion — campaign targeting, enrichment runs, outbound sequences, or importing leads from trade shows and events. You can define the audience name, audience type (`CONTACT` or `COMPANY`), and the source of the audience. Supported audience sources are: - `CUSTOM`: audience has no linked source dataset. - `ZOOMINFO_PUBLIC_API`: audience is defined by `zoomInfoSearchCriteria`. Requests to create audiences can optionally include definitions for columns to be added to the audience. If no column definitions are provided, the audience will be created without any columns, and columns may be Required: data.

list_all_zoom_info_studio_audiences

List Audiences. Search and browse all GTM Studio audiences. The primary way to discover an `audienceId` before loading rows, managing columns, or triggering enrichment. Also use this to check what audiences already exist before creating a duplicate. **Filters:** - `filter[type]`: `CONTACT` or `COMPANY` - `filter[searchText]`: case-insensitive partial match on audience name **Sorting:** `sort` accepts `name`, `createdAt`, `updatedAt`, or `recordCount`. Prefix with `-` for descending order. Default: `-updatedAt`. **Pagination:** `page[number]` (default `1`) and `page[size]` (default `25`, max `100`). Returns `200` with a paginated list of audience resources and navigation links. Returns `400`

get_single_zoom_info_studio_audience_by_id

Fetch Audience. Retrieves the full state of a single audience by its `audienceId`. Returns all audience attributes — name, type, source origin, current `recordCount`, folder location, creation and update timestamps, and the complete column structure with all column properties. Use this endpoint to check audience configuration before writing rows or before running enrichment. Returns `200` with the audience resource. Returns `404` if no audience matches the provided `audienceId`. Required: id.

delete_a_zoom_info_studio_audience_by_id

Delete Audience. Permanently deletes an audience and all associated data — rows, column definitions, and enrichment history. This action is irreversible; the audience and all its data cannot be recovered after deletion. Use this endpoint only when retiring an audience entirely; to remove specific records, use the Delete Rows endpoint instead. Returns `204 No Content` on success. Returns `404` if no audience matches the provided `audienceId`. Required: id.

update_a_zoom_info_studio_audience_by_id

Update Audience. Updates one or more metadata attributes of an existing audience without requiring a full replacement. Supported fields: `name`, `folderId`, `description`, and `notes`. Only fields present in the request body are modified; all other attributes remain unchanged. Use this endpoint to rename an audience, move it to a different folder, or update its description or notes. Returns `200` with the updated audience resource. Returns `400` if the request body is malformed or contains unsupported fields. Returns `404` if no audience matches the provided `audienceId`. Required: id, data.

get_single_zoom_info_studio_audience_filter_metadatum_by_id

Get Audience Filter Metadata. Returns the available filter operators for each column in the specified audience. Use this endpoint before building a filter-based row query to discover which operators — such as `EQUALS`, `CONTAINS`, `NOT_EQUALS` are supported for each column. The response includes per-operator configuration: whether multiple values are supported (`isMultipleSupported`), the maximum number of allowed values (`valueCountLimit`), and the minimum character requirement per value for string-based operators (`minCharLimit`). Use this metadata to validate filter inputs client-side before sending a List Rows request. Returns `200` with a list of `FilterMetadata` objects keyed by `colum Required: audience_id.

create_a_zoom_info_studio_audience_match_criterion

Upsert Column Match Criteria. Upserts match criteria for the audience's designated match column (the column used for enrichment matching). Required: audience_id, data.

create_a_zoom_info_studio_audience_enrichment

Enrich Audience. Initiates an asynchronous enrichment job that appends ZoomInfo intelligence data to rows in the specified audience. The request body must include a `scope` field specifying the enrichment target: - `AUDIENCE`: Enriches all rows in the audience. The `rows` and `columns` fields are optional. - `ROW`: Enriches specific rows by `rowId`. The `rows` field is required and must contain at least one element. The `columns` field is optional. This operation is asynchronous. Returns `202 Accepted` with an `EnrichJob` resource containing the job id. Poll the Get Async Job Status endpoint at `GET /v1/audiences/{audienceId}/jobs/{jobId}` using that job id to monitor progress and detect `SU Required: audience_id, data.

get_single_zoom_info_studio_audience_job_by_id

Get Job Status. Returns the current status and progress of any previously initiated asynchronous job for an audience. Covers all job types: `AUDIENCE_CREATE`, `AUDIENCE_ENRICH`, and `ROW_UPSERT`. Provide the `audienceId` and `jobId` returned by the originating operation. The response includes the job status — one of `SCHEDULED` (queued), `RUNNING` (actively processing), `SUCCEEDED` (finished successfully), `PARTIALLY_SUCCEEDED` (completed with some failures), `FAILED` (terminated with errors), or `CANCELLED` — and a `percentProgress` value. Returns `200` with the job status resource. Returns `404` if the `audienceId` or `jobId` does not exist. Required: id, audience_id.

zoom_info_studio_audience_columns_bulk_create

Create New Columns. Add columns to an audience to define the shape of data it holds. Do this before loading rows — `columnId` values returned here are required by Bulk Upsert Rows. Choose `dataType` carefully — it cannot be changed after creation. **Supported `dataType` values for `CUSTOM` columns:** - Text: `TEXT` (short labels, names, 2000 chars) - Contact data: `EMAIL` (single address), `PHONE` (single number), `URL` (website or domain) - Numbers: `INTEGER` (whole numbers), `DECIMAL` (floating-point), `PERCENT`, `CURRENCY` - Boolean: `BOOLEAN`, `CHECKBOX` - Dates: `DATE` (calendar date, no time component) - Arrays: `STRING_LIST`, `NUMBER_LIST`, `EMAIL_LIST`, `PHONE_LIST`, `URL_LIST` - Str Required: audience_id, data.

update_a_zoom_info_studio_audience_column_by_id

Update Column. Updates a specific column's definition within an audience. Supported fields: `name`, `isFrozen`, and `isHidden`. Only fields present in the request body are modified. Use this endpoint to rename a column or toggle its display state. Returns `200` with the updated column resource. Returns `400` if the update is invalid or the column is not editable (`isEditable: false`). Returns `404` if the `audienceId` or `columnId` does not exist. Required: id, audience_id.

delete_a_zoom_info_studio_audience_column_by_id

Delete Column. Permanently removes a specific column from an audience, including all cell values stored in that column across every row. Only columns where `isDeletable` is `true` can be removed using this endpoint; attempting to delete a non-deletable column returns `400`. This action is irreversible — all data in the deleted column cannot be recovered. Returns `204 No Content` on successful deletion. Returns `400` if the column is not deletable. Returns `404` if the `audienceId` or `columnId` does not exist. Required: id, audience_id.

get_single_zoom_info_studio_column_data_dependency_by_id

Get Column Data Dependencies. Returns the available data dependencies for AI-powered columns so clients can build valid prompts and grounding context before creating the column. This endpoint solves data dependency discovery for AI workflows by listing which audience columns and knowledge sources can be used as context for the selected AI column type. Use this to discover valid context sources, validate that selected context is supported, and choose relevant data dependencies that improve AI-generated output quality. Response entries include data dependency identifiers, display names, data types, and whether the source comes from an audience column (`COLUMN`) or from a knowledge source (`KNO Required: id, audience_id.

get_single_zoom_info_studio_audience_row_by_id

Get Row by ID. Retrieves a single row from an audience by its `rowId`. Returns the full row record including all cell values and their `CellState` — `RESULT` (value present), `BLANK` (no value set), `LOADING` (enrichment in progress), `ERROR` (enrichment failed for this cell), or `NO_RESULT` (enrichment completed but returned no match). To limit the response to specific columns, pass one or more `columnId` values in the `columns` query parameter; if omitted, all columns are returned. Use this endpoint to inspect individual records, verify enrichment results, or retrieve a row before an update operation. Returns `200` with the row resource. Returns `404` if the `audienceId` or `rowId` does no Required: id, audience_id.

zoom_info_studio_audience_rows_search

List Rows. Retrieves rows from an audience with support for filtering, sorting, and pagination. Rows are individual contact or company records; each row contains cells keyed by `columnId`, where each cell reports its `value` and a `CellState` — `RESULT` (value present), `BLANK` (no value set), `LOADING` (enrichment in progress), `ERROR` (enrichment failed for this cell), or `NO_RESULT` (enrichment returned no match). Provide a flat `filters` array in the request body to narrow results by column values and conditions. Use `page[number]` and `page[size]` (default `25`, max `100`) to paginate through results. Use the `sort` query parameter with a `columnId` value and a `-` prefix for descending Required: audience_id, data.

zoom_info_studio_audience_rows_bulk_update

Upsert Rows. Creates and/or updates up to 50 rows in an audience in a single synchronous operation. Each entry in the request body includes cell values keyed by `columnId`. Including a `rowId` updates that existing row; omitting `rowId` creates a new row. Both creates and updates can be combined freely in the same request. Use this endpoint when upserting **50 rows or fewer**. For larger batches (up to 500 rows), use Bulk Upsert Rows at `POST /actions/bulk/upsert` instead. Returns `200` with `data[]` row resources — each entry includes `id`, `type`, and `attributes.values` with full cell details (`columnId`, `value`, `state`, and `errorDetails` when applicable). Returns `400` if the request Required: audience_id, data.

zoom_info_studio_audience_rows_bulk_upsert

Bulk Upsert Rows. Load records into an audience — create new rows, update existing ones, or mix both in a single call. This is the primary way to populate an audience with GTM data: trade show leads, CRM exports, account lists, enrichment targets. Required: audience_id, data.

zoom_info_studio_audience_rows_bulk_delete

Delete Rows. Permanently removes multiple rows from an audience in a single bulk operation. Provide an array of `rowId` values in the request body. All row data and associated cell values are deleted and cannot be recovered. Use this endpoint to clean audiences of outdated, duplicate, or irrelevant records. To delete the entire audience, use the Delete Audience endpoint instead. This operation is asynchronous. Returns `202 Accepted` with a `jobId`. Poll the Get Async Job Status endpoint at `GET /v1/audiences/{audienceId}/jobs/{jobId}` using that `jobId` to confirm all rows have been removed. Returns `400` if the request body is malformed or `rowId` values are invalid. Required: audience_id, data.

create_a_zoom_info_marketing_audience

Creates a new audience. Creates a new audience. Required: data.

list_all_zoom_info_marketing_audiences

Lists all audiences. Lists all audiences.

get_single_zoom_info_marketing_audience_by_id

Gets existing audience by ID. Gets an existing audience. Required: id.

update_a_zoom_info_marketing_audience_by_id

Updates audience by ID. Updates an existing audience. Required: id, data.

delete_a_zoom_info_marketing_audience_by_id

Deletes audience by ID. Deletes an existing audience. Required: id.

create_a_zoom_info_marketing_audience_upload

Creates new audience upload. Create a new audience segment upload. Required: audience_id, data.

get_single_zoom_info_marketing_audience_upload_by_id

Gets audience upload status. Gets the upload status for an existing audience. Required: id, audience_id.

create_a_zoom_info_content_interaction

Upsert Content Interactions. Create or update content interaction engagement records Required: data.

get_single_zoom_info_content_interaction_by_id

Get content interaction. Retrieve a specific content interaction engagement by ID Required: id.

delete_a_zoom_info_content_interaction_by_id

Delete content interaction. Delete a content interaction engagement record Required: id.

list_all_zoom_info_exports

List Exports. Lists the exports you can run, optionally narrowed down by name or category. If nothing matches your filters, you get a 200 response with an empty list. See Execute Export to run an export once you've found it.

get_single_zoom_info_export_by_id

Get Export. Returns the full details of one export, so you can check its name and category before calling Execute Export. Returns 404 if an export with the provided id does not exist. Required: id.

create_a_zoom_info_export_execution

Execute Export. Executes an export against one or more ZoomInfo Person or Company IDs. You cannot pass both person and company IDs together — `object` says which kind `fields.id` holds. They're all handled together as a single run, not one at a time. Returns 202 Accepted with the newly created run, in `PENDING` status — check its status via Get Execution Status. Returns 400 if `fields.id` is empty. Returns 404 if the export doesn't exist. Returns 422 if the export has been deactivated. [List Exports] (ref:ExportsController_listExports) does not return inactive exports, so this is most likely to happen when the export was deactivated after you listed it, or you're reusing a cached `exportId`. Required: export_id, data.

get_single_zoom_info_export_execution_by_id

Get Execution Status. Checks the current status of a single export run. This doesn't return a status for each sent record, but the status of the entire execution. Returns 404 if the run doesn't exist. Required: id.

Why Truto

Why use Truto’s MCP server for ZoomInfo

Other MCP servers give you a static tool list for one app. Truto gives you a managed, multi-tenant MCP infrastructure across 1000+ integrations.

01

Auto-generated, always up to date

Tools are dynamically generated from curated documentation — not hand-coded. As integrations evolve, tools stay current without manual maintenance.

02

Fine-grained access control

Scope each MCP server to read-only, write-only, specific methods, or tagged tool groups. Expose only what your AI agent needs — nothing more.

03

Multi-tenant by design

Each MCP server is scoped to a single connected account with its own credentials. The URL itself is the auth token — no shared secrets, no credential leaking across tenants.

04

Works with every MCP client

Standard JSON-RPC 2.0 protocol. Paste the URL into Claude, ChatGPT, Cursor, or any MCP-compatible agent framework — tools are discovered automatically.

05

Built-in auth, rate limits, and error handling

Tool calls execute through Truto’s proxy layer with automatic OAuth refresh, rate-limit handling, and normalized error responses. No raw API plumbing in your agent.

06

Expiring and auditable servers

Create time-limited MCP servers for contractors or automated workflows. Optional dual-auth requires both the URL and a Truto API token for high-security environments.

How It Works

From zero to integrated

Start with ZoomInfo in a free sandbox, usually ready within one business day. No boilerplate, no maintenance burden.

01

Link your customer’s ZoomInfo account

Use Truto’s frontend SDK to connect your customer’s ZoomInfo account. We handle all OAuth and API key flows — you don’t need to create the OAuth app.

02

We handle authentication

Don’t spend time refreshing access tokens or figuring out secure storage. We handle it and inject credentials into every API request.

03

Call our API, we call ZoomInfo

Truto’s Proxy API is a 1-to-1 mapping of the ZoomInfo API. You call us, we call ZoomInfo, and pass the response back in the same cycle.

04

Unified response format

Every response follows a single format across all integrations. We translate ZoomInfo’s pagination into unified cursor-based pagination. Data is always in the result attribute.

FAQs

Common questions about ZoomInfo on Truto

Authentication, rate limits, data freshness, and everything else you need to know before you integrate.

How does authentication to ZoomInfo work through Truto?

Truto handles the ZoomInfo authentication flow and token lifecycle on behalf of your end users, so you don't need to manage credential storage, refresh logic, or per-tenant auth state in your own backend.

Which ZoomInfo objects can I access via Truto today?

Truto exposes tools for contacts, companies, intents, news, scoops, corporate hierarchies, org charts, company technologies, and company hashtags, along with helper endpoints for lookup values, search fields, enrich fields, and usage limits.

Can I both search for and enrich records?

Yes. List endpoints (e.g. list_all_zoom_info_contacts, list_all_zoom_info_companies, list_all_zoom_info_intents) let you search and discover records, while the matching enrich endpoints return full detailed profiles for a given identifier.

How do I stay within ZoomInfo's API usage limits?

Truto exposes list_all_zoom_info_usage_limits so your application can programmatically check remaining quota per customer and throttle or queue enrichment jobs accordingly before hitting hard limits.

How do I know which fields are available for search and enrichment?

Use list_all_zoom_info_search_fields and list_all_zoom_info_enrich_fields to dynamically discover supported fields, and list_all_zoom_info_lookup_values to fetch valid picklist values — useful for building dynamic filter UIs that stay in sync with ZoomInfo's schema.

How fresh is the data returned from ZoomInfo?

Truto calls ZoomInfo's APIs in real time, so every enrich or list request returns the latest data ZoomInfo has on file — there's no intermediate cache sitting between your app and the source.

Does my end user need their own ZoomInfo subscription?

Yes. ZoomInfo access is licensed per customer, so each of your end users connects their own ZoomInfo account through Truto's auth flow, and API usage is billed against their contract.

ZoomInfo

Get ZoomInfo integrated into your app

Our team understands what it takes to make a ZoomInfo integration successful. A short, crisp 30 minute call with folks who understand the problem.