Skip to main content
PATCH
/
api
/
v1
/
entities
/
icps
/
{id}
Update ICP
curl --request PATCH \
  --url https://api.example.com/api/v1/entities/icps/{id} \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "name": "<string>",
  "description": {},
  "userIds": [
    {
      "userIds[]": "<string>"
    }
  ],
  "leadsPerList": 123,
  "activeUntil": {},
  "leadProviderCriteria": [
    {
      "leadProviderCriteria[].provider": "<string>",
      "leadProviderCriteria[].type": "<string>",
      "leadProviderCriteria[].filters": {}
    }
  ],
  "customFilterCriteria": [
    {
      "customFilterCriteria[].type": "<string>"
    }
  ],
  "crmFilters": {
    "crmFilters.provider": "<string>",
    "crmFilters.textSearch": {},
    "crmFilters.query": {},
    "crmFilters.filters": [
      {
        "crmFilters.filters[].path": "<string>",
        "crmFilters.filters[].mode": "<string>",
        "crmFilters.filters[].value": {},
        "crmFilters.filters[].exclude": true
      }
    ]
  }
}
'
{
  "name": "Updated ICP Name",
  "leadsPerList": 50,
  "customFilterCriteria": [
    {
      "type": "maxPeoplePerCompany",
      "value": 5
    }
  ]
}
Updates an existing ICP (Ideal Customer Profile) with the provided fields. This endpoint supports partial updates - only include the fields you want to change. Fields not included in the request body will remain unchanged.

Authentication

This endpoint requires authentication. The user must be signed in.
Users can only update ICPs where they are listed in the userIds array, or if they are an admin user. Attempting to update an ICP without proper authorization will result in a 403 Forbidden error.

Request

id
string
required
The unique identifier (UUID) of the ICP to update.

Request Body

All fields are optional. Only include the fields you want to update.
name
string
The display name of the ICP.
description
string | null
A description of the ICP’s target profile. Set to null to clear.
userIds
array
Array of Clerk user IDs that should have access to this ICP.
leadsPerList
number
The default number of leads to include when generating lead lists from this ICP.
activeUntil
string | null
ISO 8601 timestamp indicating when the ICP expires. Set to null for indefinite.
leadProviderCriteria
array
Array of search criteria configurations for lead providers.
customFilterCriteria
array
Array of custom filtering rules applied to leads after retrieval.
crmFilters
object | null | undefined
CRM filter configuration. Set to null to remove. This field is both optional and nullable.

Response

Returns the complete updated ICP object.
id
string
required
Unique identifier (UUID) for the ICP.
name
string
required
The display name of the ICP.
description
string | null
required
A description of the ICP’s target profile.
createdAt
string
required
ISO 8601 timestamp of when the ICP was created.
updatedAt
string
required
ISO 8601 timestamp of when the ICP was last updated (will reflect the update time).
userIds
array
required
Array of Clerk user IDs that have access to this ICP.
leadsPerList
number
required
The default number of leads per list.
activeUntil
string | null
required
ISO 8601 timestamp indicating when the ICP expires.
leadProviderCriteria
array
required
Array of search criteria configurations for lead providers.
customFilterCriteria
array
required
Array of custom filtering rules.
crmFilters
object | null | undefined
CRM filter configuration. This field is both optional and nullable.

Response Examples

{
  "name": "Updated ICP Name",
  "leadsPerList": 50,
  "customFilterCriteria": [
    {
      "type": "maxPeoplePerCompany",
      "value": 5
    }
  ]
}

Error Codes

Status CodeError CodeDescription
400BAD_REQUESTInvalid request body. Check the details field for specific validation errors.
401UNAUTHORIZEDUser is not authenticated. Ensure a valid session exists.
403FORBIDDENUser does not have access to this ICP.
404NOT_FOUNDNo ICP exists with the specified ID.
500INTERNAL_ERRORAn unexpected server error occurred.