> ## Documentation Index
> Fetch the complete documentation index at: https://docs.ziplined.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Replace the ideal client profile

> Changes the user's ideal client profile (ICP), which decides who counts as a lead. Replaces the ideal client: the include rules (who fits) and the exclude rules (who never fits). The rules cover job titles, seniorities, industries, company sizes, countries and more. A rule left out becomes empty, so start from get_icp and send back every rule you want to keep. Ziplined scores everyone again in the background. The answer gives the saved profile as a sentence, and how many people are a lead under it. It also gives the run that rescores them: poll it with refresh_data and its run_id. Costs no credits.

Use when: After get_icp, when the user wants to change who counts as a lead.

Do not use for: Only changing who never fits (use save_exclusions instead). Marking one person not a fit (use update_person instead). Rescoring without a change (use refresh_data instead).

Example: {"include":{"seniorities":["C-Level","Founder"],"industries":["Software Development"],"countries":["NL"]},"exclude":{"job_titles":["recruiter"]}}



## OpenAPI

````yaml /openapi.json put /v1/icp
openapi: 3.1.0
info:
  title: Ziplined API
  version: 1.0.0
  description: >-
    LinkedIn engagement data about people, companies and posts. The workspace
    comes from the credential; lists page with `limit` and `cursor`.
servers:
  - url: https://api.ziplined.io
    description: Production
security: []
tags:
  - name: People
    description: The people in your workspace, and what you sent them.
  - name: Companies
    description: The companies those people work at.
  - name: Posts
    description: Your own posts and their numbers.
  - name: Engagements
    description: One act by one person on one post.
  - name: Insights
    description: Period against period, and the series behind it.
  - name: Views
    description: The saved views of the app, and who is in a hand-picked one.
  - name: Audiences
    description: The scored target groups, and their membership.
  - name: ICP
    description: 'Who you sell to: the rules every person is scored against.'
  - name: Sources
    description: What your radar collects from.
  - name: Account
    description: Who is asking, what is set up, and what is next.
  - name: Credits
    description: What is left to spend on sources, and when it resets.
  - name: Integrations
    description: 'Where syncs send people: webhook, email, Slack and app destinations.'
paths:
  /v1/icp:
    put:
      tags:
        - ICP
      summary: Replace the ideal client profile
      description: >-
        Changes the user's ideal client profile (ICP), which decides who counts
        as a lead. Replaces the ideal client: the include rules (who fits) and
        the exclude rules (who never fits). The rules cover job titles,
        seniorities, industries, company sizes, countries and more. A rule left
        out becomes empty, so start from get_icp and send back every rule you
        want to keep. Ziplined scores everyone again in the background. The
        answer gives the saved profile as a sentence, and how many people are a
        lead under it. It also gives the run that rescores them: poll it with
        refresh_data and its run_id. Costs no credits.


        Use when: After get_icp, when the user wants to change who counts as a
        lead.


        Do not use for: Only changing who never fits (use save_exclusions
        instead). Marking one person not a fit (use update_person instead).
        Rescoring without a change (use refresh_data instead).


        Example:
        {"include":{"seniorities":["C-Level","Founder"],"industries":["Software
        Development"],"countries":["NL"]},"exclude":{"job_titles":["recruiter"]}}
      parameters:
        - schema:
            type: string
            minLength: 1
            maxLength: 255
            description: >-
              Any client-chosen key, a uuid for example. Sending the same
              request twice with the same key has one effect and returns the
              same response twice; the same key with a different body returns
              409.
            example: 3f1b2c4d-5e6f-4a7b-8c9d-0e1f2a3b4c5d
          required: false
          description: >-
            Any client-chosen key, a uuid for example. Sending the same request
            twice with the same key has one effect and returns the same response
            twice; the same key with a different body returns 409.
          name: idempotency-key
          in: header
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                include:
                  type: object
                  properties:
                    job_titles:
                      type: array
                      items:
                        type: string
                        minLength: 1
                      maxItems: 200
                      description: >-
                        Job-title fragments, case-insensitive, e.g. "head of
                        marketing".
                    seniorities:
                      type: array
                      items:
                        type: string
                        enum:
                          - C-Level
                          - Founder
                          - Owner
                          - VP
                          - Director
                          - Manager
                          - Senior
                          - Entry Level
                      description: Seniority tiers, inferred from the job title.
                    industries:
                      type: array
                      items:
                        type: string
                        minLength: 1
                      maxItems: 200
                      description: LinkedIn industry names, e.g. "Software Development".
                    company_sizes:
                      type: array
                      items:
                        type: object
                        properties:
                          min:
                            type: integer
                            minimum: 1
                          max:
                            type: integer
                            minimum: 1
                        required:
                          - min
                          - max
                        additionalProperties: false
                        description: >-
                          An inclusive employee-count band, e.g. {min: 11, max:
                          50}.
                      maxItems: 20
                      description: >-
                        Company size bands. Ziplined scores this only after it
                        enriches a profile.
                    countries:
                      type: array
                      items:
                        type: string
                      maxItems: 250
                      description: ISO 3166-1 alpha-2 country codes, e.g. "NL".
                    bio_keywords:
                      type: array
                      items:
                        type: string
                        minLength: 1
                      maxItems: 200
                      description: >-
                        Fragments searched in job title, headline and About,
                        e.g. "SaaS".
                    skills:
                      type: array
                      items:
                        type: string
                        minLength: 1
                      maxItems: 200
                      description: >-
                        Skill fragments. Ziplined scores this only after it
                        enriches a profile.
                    languages:
                      type: array
                      items:
                        type: string
                        minLength: 1
                      maxItems: 200
                      description: >-
                        Language names, e.g. "Dutch". Ziplined scores this only
                        after it enriches a profile.
                    is_premium:
                      type: boolean
                      description: >-
                        True ranks LinkedIn Premium members higher among the
                        leads. False ignores it.
                    min_followers:
                      type: integer
                      nullable: true
                      minimum: 0
                    min_connections:
                      type: integer
                      nullable: true
                      minimum: 0
                  default: {}
                  additionalProperties: false
                  description: Who fits. A field left out is empty ("any").
                exclude:
                  type: object
                  properties:
                    job_titles:
                      type: array
                      items:
                        type: string
                        minLength: 1
                      maxItems: 200
                      description: >-
                        Job-title fragments, case-insensitive, e.g. "head of
                        marketing".
                    seniorities:
                      type: array
                      items:
                        type: string
                        enum:
                          - C-Level
                          - Founder
                          - Owner
                          - VP
                          - Director
                          - Manager
                          - Senior
                          - Entry Level
                      description: Seniority tiers, inferred from the job title.
                    industries:
                      type: array
                      items:
                        type: string
                        minLength: 1
                      maxItems: 200
                      description: LinkedIn industry names, e.g. "Software Development".
                    company_sizes:
                      type: array
                      items:
                        type: object
                        properties:
                          min:
                            type: integer
                            minimum: 1
                          max:
                            type: integer
                            minimum: 1
                        required:
                          - min
                          - max
                        additionalProperties: false
                        description: >-
                          An inclusive employee-count band, e.g. {min: 11, max:
                          50}.
                      maxItems: 20
                      description: >-
                        Company size bands. Ziplined scores this only after it
                        enriches a profile.
                    countries:
                      type: array
                      items:
                        type: string
                      maxItems: 250
                      description: ISO 3166-1 alpha-2 country codes, e.g. "NL".
                    bio_keywords:
                      type: array
                      items:
                        type: string
                        minLength: 1
                      maxItems: 200
                      description: >-
                        Fragments searched in job title, headline and About,
                        e.g. "SaaS".
                    skills:
                      type: array
                      items:
                        type: string
                        minLength: 1
                      maxItems: 200
                      description: >-
                        Skill fragments. Ziplined scores this only after it
                        enriches a profile.
                    languages:
                      type: array
                      items:
                        type: string
                        minLength: 1
                      maxItems: 200
                      description: >-
                        Language names, e.g. "Dutch". Ziplined scores this only
                        after it enriches a profile.
                  default: {}
                  additionalProperties: false
                  description: Who never fits. A field left out is empty.
      responses:
        '200':
          description: The result
          content:
            application/json:
              schema:
                type: object
                properties:
                  icp:
                    type: object
                    properties:
                      is_set:
                        type: boolean
                        description: False when this workspace never saved an ICP.
                      sentence:
                        type: string
                        nullable: true
                        description: >-
                          The ICP in one plain sentence, built from the rules
                          below. Null when not set.
                      include:
                        type: object
                        properties:
                          job_titles:
                            type: array
                            items:
                              type: string
                              minLength: 1
                            maxItems: 200
                            description: >-
                              Job-title fragments, case-insensitive, e.g. "head
                              of marketing".
                          seniorities:
                            type: array
                            items:
                              type: string
                              enum:
                                - C-Level
                                - Founder
                                - Owner
                                - VP
                                - Director
                                - Manager
                                - Senior
                                - Entry Level
                            description: Seniority tiers, inferred from the job title.
                          industries:
                            type: array
                            items:
                              type: string
                              minLength: 1
                            maxItems: 200
                            description: >-
                              LinkedIn industry names, e.g. "Software
                              Development".
                          company_sizes:
                            type: array
                            items:
                              type: object
                              properties:
                                min:
                                  type: integer
                                  minimum: 1
                                max:
                                  type: integer
                                  minimum: 1
                              required:
                                - min
                                - max
                              additionalProperties: false
                              description: >-
                                An inclusive employee-count band, e.g. {min: 11,
                                max: 50}.
                            maxItems: 20
                            description: >-
                              Company size bands. Ziplined scores this only
                              after it enriches a profile.
                          countries:
                            type: array
                            items:
                              type: string
                            maxItems: 250
                            description: ISO 3166-1 alpha-2 country codes, e.g. "NL".
                          bio_keywords:
                            type: array
                            items:
                              type: string
                              minLength: 1
                            maxItems: 200
                            description: >-
                              Fragments searched in job title, headline and
                              About, e.g. "SaaS".
                          skills:
                            type: array
                            items:
                              type: string
                              minLength: 1
                            maxItems: 200
                            description: >-
                              Skill fragments. Ziplined scores this only after
                              it enriches a profile.
                          languages:
                            type: array
                            items:
                              type: string
                              minLength: 1
                            maxItems: 200
                            description: >-
                              Language names, e.g. "Dutch". Ziplined scores this
                              only after it enriches a profile.
                          is_premium:
                            type: boolean
                            description: >-
                              True ranks LinkedIn Premium members higher among
                              the leads. False ignores it.
                          min_followers:
                            type: integer
                            nullable: true
                            minimum: 0
                          min_connections:
                            type: integer
                            nullable: true
                            minimum: 0
                        required:
                          - job_titles
                          - seniorities
                          - industries
                          - company_sizes
                          - countries
                          - bio_keywords
                          - skills
                          - languages
                          - is_premium
                          - min_followers
                          - min_connections
                        additionalProperties: false
                        description: Who fits. An empty list means "any".
                      exclude:
                        type: object
                        properties:
                          job_titles:
                            type: array
                            items:
                              type: string
                              minLength: 1
                            maxItems: 200
                            description: >-
                              Job-title fragments, case-insensitive, e.g. "head
                              of marketing".
                          seniorities:
                            type: array
                            items:
                              type: string
                              enum:
                                - C-Level
                                - Founder
                                - Owner
                                - VP
                                - Director
                                - Manager
                                - Senior
                                - Entry Level
                            description: Seniority tiers, inferred from the job title.
                          industries:
                            type: array
                            items:
                              type: string
                              minLength: 1
                            maxItems: 200
                            description: >-
                              LinkedIn industry names, e.g. "Software
                              Development".
                          company_sizes:
                            type: array
                            items:
                              type: object
                              properties:
                                min:
                                  type: integer
                                  minimum: 1
                                max:
                                  type: integer
                                  minimum: 1
                              required:
                                - min
                                - max
                              additionalProperties: false
                              description: >-
                                An inclusive employee-count band, e.g. {min: 11,
                                max: 50}.
                            maxItems: 20
                            description: >-
                              Company size bands. Ziplined scores this only
                              after it enriches a profile.
                          countries:
                            type: array
                            items:
                              type: string
                            maxItems: 250
                            description: ISO 3166-1 alpha-2 country codes, e.g. "NL".
                          bio_keywords:
                            type: array
                            items:
                              type: string
                              minLength: 1
                            maxItems: 200
                            description: >-
                              Fragments searched in job title, headline and
                              About, e.g. "SaaS".
                          skills:
                            type: array
                            items:
                              type: string
                              minLength: 1
                            maxItems: 200
                            description: >-
                              Skill fragments. Ziplined scores this only after
                              it enriches a profile.
                          languages:
                            type: array
                            items:
                              type: string
                              minLength: 1
                            maxItems: 200
                            description: >-
                              Language names, e.g. "Dutch". Ziplined scores this
                              only after it enriches a profile.
                        required:
                          - job_titles
                          - seniorities
                          - industries
                          - company_sizes
                          - countries
                          - bio_keywords
                          - skills
                          - languages
                        additionalProperties: false
                        description: Who never fits, whatever else matches.
                    required:
                      - is_set
                      - sentence
                      - include
                      - exclude
                    additionalProperties: false
                  impact:
                    type: object
                    properties:
                      leads:
                        type: integer
                        description: >-
                          How many people are a Lead under these rules: every
                          filled-in part matches and no exclusion hits. The
                          count leaves out people marked not a fit, and the
                          people that the "Always left out" rules leave out.
                      people:
                        type: integer
                        description: >-
                          How many people the count looked at: every person in
                          this workspace. That includes people marked not a fit
                          and the people that the "Always left out" rules hide.
                          So search_people with include all can return fewer
                          people.
                      summary:
                        type: string
                    required:
                      - leads
                      - people
                      - summary
                    additionalProperties: false
                    description: >-
                      A count from stored data, without scraping, by the same
                      scorer the lists use. Lists update in the background.
                  rescore_run_id:
                    type: string
                    nullable: true
                    description: >-
                      The run that rescores everyone; poll it with refresh_data
                      run_id.
                  app_url:
                    type: string
                required:
                  - icp
                  - impact
                  - rescore_run_id
                  - app_url
        '400':
          description: A filter value is invalid, or this resource has no such filter.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Missing or invalid bearer token.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '402':
          description: Not included in this plan, or a usage cap was exceeded.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Wrong workspace, or the credential lacks the required scope.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: No such record, or it does not belong to this workspace.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '409':
          description: >-
            The same `Idempotency-Key` was used for a different request, or that
            request is still in flight.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - bearerAuth: []
components:
  schemas:
    Error:
      type: object
      properties:
        error:
          type: object
          properties:
            code:
              type: string
            message:
              type: string
          required:
            - code
            - message
      required:
        - error
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.