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

# Update a profile

> Updates the fields supplied for one profile. In `profileCustomFields`, omitted keys remain unchanged and `null` clears the named value. Required custom fields that the request omits are not checked again. Supplied custom fields are validated against the latest definitions, so archives, types, and Choice values are enforced. Unknown or archived keys and values of the wrong type return HTTP 400; if definitions cannot be retrieved, the write is rejected.



## OpenAPI

````yaml /api-reference/profiles.json patch /profiles/{profileId}
openapi: 3.1.0
info:
  title: Profiles API
  version: 1.0.0
  description: >-
    Customer-facing API endpoints for managing screening profiles and updating
    potential match review workflows.
servers:
  - description: The production API server for managing Minerva screening profiles.
    url: https://api.gominerva.com/clm/v1
security: []
tags:
  - name: Profile Management
    description: Create, list, update, and comment on screening workflow profiles.
  - name: Potential Matches
    description: Update review workflow state for potential matches returned by searches.
externalDocs:
  description: ''
  url: ''
paths:
  /profiles/{profileId}:
    patch:
      tags:
        - Profile Management
      summary: Update a profile
      description: >-
        Updates the fields supplied for one profile. In `profileCustomFields`,
        omitted keys remain unchanged and `null` clears the named value.
        Required custom fields that the request omits are not checked again.
        Supplied custom fields are validated against the latest definitions, so
        archives, types, and Choice values are enforced. Unknown or archived
        keys and values of the wrong type return HTTP 400; if definitions cannot
        be retrieved, the write is rejected.
      parameters:
        - description: Profile ID
          in: path
          name: profileId
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/clm.ProfileCreateUpdateRequest'
            examples:
              partialCustomFieldUpdate:
                summary: Update and clear custom fields
                value:
                  profileCustomFields:
                    loan_status: paid_out
                    servicing_details: null
        description: Profile update request
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/clm.UpdateProfileResponse'
              examples:
                withProfileCustomFields:
                  summary: Profile with resolved custom fields
                  value:
                    msg: OK
                    result:
                      profile:
                        id: 66c391b92888a0db5cc6d3f6
                        name: Alex Morgan
                        profileCustomFields:
                          - key: loan_number
                            label: Loan Number
                            type: text
                            value: LN-2026-0042
                          - key: loan_status
                            label: Loan Status
                            type: enum
                            value: funded
                            valueLabel: Funded
                          - key: servicing_details
                            label: Servicing Details
                            type: json
                            value:
                              portfolio: Prime
                              boardingDate: '2026-08-27'
                    status: 200
          description: Profile updated successfully
      security:
        - ApiKeyAuth: []
components:
  schemas:
    clm.ProfileCreateUpdateRequest:
      properties:
        address1:
          description: >-
            Address line 1 of the profile's known place of residence. Combined
            with address line 2 to form the "address" value in the screening
            input.
          example: 123 Main Street
          type: string
        address2:
          description: >-
            Address line 2 of the profile's known place of residence. Combined
            with address line 1 to form the "address" value in the screening
            input.
          example: Apt 4B
          type: string
        addressCity:
          description: >-
            The city of the profile's known place of residence. Supply the full
            city name.
          example: Toronto
          type: string
        addressPostalCode:
          description: The postal code of the known place of residence for the profile.
          example: M5V1C2
          type: string
        addressState:
          description: >-
            The ISO-2 code or full state name of the place of residence of the
            profile.
          example: 'ON'
          type: string
        allowlistUntil:
          description: >-
            Optional. Creates the profile in an allowlisted state, so ongoing
            monitoring generates no flags until the date you specify in
            "YYYY/MM/DD" format. If omitted, the profile is created in a
            non-allowlisted state, where later screens may generate review
            tasks.
          example: 2024/12/25
          type: string
        archived:
          example: false
          type: boolean
        assignee:
          example: 12345-123
          type: string
        country:
          description: The known country of residence for the profile.
          example: Canada
          type: string
        createdBy:
          example: 12345-123
          type: string
        dateOfBirth:
          description: The date of birth of the profile in "YYYY/MM/DD" format.
          example: 1990/01/01
          type: string
        email:
          description: >-
            The email of the profile. Screening does not use this value, but you
            can store it on the persistent profile record for cross-referencing.
          example: john.smith@example.com
          type: string
        externalId:
          description: >-
            Optional external reference ID supplied at profile creation, so the
            profile can be cross-referenced with external systems.
          example: '123456789'
          type: string
        firstName:
          description: >-
            The first name of the profile. Combined with the last name to form
            the "name" value in the screening input.

            Deprecated: use the `name` field instead.
          example: John
          type: string
        kind:
          description: >-
            One of "individual" or "organization", the entity type in Minerva
            screening. An individual is a natural person; an organization is an
            entity.
          example: individual
          type: string
        lastName:
          description: >-
            The last name of the profile. Combined with the first name to form
            the "name" value in the screening input.

            Deprecated: use the `name` field instead.
          example: Smith
          type: string
        middleName:
          description: >-
            The middle name of the profile. Optional. Combined with the first
            and last names to form the "name" value in the screening input.

            Deprecated: use the `name` field instead.
          example: Michael
          type: string
        monitored:
          description: >-
            One of "monitored", "not_monitored", or an empty string. When
            "monitored", the profile is enrolled in ongoing monitoring, where
            screening on a regular cadence may generate review tasks for
            potential risks.
          example: monitored
          type: string
        name:
          description: Legacy fields (keeping for backward compatibility)
          example: John Smith
          type: string
        nationality:
          description: >-
            The nationality of the profile, being one of the known citizenships
            of the profile.
          example: American
          type: string
        occupation:
          description: The known occupation or job title of the natural person.
          example: Software Engineer
          type: string
        organization:
          description: The affiliated organization or employer of the natural person.
          example: MinervaAI
          type: string
        phone:
          description: >-
            The phone number in e.164 standard format for the profile
            (+15555555555)
          example: '+15555555555'
          type: string
        sex:
          description: >-
            The known sex of the natural person, as reported on an onboarding
            document. Use "f" for Female, "m" for Male, "o" for Other, or leave
            empty for Unknown.
          example: m
          type: string
        status:
          example: pending
          type: string
        updatedBy:
          example: 12345-123
          type: string
        profileGroupIds:
          description: >-
            Workspace-scoped profile group IDs assigned to this profile for
            dynamic risk segmentation. A profile can belong to multiple groups.
          type: array
          items:
            type: string
          example:
            - 665f0d4c2d2f7c2b2f2f2f31
            - 665f0d4c2d2f7c2b2f2f2f32
        profileCustomFields:
          $ref: '#/components/schemas/ProfileCustomFieldsRequest'
      type: object
    clm.UpdateProfileResponse:
      properties:
        msg:
          example: OK
          type: string
        result:
          properties:
            profile:
              $ref: '#/components/schemas/clm.ProfileDetailsResponse'
          type: object
        status:
          example: 200
          type: integer
      type: object
    ProfileCustomFieldsRequest:
      type: object
      description: >-
        Organization-defined profile values keyed by immutable definition key.
        Every write retrieves the latest definitions before validation. Unknown
        or archived keys and wrong types return HTTP 400; if definitions cannot
        be retrieved, the write is rejected. Omitted keys remain unchanged on
        PATCH, and null clears one named value. Required fields are enforced on
        profile creation and onboarding.
      additionalProperties:
        description: >-
          A JSON value validated against the latest profile custom field
          definition for the organization. The definition determines the
          accepted type and, for Choice fields, the accepted stored values. Null
          clears this named value on PATCH; on create it is treated as omitted
          and fails when the field is required.
        oneOf:
          - type: string
          - type: number
          - type: boolean
          - type: object
            additionalProperties: true
          - type: array
            items: {}
          - type: 'null'
      example:
        loan_number: LN-2026-0042
        loan_status: funded
        servicing_details:
          portfolio: Prime
          boardingDate: '2026-08-27'
    clm.ProfileDetailsResponse:
      properties:
        _v:
          example: 1
          type: integer
        address1:
          example: 1234 Fake St
          type: string
        address2:
          example: Apt 123
          type: string
        addressCity:
          example: Toronto
          type: string
        addressPostalCode:
          example: A1B2C3
          type: string
        addressState:
          example: 'ON'
          type: string
        allowlistUntil:
          example: 2024/08/15
          type: string
        archived:
          example: false
          type: boolean
        assignee:
          example: core-user-id
          type: string
        country:
          example: Canada
          type: string
        createdAt:
          example: '2024-08-19T18:40:57.656816645Z'
          type: string
        createdBy:
          example: core-user-id
          type: string
        dateOfBirth:
          example: YYYY/MM/DD
          type: string
        email:
          example: john.smith@email.com
          type: string
        externalId:
          example: external-customer-id
          type: string
        firstName:
          example: John
          type: string
        flags:
          items:
            $ref: '#/components/schemas/clm.FlagListItemResponse'
          type: array
          uniqueItems: false
        id:
          example: 66c391b92888a0db5cc6d3f6
          type: string
        kind:
          example: individual
          type: string
        lastName:
          example: Smith
          type: string
        lastScreenedTime:
          example: '2024-08-15T14:43:02.805Z'
          type: string
        monitored:
          example: monitored
          type: string
        nationality:
          example: Canada
          type: string
        occupation:
          example: Minerva
          type: string
        organization:
          example: Software Engineer
          type: string
        phone:
          example: '+15555555555'
          type: string
        sex:
          example: m
          type: string
        status:
          example: potential_match
          type: string
        tenantId:
          example: ef637217-5fbf-4117-88f0-a9f1246ffe7f
          type: string
        updatedAt:
          example: '2024-08-15T14:43:02.805Z'
          type: string
        profileGroupIds:
          description: >-
            Workspace-scoped profile group IDs assigned to this profile for
            dynamic risk segmentation. A profile can belong to multiple groups.
          type: array
          items:
            type: string
          example:
            - 665f0d4c2d2f7c2b2f2f2f31
            - 665f0d4c2d2f7c2b2f2f2f32
        profileCustomFields:
          type: array
          description: >-
            Optional custom values resolved against the organization's [profile
            custom field](/profile-custom-fields-guide) definitions, in
            definition priority order. Definition edits and archives may take up
            to 60 seconds to appear in profile reads; stored values do not
            change. After the read view refreshes, archived fields are omitted.
            Omitted when no stored values resolve, which preserves the legacy
            response shape.
          items:
            $ref: '#/components/schemas/ProfileCustomFieldResponseItem'
          example:
            - key: loan_number
              label: Loan Number
              type: text
              value: LN-2026-0042
            - key: loan_status
              label: Loan Status
              type: enum
              value: funded
              valueLabel: Funded
            - key: servicing_details
              label: Servicing Details
              type: json
              value:
                portfolio: Prime
      type: object
    clm.FlagListItemResponse:
      properties:
        count:
          example: 2
          type: integer
        kind:
          example: screeningPepMatch
          type: string
      type: object
    ProfileCustomFieldResponseItem:
      type: object
      required:
        - key
        - label
        - type
        - value
      description: >-
        One stored custom value resolved against the organization definition
        used for this response. Definition changes may take up to 60 seconds to
        appear in profile reads. Items are emitted in definition priority order.
      properties:
        key:
          type: string
          description: Immutable definition key used in API requests.
          example: loan_status
        label:
          type: string
          description: >-
            Customer-facing definition label resolved for this response. It can
            remain unchanged for up to 60 seconds after a definition update.
          example: Loan Status
        type:
          type: string
          enum:
            - text
            - number
            - date
            - boolean
            - enum
            - json
          description: Raw API definition type.
          example: enum
        value:
          description: >-
            Stored typed value. Its JSON type follows the sibling type field.
            Structured data is an object or array. Large integral number values
            may exceed JavaScript's safe integer range.
          oneOf:
            - type: string
            - type: number
            - type: boolean
            - type: object
              additionalProperties: true
            - type: array
              items: {}
          example: funded
        valueLabel:
          type: string
          description: >-
            Display label resolved for an enum value in this response. It can
            remain unchanged for up to 60 seconds after an option-label update.
            Present when the stored Choice value resolves to a configured
            option.
          example: Funded
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: x-api-key
      description: >-
        The Minerva API key used for this integration. Manage API keys in the
        Minerva dashboard under Administration > Developers.

````