ZoomInfo Ideal Customer Profile API

The Ideal Customer Profile API from ZoomInfo — 4 operation(s) for ideal customer profile.

Operations 6

GET /copilot/v1/ideal-company-profile List Ideal Customer Profiles #
POST /copilot/v1/ideal-company-profile Upsert Ideal Customer Profile #
GET /copilot/v1/ideal-company-profile/{segmentId} Get an Ideal Customer Profile #
DELETE /copilot/v1/ideal-company-profile/{segmentId} Delete Ideal Customer Profile #
POST /copilot/v1/ideal-company-profile/{segmentId}/actions/archive Archive ICP #
POST /copilot/v1/ideal-company-profile/{segmentId}/actions/unarchive Unarchive ICP #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/zoominfo-ideal-customer-profile-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no email required.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

zoominfo-ideal-customer-profile-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Copilot API V1 Ideal Customer Profile API
  version: '1.0'
  contact:
    name: ZoomInfo Customer Support
    email: help@zoominfo.com
  description: Copilot API for interacting with the Copilot related services.
servers:
- url: https://api.zoominfo.com/gtm
  description: Base URL for the Copilot API
security:
- OAuth2Auth: []
tags:
- name: Ideal Customer Profile
paths:
  /copilot/v1/ideal-company-profile:
    get:
      operationId: CustomerIdealCompanySegmentInterface_listIdealCompanySegments
      summary: List Ideal Customer Profiles
      description: '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 toward the right types of companies.


        If you do not know the ID of the record you need, call

        [List Ideal Customer Profiles](ref:customeridealcompanysegmentinterface_listidealcompanysegments) to browse the full set.


        Common use cases

        - Retrieve all configured ICP segments

        - Discover segment IDs for use in other API operations

        - Sync ICP definitions with external GTM systems'
      parameters: []
      responses:
        '200':
          description: Success
          content:
            application/vnd.api+json:
              schema:
                $ref: '#/components/schemas/IdealCompanySegmentListResponse'
        '400':
          description: Bad Request
          content:
            application/vnd.api+json:
              schema:
                $ref: '#/components/schemas/ZoomInfo.Core.Foundations.ErrorResponseModel'
        '401':
          description: Unauthorized
          content:
            application/vnd.api+json:
              schema:
                $ref: '#/components/schemas/ZoomInfo.Core.Foundations.ErrorResponseModel'
        '403':
          description: Forbidden
          content:
            application/vnd.api+json:
              schema:
                $ref: '#/components/schemas/ZoomInfo.Core.Foundations.ErrorResponseModel'
        '429':
          description: Too Many Requests
          content:
            application/vnd.api+json:
              schema:
                $ref: '#/components/schemas/ZoomInfo.Core.Foundations.ErrorResponseModel'
      tags:
      - Ideal Customer Profile
      security:
      - OAuth2Auth:
        - api:gtm-config:read
      x-api-roles:
      - fea:gsa
    post:
      operationId: CustomerIdealCompanySegmentInterface_upsertIdealCompanySegment
      summary: Upsert Ideal Customer Profile
      description: '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 use cases

        - Define new ICP segments for GTM targeting

        - Update firmographic filters used to identify target accounts

        - Align company targeting with products or services and personas'
      parameters: []
      responses:
        '200':
          description: Success
          content:
            application/vnd.api+json:
              schema:
                $ref: '#/components/schemas/IdealCompanySegmentModel'
        '400':
          description: Bad Request
          content:
            application/vnd.api+json:
              schema:
                $ref: '#/components/schemas/ZoomInfo.Core.Foundations.ErrorResponseModel'
        '401':
          description: Unauthorized
          content:
            application/vnd.api+json:
              schema:
                $ref: '#/components/schemas/ZoomInfo.Core.Foundations.ErrorResponseModel'
        '403':
          description: Forbidden
          content:
            application/vnd.api+json:
              schema:
                $ref: '#/components/schemas/ZoomInfo.Core.Foundations.ErrorResponseModel'
        '422':
          description: Unprocessable Content
          content:
            application/vnd.api+json:
              schema:
                $ref: '#/components/schemas/ZoomInfo.Core.Foundations.ErrorResponseModel'
        '429':
          description: Too Many Requests
          content:
            application/vnd.api+json:
              schema:
                $ref: '#/components/schemas/ZoomInfo.Core.Foundations.ErrorResponseModel'
      tags:
      - Ideal Customer Profile
      requestBody:
        required: true
        content:
          application/vnd.api+json:
            schema:
              $ref: '#/components/schemas/IdealCompanySegmentUpsert'
        description: Ideal company segment data to create, or fields to update. Include `id` to update an existing record; omit it to create a new one.
      security:
      - OAuth2Auth:
        - api:gtm-config:manage
      x-additional-content-types:
      - application/json
      x-api-roles:
      - fea:gsa
  /copilot/v1/ideal-company-profile/{segmentId}:
    get:
      operationId: CustomerIdealCompanySegmentInterface_getIdealCompanySegment
      summary: Get an Ideal Customer Profile
      description: '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](ref:customeridealcompanysegmentinterface_listidealcompanysegments) to browse the full set.


        Common use cases

        - Retrieve the full configuration of a specific ICP segment

        - Load segment details before updating the record

        - Use ICP definitions in integrations or automation workflows'
      parameters:
      - name: segmentId
        in: path
        required: true
        description: UUID of the Ideal Customer Profile to retrieve.
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: Success
          content:
            application/vnd.api+json:
              schema:
                $ref: '#/components/schemas/IdealCompanySegmentModel'
        '400':
          description: Bad Request
          content:
            application/vnd.api+json:
              schema:
                $ref: '#/components/schemas/ZoomInfo.Core.Foundations.ErrorResponseModel'
        '401':
          description: Unauthorized
          content:
            application/vnd.api+json:
              schema:
                $ref: '#/components/schemas/ZoomInfo.Core.Foundations.ErrorResponseModel'
        '403':
          description: Forbidden
          content:
            application/vnd.api+json:
              schema:
                $ref: '#/components/schemas/ZoomInfo.Core.Foundations.ErrorResponseModel'
        '404':
          description: Not Found
          content:
            application/vnd.api+json:
              schema:
                $ref: '#/components/schemas/ZoomInfo.Core.Foundations.ErrorResponseModel'
        '429':
          description: Too Many Requests
          content:
            application/vnd.api+json:
              schema:
                $ref: '#/components/schemas/ZoomInfo.Core.Foundations.ErrorResponseModel'
      tags:
      - Ideal Customer Profile
      security:
      - OAuth2Auth:
        - api:gtm-config:read
      x-api-roles:
      - fea:gsa
    delete:
      operationId: CustomerIdealCompanySegmentInterface_deleteIdealCompanySegment
      summary: Delete Ideal Customer Profile
      description: '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](ref:customeridealcompanysegmentinterface_archiveidealcompanysegment) endpoint instead.


        Use [Get Ideal Customer Profile](ref:customeridealcompanysegmentinterface_getidealcompanysegment)

        to verify the profile exists before deletion.


        Common use cases

        - Remove outdated or incorrect ICP definitions

        - Clean up duplicate segments

        - Reset segment configuration before recreating it'
      parameters:
      - name: segmentId
        in: path
        required: true
        description: UUID of the Ideal Customer Profile to permanently delete.
        schema:
          type: string
          format: uuid
      responses:
        '204':
          description: Success
          content:
            application/vnd.api+json:
              schema: {}
        '400':
          description: Bad Request
          content:
            application/vnd.api+json:
              schema:
                $ref: '#/components/schemas/ZoomInfo.Core.Foundations.ErrorResponseModel'
        '401':
          description: Unauthorized
          content:
            application/vnd.api+json:
              schema:
                $ref: '#/components/schemas/ZoomInfo.Core.Foundations.ErrorResponseModel'
        '403':
          description: Forbidden
          content:
            application/vnd.api+json:
              schema:
                $ref: '#/components/schemas/ZoomInfo.Core.Foundations.ErrorResponseModel'
        '404':
          description: Not Found
          content:
            application/vnd.api+json:
              schema:
                $ref: '#/components/schemas/ZoomInfo.Core.Foundations.ErrorResponseModel'
        '429':
          description: Too Many Requests
          content:
            application/vnd.api+json:
              schema:
                $ref: '#/components/schemas/ZoomInfo.Core.Foundations.ErrorResponseModel'
      tags:
      - Ideal Customer Profile
      security:
      - OAuth2Auth:
        - api:gtm-config:manage
      x-api-roles:
      - fea:gsa
  /copilot/v1/ideal-company-profile/{segmentId}/actions/archive:
    post:
      operationId: CustomerIdealCompanySegmentInterface_archiveIdealCompanySegment
      summary: Archive ICP
      description: '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](ref:customeridealcompanysegmentinterface_unarchiveidealcompanysegment) endpoint.


        Common use cases

        - Temporarily retire an ICP definition

        - Maintain historical GTM configuration for audit purposes

        - Simplify active targeting segments without losing data'
      parameters:
      - name: segmentId
        in: path
        required: true
        description: UUID of the Ideal Customer Profile to archive.
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: Success
          content:
            application/vnd.api+json:
              schema:
                $ref: '#/components/schemas/IdealCompanySegmentModel'
        '400':
          description: Bad Request
          content:
            application/vnd.api+json:
              schema:
                $ref: '#/components/schemas/ZoomInfo.Core.Foundations.ErrorResponseModel'
        '401':
          description: Unauthorized
          content:
            application/vnd.api+json:
              schema:
                $ref: '#/components/schemas/ZoomInfo.Core.Foundations.ErrorResponseModel'
        '403':
          description: Forbidden
          content:
            application/vnd.api+json:
              schema:
                $ref: '#/components/schemas/ZoomInfo.Core.Foundations.ErrorResponseModel'
        '404':
          description: Not Found
          content:
            application/vnd.api+json:
              schema:
                $ref: '#/components/schemas/ZoomInfo.Core.Foundations.ErrorResponseModel'
        '429':
          description: Too Many Requests
          content:
            application/vnd.api+json:
              schema:
                $ref: '#/components/schemas/ZoomInfo.Core.Foundations.ErrorResponseModel'
      tags:
      - Ideal Customer Profile
      security:
      - OAuth2Auth:
        - api:gtm-config:manage
      x-api-roles:
      - fea:gsa
  /copilot/v1/ideal-company-profile/{segmentId}/actions/unarchive:
    post:
      operationId: CustomerIdealCompanySegmentInterface_unarchiveIdealCompanySegment
      summary: Unarchive ICP
      description: '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'
      parameters:
      - name: segmentId
        in: path
        required: true
        description: UUID of the Ideal Customer Profile to unarchive.
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: Success
          content:
            application/vnd.api+json:
              schema:
                $ref: '#/components/schemas/IdealCompanySegmentModel'
        '400':
          description: Bad Request
          content:
            application/vnd.api+json:
              schema:
                $ref: '#/components/schemas/ZoomInfo.Core.Foundations.ErrorResponseModel'
        '401':
          description: Unauthorized
          content:
            application/vnd.api+json:
              schema:
                $ref: '#/components/schemas/ZoomInfo.Core.Foundations.ErrorResponseModel'
        '403':
          description: Forbidden
          content:
            application/vnd.api+json:
              schema:
                $ref: '#/components/schemas/ZoomInfo.Core.Foundations.ErrorResponseModel'
        '404':
          description: Not Found
          content:
            application/vnd.api+json:
              schema:
                $ref: '#/components/schemas/ZoomInfo.Core.Foundations.ErrorResponseModel'
        '429':
          description: Too Many Requests
          content:
            application/vnd.api+json:
              schema:
                $ref: '#/components/schemas/ZoomInfo.Core.Foundations.ErrorResponseModel'
      tags:
      - Ideal Customer Profile
      security:
      - OAuth2Auth:
        - api:gtm-config:manage
      x-api-roles:
      - fea:gsa
components:
  schemas:
    CustomFieldItem:
      type: object
      required:
      - title
      - value
      properties:
        title:
          type: string
          description: The display title of the custom field.
        description:
          type: string
          description: An optional description of the field. Defaults to an empty string in the backend.
          default: ''
        value:
          type: string
          description: The string value associated with this custom field.
      description: Schema for a single custom field item.
    IdealCompanySegmentUpsert:
      type: object
      required:
      - data
      properties:
        data:
          type: object
          required:
          - type
          - attributes
          properties:
            id:
              type: string
              description: The unique identifier for the resource
            type:
              type: string
              enum:
              - IdealCompanySegment
              description: The type of the resource
            attributes:
              allOf:
              - $ref: '#/components/schemas/IdealCompanySegmentAttributes'
              description: The attributes defining the resource
            meta:
              allOf:
              - $ref: '#/components/schemas/GtmConfigAuditFields'
              description: Non-standard meta information about the resource
          x-discriminator-property: type
          description: The primary data of the document
      description: Ideal Customer Profile resource for upsert operations.
    IdealCompanySegmentAttributes:
      type: object
      properties:
        name:
          type: string
          minLength: 1
          maxLength: 1024
          description: Name of the Ideal Customer Profile (e.g., 'Enterprise SaaS', 'Mid-Market Financial Services'). Required when creating a new record. When provided (for create or update), must be between 1 and 1024 characters.
        description:
          type: string
          maxLength: 10000
          description: Description of the profile. Typically includes industry, company size, revenue range, geography, etc. Maximum 10,000 characters.
        source:
          allOf:
          - $ref: '#/components/schemas/GtmConfigSourceType'
          description: Source type indicating how this profile record was created or last modified. Defaults to `manual`. See `GtmConfigSourceType` for allowed values. When set explicitly, the backend validates source consistency with the `created_by` and `updated_by` fields.
          readOnly: true
        customFields:
          type: array
          items:
            $ref: '#/components/schemas/CustomFieldItem'
          description: Flexible key-value store for customer-specific custom fields and extended metadata. The backend validates schema and value types. Use this to capture additional profile criteria beyond the standard fields.
      description: "Attributes that define an ideal company segment/Ideal Customer Profile.\n\nIdeal company segments/Ideal Customer Profile describe the types of companies a customer wants to target. \nThis typically contains industry, company size, revenue range, geography, etc."
    IdealCompanySegment:
      type: object
      required:
      - id
      - type
      - attributes
      properties:
        id:
          type: string
          description: The unique identifier for the resource
        type:
          type: string
          description: The type of the resource
          default: IdealCompanySegment
          pattern: IdealCompanySegment
        attributes:
          allOf:
          - $ref: '#/components/schemas/IdealCompanySegmentAttributes'
          description: The attributes defining the resource
        meta:
          allOf:
          - $ref: '#/components/schemas/GtmConfigAuditFields'
          description: Non-standard meta information about the resource
          readOnly: true
      description: Ideal Customer Profile resource.
    GtmConfigAuditFields:
      type: object
      properties:
        createdAt:
          type: string
          format: date-time
          description: ISO 8601 timestamp when the record was originally created. Auto-populated by backend.
          readOnly: true
        updatedAt:
          type: string
          format: date-time
          description: ISO 8601 timestamp of the most recent modification to the record. Auto-populated by backend.
          readOnly: true
        createdBy:
          type: string
          description: User ID of the person who created the record. Extracted from the JWT token on creation.
          readOnly: true
        updatedBy:
          type: string
          description: User ID of the person who last modified the record. Extracted from the JWT token on update.
          readOnly: true
        archivedAt:
          type: string
          format: date-time
          description: ISO 8601 timestamp when the record was archived. Archived records are identified by archivedAt and archivedBy
          readOnly: true
        archivedBy:
          type: string
          description: User ID of the person who archived the record
          readOnly: true
      description: 'Common audit fields present on all customer-level GTM configuration entities.

        These fields track the full lifecycle of a record including creation, modification,

        archival (temporary hiding), and soft deletion (permanent hiding for compliance).

        A record can be active, deleted only, or both.'
    ZoomInfo.Core.Foundations.ErrorResponseModel:
      type: object
      required:
      - errors
      properties:
        detail:
          type: string
          description: A high-level detail of the error(s) that occurred during the request
        title:
          type: string
          description: A high-level summary of the error(s) detected
        errors:
          type: array
          items:
            $ref: '#/components/schemas/ZoomInfo.Core.Foundations.ErrorModel'
          description: The list of errors raised during the request
      description: The standard error response body model for the ZoomInfo API.
    IdealCompanySegmentModel:
      type: object
      required:
      - data
      properties:
        data:
          allOf:
          - $ref: '#/components/schemas/IdealCompanySegment'
          description: The primary data of the document
      description: API model for a single Ideal Customer Profile.
    GtmConfigSourceType:
      type: string
      enum:
      - manual
      - import
      - system
      - mcp
      description: 'Source type indicating how a GTM configuration record was created or last modified.

        Used across all customer-level entities for audit provenance tracking.

        When source is explicitly set in a request, the corresponding created_by/updated_by must also be provided.

        Defaults to ''manual'' when not specified.'
      x-enumDescriptions:
        MANUAL: Created or updated manually by a user through the GTM Studio UI.
        IMPORT: Imported from an external data source such as CRM or CSV upload.
        SYSTEM: Generated automatically by the platform (e.g., system enrichment or background jobs).
        MCP: Created or updated via the GTM Config MCP integration by an AI agent.
    IdealCompanySegmentListResponse:
      type: object
      required:
      - data
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/IdealCompanySegment'
          description: The primary data of the document
      description: API model for a list of Ideal Customer Profiles.
    ZoomInfo.Core.Foundations.ErrorSourceModel:
      type: object
      properties:
        cookie:
          type: string
          description: Identifies the cookie name that caused the issue
        header:
          type: string
          description: Identifies the header name that caused the error
        pointer:
          type: string
          description: An RFC 6901 compliant JSON pointer to the entity in the request body that caused the error
        parameter:
          type: string
          description: The name of the path or query parameter that caused the error
    ZoomInfo.Core.Foundations.ErrorModel:
      type: object
      required:
      - id
      - code
      - status
      properties:
        id:
          type: string
          description: The unique id used to identify this specific error instance
        code:
          type: string
          description: The error code describing the error category. A full list of error codes can be found in the documentation for each service
        detail:
          type: string
          description: Message containing the specific details about this occurrence of the error
        source:
          allOf:
          - $ref: '#/components/schemas/ZoomInfo.Core.Foundations.ErrorSourceModel'
          description: An optional object identifying which part of the request caused the error
        status:
          type: string
          description: The HTTP status code for the error
        title:
          type: string
          description: The error name that describes this type of error
      description: The object describing a specific error from the API
  securitySchemes:
    OAuth2Auth:
      type: oauth2
      flows:
        authorizationCode:
          authorizationUrl: https://login.zoominfo.com
          tokenUrl: https://okta-login.zoominfo.com/oauth2/default/v1/token
          scopes:
            api:account-summary:read: Read Copilot Account Summary Data
            api:insights:read: Read Insights Data
            api:recommendations:read: Read Copilot recommendation data
            api:gtm-config:read: Read GTM configuration data
            api:gtm-config:manage: Manage GTM configuration data (create, update, delete)