ICPs

Your ideal customer profiles: who you sell to, saved as targeting you can reuse, with a live audience size.

List Ideal Customer Profiles

get https://api.emailchaser.com/r/icps
Works with a read-only key

Lists the caller's workspace ICPs, newest first.

  • limit integer in query

    Page size (default 50, max 200)

  • page integer in query

    Page number, 1-based (default 1)

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 string
      Example: 2026-07-01T10:30:00Z
    • estimatedAudienceSize integer
      Example: 12345
    • id integer
      Example: 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 string
      Example: Mid-market SaaS RevOps leaders
    • personas array of ICPPersona
    • seniorities array of string
    • sourceWebsite string
      Example: https://acme.com
    • summary string
    • titles array of string
  • total integer
    Example: 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

post https://api.emailchaser.com/r/icps

Stores a manually-authored ICP scoped to the caller's workspace. Set makePrimary to promote it to the workspace's active profile.

  • 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 required
    Example: 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
Fields in the 201 response
  • 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 string
      Example: 2026-07-01T10:30:00Z
    • estimatedAudienceSize integer
      Example: 12345
    • id integer
      Example: 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 string
      Example: Mid-market SaaS RevOps leaders
    • personas array of ICPPersona
    • seniorities array of string
    • sourceWebsite string
      Example: 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

get https://api.emailchaser.com/r/icps/{id}
Works with a read-only key

Returns one profile. Profiles belonging to other workspaces are reported as not found.

  • id integer required in path

    Profile ID

Fields in the 200 response
  • 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 string
      Example: 2026-07-01T10:30:00Z
    • estimatedAudienceSize integer
      Example: 12345
    • id integer
      Example: 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 string
      Example: Mid-market SaaS RevOps leaders
    • personas array of ICPPersona
    • seniorities array of string
    • sourceWebsite string
      Example: 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

put https://api.emailchaser.com/r/icps/{id}

Applies a partial edit: omitted fields are unchanged, an empty list clears the list. Any edit marks the profile as human-authored.

  • id integer required in path

    Profile ID

  • 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
Fields in the 200 response
  • 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 string
      Example: 2026-07-01T10:30:00Z
    • estimatedAudienceSize integer
      Example: 12345
    • id integer
      Example: 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 string
      Example: Mid-market SaaS RevOps leaders
    • personas array of ICPPersona
    • seniorities array of string
    • sourceWebsite string
      Example: 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

delete https://api.emailchaser.com/r/icps/{id}

Deletes a profile. Deleting the primary leaves the workspace without one.

  • id integer required in path

    Profile ID

Fields in the 200 response
  • success boolean
    Example: 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

post https://api.emailchaser.com/r/icps/{id}/refresh-audience-size

Sizes the audience matching the profile's targeting criteria against the data provider and caches the result. Sizing is free.

  • id integer required in path

    Profile ID

Fields in the 200 response
  • audienceSize integer
    Example: 12345
  • 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 string
      Example: 2026-07-01T10:30:00Z
    • estimatedAudienceSize integer
      Example: 12345
    • id integer
      Example: 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 string
      Example: Mid-market SaaS RevOps leaders
    • personas array of ICPPersona
    • seniorities array of string
    • sourceWebsite string
      Example: 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

post https://api.emailchaser.com/r/icps/{id}/set-primary

Promotes a profile to the workspace's active one, demoting any existing primary.

  • id integer required in path

    Profile ID

Fields in the 200 response
  • 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 string
      Example: 2026-07-01T10:30:00Z
    • estimatedAudienceSize integer
      Example: 12345
    • id integer
      Example: 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 string
      Example: Mid-market SaaS RevOps leaders
    • personas array of ICPPersona
    • seniorities array of string
    • sourceWebsite string
      Example: 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

get https://api.emailchaser.com/r/icps/primary
Works with a read-only key

Returns the workspace's active profile, or 404 when none is set.

Fields in the 200 response
  • 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 string
      Example: 2026-07-01T10:30:00Z
    • estimatedAudienceSize integer
      Example: 12345
    • id integer
      Example: 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 string
      Example: Mid-market SaaS RevOps leaders
    • personas array of ICPPersona
    • seniorities array of string
    • sourceWebsite string
      Example: 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.