ICPs
Your ideal customer profiles: who you sell to, saved as targeting you can reuse, with a live audience size.
List Ideal Customer Profiles
Lists the caller's workspace ICPs, newest first.
Parameters
- limit integer in query
Page size (default 50, max 200)
- page integer in query
Page number, 1-based (default 1)
Responses
- 200 Profiles and total count · ListICPsResponse
- 401 Unauthorized - invalid or missing API key · ErrorUnauthorized
- 500 Failed to retrieve profiles · ErrorResponse
Fields in the 200 response
- icps array of ICPResponse
16 fields inside icps
- audienceSizedAt string
AudienceSizedAt is when the audience size was last refreshed (RFC3339), or null when it has never been sized.
Example:2026-07-01T10:30:00Z - companySizes array of string
- createdAt stringExample:
2026-07-01T10:30:00Z - estimatedAudienceSize integerExample:
12345 - id integerExample:
12 - industries array of string
- isGenerated boolean
IsGenerated is true while the profile is exactly what the AI proposed; any human edit clears it.
- isPrimary boolean
IsPrimary marks the workspace's active profile. At most one per space.
- keywords array of string
- locations array of string
- name stringExample:
Mid-market SaaS RevOps leaders - personas array of ICPPersona
- seniorities array of string
- sourceWebsite stringExample:
https://acme.com - summary string
- titles array of string
- total integerExample:
3
Request
curl -X GET "https://api.emailchaser.com/r/icps" \
-H "Authorization: Bearer $EMAILCHASER_API_KEY"Response
{
"icps": [
{
"audienceSizedAt": "2026-07-01T10:30:00Z",
"companySizes": [
"string"
],
"createdAt": "2026-07-01T10:30:00Z",
"estimatedAudienceSize": 12345,
"id": 12,
"industries": [
"string"
],
"isGenerated": true,
"isPrimary": true,
"keywords": [
"string"
],
"locations": [
"string"
],
"name": "Mid-market SaaS RevOps leaders",
"personas": [
{
"seniority": "VP",
"title": "VP of Sales"
}
],
"seniorities": [
"string"
],
"sourceWebsite": "https://acme.com",
"summary": "string",
"titles": [
"string"
]
}
],
"total": 3
}Create an Ideal Customer Profile
Stores a manually-authored ICP scoped to the caller's workspace. Set makePrimary to promote it to the workspace's active profile.
Request bodyJSON · CreateICPRequest
- companySizes array of string
- industries array of string
- keywords array of string
- locations array of string
- makePrimary boolean
MakePrimary promotes this profile to the workspace's active one, demoting any existing primary.
- name string requiredExample:
Mid-market SaaS RevOps leaders - seniorities array of string
- summary string
Summary is one to three sentences describing who the workspace sells to.
- titles array of string
Responses
- 201 The created profile · ICPResult
- 400 Invalid request body · ErrorResponse
- 401 Unauthorized - invalid or missing API key · ErrorUnauthorized
- 500 Failed to create the profile · ErrorResponse
Fields in the 201 response
- icp ICPResponse
16 fields inside icp
- audienceSizedAt string
AudienceSizedAt is when the audience size was last refreshed (RFC3339), or null when it has never been sized.
Example:2026-07-01T10:30:00Z - companySizes array of string
- createdAt stringExample:
2026-07-01T10:30:00Z - estimatedAudienceSize integerExample:
12345 - id integerExample:
12 - industries array of string
- isGenerated boolean
IsGenerated is true while the profile is exactly what the AI proposed; any human edit clears it.
- isPrimary boolean
IsPrimary marks the workspace's active profile. At most one per space.
- keywords array of string
- locations array of string
- name stringExample:
Mid-market SaaS RevOps leaders - personas array of ICPPersona
- seniorities array of string
- sourceWebsite stringExample:
https://acme.com - summary string
- titles array of string
Request
curl -X POST "https://api.emailchaser.com/r/icps" \
-H "Authorization: Bearer $EMAILCHASER_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"companySizes": [
"string"
],
"industries": [
"string"
],
"keywords": [
"string"
],
"locations": [
"string"
],
"makePrimary": true,
"name": "Mid-market SaaS RevOps leaders",
"seniorities": [
"string"
],
"summary": "string",
"titles": [
"string"
]
}'Response
{
"icp": {
"audienceSizedAt": "2026-07-01T10:30:00Z",
"companySizes": [
"string"
],
"createdAt": "2026-07-01T10:30:00Z",
"estimatedAudienceSize": 12345,
"id": 12,
"industries": [
"string"
],
"isGenerated": true,
"isPrimary": true,
"keywords": [
"string"
],
"locations": [
"string"
],
"name": "Mid-market SaaS RevOps leaders",
"personas": [
{
"seniority": "VP",
"title": "VP of Sales"
}
],
"seniorities": [
"string"
],
"sourceWebsite": "https://acme.com",
"summary": "string",
"titles": [
"string"
]
}
}Get an Ideal Customer Profile
Returns one profile. Profiles belonging to other workspaces are reported as not found.
Parameters
- id integer required in path
Profile ID
Responses
- 200 The profile · ICPResult
- 400 Invalid profile id · ErrorResponse
- 401 Unauthorized - invalid or missing API key · ErrorUnauthorized
- 404 Profile not found · ErrorResponse
Fields in the 200 response
- icp ICPResponse
16 fields inside icp
- audienceSizedAt string
AudienceSizedAt is when the audience size was last refreshed (RFC3339), or null when it has never been sized.
Example:2026-07-01T10:30:00Z - companySizes array of string
- createdAt stringExample:
2026-07-01T10:30:00Z - estimatedAudienceSize integerExample:
12345 - id integerExample:
12 - industries array of string
- isGenerated boolean
IsGenerated is true while the profile is exactly what the AI proposed; any human edit clears it.
- isPrimary boolean
IsPrimary marks the workspace's active profile. At most one per space.
- keywords array of string
- locations array of string
- name stringExample:
Mid-market SaaS RevOps leaders - personas array of ICPPersona
- seniorities array of string
- sourceWebsite stringExample:
https://acme.com - summary string
- titles array of string
Request
curl -X GET "https://api.emailchaser.com/r/icps/123" \
-H "Authorization: Bearer $EMAILCHASER_API_KEY"Response
{
"icp": {
"audienceSizedAt": "2026-07-01T10:30:00Z",
"companySizes": [
"string"
],
"createdAt": "2026-07-01T10:30:00Z",
"estimatedAudienceSize": 12345,
"id": 12,
"industries": [
"string"
],
"isGenerated": true,
"isPrimary": true,
"keywords": [
"string"
],
"locations": [
"string"
],
"name": "Mid-market SaaS RevOps leaders",
"personas": [
{
"seniority": "VP",
"title": "VP of Sales"
}
],
"seniorities": [
"string"
],
"sourceWebsite": "https://acme.com",
"summary": "string",
"titles": [
"string"
]
}
}Update an Ideal Customer Profile
Applies a partial edit: omitted fields are unchanged, an empty list clears the list. Any edit marks the profile as human-authored.
Parameters
- id integer required in path
Profile ID
Request bodyJSON · UpdateICPRequest
- companySizes array of string
- industries array of string
- keywords array of string
- locations array of string
- name string
- seniorities array of string
- summary string
- titles array of string
Responses
- 200 The updated profile · ICPResult
- 400 Invalid request body · ErrorResponse
- 401 Unauthorized - invalid or missing API key · ErrorUnauthorized
- 404 Profile not found · ErrorResponse
Fields in the 200 response
- icp ICPResponse
16 fields inside icp
- audienceSizedAt string
AudienceSizedAt is when the audience size was last refreshed (RFC3339), or null when it has never been sized.
Example:2026-07-01T10:30:00Z - companySizes array of string
- createdAt stringExample:
2026-07-01T10:30:00Z - estimatedAudienceSize integerExample:
12345 - id integerExample:
12 - industries array of string
- isGenerated boolean
IsGenerated is true while the profile is exactly what the AI proposed; any human edit clears it.
- isPrimary boolean
IsPrimary marks the workspace's active profile. At most one per space.
- keywords array of string
- locations array of string
- name stringExample:
Mid-market SaaS RevOps leaders - personas array of ICPPersona
- seniorities array of string
- sourceWebsite stringExample:
https://acme.com - summary string
- titles array of string
Request
curl -X PUT "https://api.emailchaser.com/r/icps/123" \
-H "Authorization: Bearer $EMAILCHASER_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"companySizes": [
"string"
],
"industries": [
"string"
],
"keywords": [
"string"
],
"locations": [
"string"
],
"name": "Jane Doe",
"seniorities": [
"string"
],
"summary": "string",
"titles": [
"string"
]
}'Response
{
"icp": {
"audienceSizedAt": "2026-07-01T10:30:00Z",
"companySizes": [
"string"
],
"createdAt": "2026-07-01T10:30:00Z",
"estimatedAudienceSize": 12345,
"id": 12,
"industries": [
"string"
],
"isGenerated": true,
"isPrimary": true,
"keywords": [
"string"
],
"locations": [
"string"
],
"name": "Mid-market SaaS RevOps leaders",
"personas": [
{
"seniority": "VP",
"title": "VP of Sales"
}
],
"seniorities": [
"string"
],
"sourceWebsite": "https://acme.com",
"summary": "string",
"titles": [
"string"
]
}
}Delete an Ideal Customer Profile
Deletes a profile. Deleting the primary leaves the workspace without one.
Parameters
- id integer required in path
Profile ID
Responses
- 200 Deleted · DeleteICPResponse
- 400 Invalid profile id · ErrorResponse
- 401 Unauthorized - invalid or missing API key · ErrorUnauthorized
- 404 Profile not found · ErrorResponse
Fields in the 200 response
- success booleanExample:
true
Request
curl -X DELETE "https://api.emailchaser.com/r/icps/123" \
-H "Authorization: Bearer $EMAILCHASER_API_KEY"Response
{
"success": true
}Refresh a profile's audience size
Sizes the audience matching the profile's targeting criteria against the data provider and caches the result. Sizing is free.
Parameters
- id integer required in path
Profile ID
Responses
- 200 The refreshed profile and audience size · AudienceSizeResponse
- 400 The profile has no targeting criteria · ErrorResponse
- 401 Unauthorized - invalid or missing API key · ErrorUnauthorized
- 404 Profile not found · ErrorResponse
- 502 Could not size the audience · ErrorResponse
Fields in the 200 response
- audienceSize integerExample:
12345 - icp ICPResponse
16 fields inside icp
- audienceSizedAt string
AudienceSizedAt is when the audience size was last refreshed (RFC3339), or null when it has never been sized.
Example:2026-07-01T10:30:00Z - companySizes array of string
- createdAt stringExample:
2026-07-01T10:30:00Z - estimatedAudienceSize integerExample:
12345 - id integerExample:
12 - industries array of string
- isGenerated boolean
IsGenerated is true while the profile is exactly what the AI proposed; any human edit clears it.
- isPrimary boolean
IsPrimary marks the workspace's active profile. At most one per space.
- keywords array of string
- locations array of string
- name stringExample:
Mid-market SaaS RevOps leaders - personas array of ICPPersona
- seniorities array of string
- sourceWebsite stringExample:
https://acme.com - summary string
- titles array of string
Request
curl -X POST "https://api.emailchaser.com/r/icps/123/refresh-audience-size" \
-H "Authorization: Bearer $EMAILCHASER_API_KEY"Response
{
"audienceSize": 12345,
"icp": {
"audienceSizedAt": "2026-07-01T10:30:00Z",
"companySizes": [
"string"
],
"createdAt": "2026-07-01T10:30:00Z",
"estimatedAudienceSize": 12345,
"id": 12,
"industries": [
"string"
],
"isGenerated": true,
"isPrimary": true,
"keywords": [
"string"
],
"locations": [
"string"
],
"name": "Mid-market SaaS RevOps leaders",
"personas": [
{
"seniority": "VP",
"title": "VP of Sales"
}
],
"seniorities": [
"string"
],
"sourceWebsite": "https://acme.com",
"summary": "string",
"titles": [
"string"
]
}
}Set the primary Ideal Customer Profile
Promotes a profile to the workspace's active one, demoting any existing primary.
Parameters
- id integer required in path
Profile ID
Responses
- 200 The promoted profile · ICPResult
- 400 Invalid profile id · ErrorResponse
- 401 Unauthorized - invalid or missing API key · ErrorUnauthorized
- 404 Profile not found · ErrorResponse
Fields in the 200 response
- icp ICPResponse
16 fields inside icp
- audienceSizedAt string
AudienceSizedAt is when the audience size was last refreshed (RFC3339), or null when it has never been sized.
Example:2026-07-01T10:30:00Z - companySizes array of string
- createdAt stringExample:
2026-07-01T10:30:00Z - estimatedAudienceSize integerExample:
12345 - id integerExample:
12 - industries array of string
- isGenerated boolean
IsGenerated is true while the profile is exactly what the AI proposed; any human edit clears it.
- isPrimary boolean
IsPrimary marks the workspace's active profile. At most one per space.
- keywords array of string
- locations array of string
- name stringExample:
Mid-market SaaS RevOps leaders - personas array of ICPPersona
- seniorities array of string
- sourceWebsite stringExample:
https://acme.com - summary string
- titles array of string
Request
curl -X POST "https://api.emailchaser.com/r/icps/123/set-primary" \
-H "Authorization: Bearer $EMAILCHASER_API_KEY"Response
{
"icp": {
"audienceSizedAt": "2026-07-01T10:30:00Z",
"companySizes": [
"string"
],
"createdAt": "2026-07-01T10:30:00Z",
"estimatedAudienceSize": 12345,
"id": 12,
"industries": [
"string"
],
"isGenerated": true,
"isPrimary": true,
"keywords": [
"string"
],
"locations": [
"string"
],
"name": "Mid-market SaaS RevOps leaders",
"personas": [
{
"seniority": "VP",
"title": "VP of Sales"
}
],
"seniorities": [
"string"
],
"sourceWebsite": "https://acme.com",
"summary": "string",
"titles": [
"string"
]
}
}Get the primary Ideal Customer Profile
Returns the workspace's active profile, or 404 when none is set.
Responses
- 200 The primary profile · ICPResult
- 401 Unauthorized - invalid or missing API key · ErrorUnauthorized
- 404 No primary profile · ErrorResponse
- 500 Failed to load the primary profile · ErrorResponse
Fields in the 200 response
- icp ICPResponse
16 fields inside icp
- audienceSizedAt string
AudienceSizedAt is when the audience size was last refreshed (RFC3339), or null when it has never been sized.
Example:2026-07-01T10:30:00Z - companySizes array of string
- createdAt stringExample:
2026-07-01T10:30:00Z - estimatedAudienceSize integerExample:
12345 - id integerExample:
12 - industries array of string
- isGenerated boolean
IsGenerated is true while the profile is exactly what the AI proposed; any human edit clears it.
- isPrimary boolean
IsPrimary marks the workspace's active profile. At most one per space.
- keywords array of string
- locations array of string
- name stringExample:
Mid-market SaaS RevOps leaders - personas array of ICPPersona
- seniorities array of string
- sourceWebsite stringExample:
https://acme.com - summary string
- titles array of string
Request
curl -X GET "https://api.emailchaser.com/r/icps/primary" \
-H "Authorization: Bearer $EMAILCHASER_API_KEY"Response
{
"icp": {
"audienceSizedAt": "2026-07-01T10:30:00Z",
"companySizes": [
"string"
],
"createdAt": "2026-07-01T10:30:00Z",
"estimatedAudienceSize": 12345,
"id": 12,
"industries": [
"string"
],
"isGenerated": true,
"isPrimary": true,
"keywords": [
"string"
],
"locations": [
"string"
],
"name": "Mid-market SaaS RevOps leaders",
"personas": [
{
"seniority": "VP",
"title": "VP of Sales"
}
],
"seniorities": [
"string"
],
"sourceWebsite": "https://acme.com",
"summary": "string",
"titles": [
"string"
]
}
}Generated from the Emailchaser API's own OpenAPI definition, so it always matches the running API.