---
title: "Update a profile for a given individual entity."
method: PATCH
path: "/v2/individuals/{entityId}/serviceprofiles/{serviceName}"
tags: ["Individual Profiles"]
---

# Update a profile for a given individual entity.

`PATCH /v2/individuals/{entityId}/serviceprofiles/{serviceName}`

Update a profile for a given individual entity.

## Headers

- `api_key` string, required
- `X-Frankie-CustomerID` string, required
- `X-Frankie-CustomerChildID` string
- `X-Frankie-Channel` string
- `X-Frankie-Username` string

## Request body

- object
  - `serviceProfile` ServiceProfilePatch
    - `assignee` string — The name of the officer assigned to approve this profile
    - `reviewer` string — The name of the officer assigned to review this profile
    - `currentWorkflowName` string
    - `state` 'ARCHIVED' | 'INACTIVE' — Current state of the Service Profile. This is a restricted set that can be changed externally.
  - `comment` Comment
    - `commentId` string — Unique identifier for the comment.
    - `text` string — The text content of the comment.

## Response `200`

OK

- object
  - `requestId` string — The unique request identifier for the API call made.
  - `serviceProfile` ServiceProfile
    - `serviceProfileId` string — The unique identifier for the service profile.
    - `latestRiskAssessmentId` string — Unique identifier of the risk assessment.
    - `latestWorkflowExecutionId` string — The ID of the most recent workflow execution. Omitted if no workflows exist.
    - `entityId` string
    - `entityName` string
    - `entityType` string
    - `organizationType` string
    - `country` string — The ISO 3166 alpha-3 code representing the individual's country of residence or the business's country of registration.
    - `schemaVersion` integer — The version number of the schema.
    - `createdAt` string, date-time — The UTC date and time when this service profile was created.
    - `createdRequestId` string — The unique ULID identifier of the request that created this service profile.
    - `createdBy` string — The user or client that created this profile.
    - `updatedAt` string, date-time — The UTC date and time when this service profile was last updated, if applicable.
    - `updatedBy` string — The user or client that last updated this profile.
    - `updatedRequestId` string — The unique ULID identifier of the request that last updated this service profile.
    - `assignee` string — The name of the officer assigned to approve this profile.
    - `reviewer` string — The name of the officer assigned to review this profile.
    - `currentWorkflowId` string
    - `currentWorkflowName` string — The name of the current workflow, if applicable.
    - `workflowSummaries` WorkflowExecutionSummary[]
      - `schemaVersion` integer — Version of the schema used for this workflow execution.
      - `workflowName` string — Name of the workflow.
      - `workflowExecutionId` string — Unique identifier for the workflow execution.
      - `workflowExecutionState` 'COMPLETED' | 'CANCELED' | 'TERMINATED' | 'ERROR' | 'TIMEOUT' | 'IN_PROGRESS' — Current state of the workflow execution. Possible values: - COMPLETED: The workflow execution has completed successfully. - CANCELED: The workflow execution was canceled. - TERMINATED: The workflow execution was terminated before completion. - ERROR: The workflow execution encountered an error. - TIMEOUT: The workflow execution timed out. - IN_PROGRESS: The workflow execution is currently in progress.
      - `status` 'UNCHECKED' | 'IN_PROGRESS' | 'REVIEW' | 'PASS' | 'FAIL' | 'COMPLETE' | 'INCOMPLETE' | 'NEEDS_APPROVAL' | 'APPROVED' | 'REJECTED' | 'BLOCKED' | 'CLEAR' | 'URGENT' | 'MONITOR' — Outcome of this workflow execution. Possible results: - UNCHECKED: The workflow has not yet been run and has no result. - IN_PROGRESS: The workflow is currently running and awaiting completion. - REVIEW: The workflow produced results that require review. Check the risks and step results for more details. - PASS: The workflow successfully completed with a PASS recommendation. - FAIL: The workflow finished with a FAIL recommendation. - COMPLETE: The workflow has finished and the results are considered complete. PASS/FAIL is not required. - INCOMPLETE: The workflow has finished and the results are considered incomplete. PASS/FAIL is not required. - NEEDS_APPROVAL: The workflow requires an approval process. Once approved, re-run the workflow. - APPROVED: The workflow was approved, typically by an external source such as a human. - REJECTED: The workflow was rejected, typically by an external source such as a human. - BLOCKED: The workflow was blocked from completing. Manual review is required. - CLEAR: The workflow completed with no issues raised. Often used for ongoing monitoring workflows. - URGENT: The workflow completed with matters requiring urgent review. Often used for ongoing monitoring workflows that return sanctions or similarly critical items. - MONITOR: The workflow completed and further monitoring is required. Should be manually reviewed.
      - `statusOverrideAt` string, date-time — Timestamp when the status override occurred.
      - `statusOverrideRequestId` string — Request ID associated with the status override.
      - `statusOverrideBy` string — Identifier of the user who performed the status override.
      - `riskAssessment` RiskAssessment
        - `serviceProfileId` string, required — Unique identifier of the Service Profile.
        - `riskAssessmentId` string — Unique identifier of the risk assessment.
        - `workflowId` string, required — Unique identifier of the workflow.
        - `workflowExecutionId` string, required — Unique identifier of the workflow execution.
        - `entityId` string, required — Unique identifier of the entity being assessed.
        - `schemaVersion` integer — Version of the risk assessment schema.
        - `createdAt` string, date-time — Timestamp when the risk assessment was created.
        - `updatedAt` string, date-time — Timestamp when the risk assessment was last updated.
        - `updatedBy` string — Identifier of the user or system that updated this assessment.
        - `updatedRequestId` string — Identifier of the request that updated this assessment.
        - `workflowRiskScore` number — Risk score calculated for the workflow.
        - `workflowRiskLevel` 'UNKNOWN' | 'LOW' | 'MEDIUM' | 'HIGH' | 'UNACCEPTABLE' — The risk level classification: - UNKNOWN: Risk level is not determined. - LOW: Low risk. - MEDIUM: Medium risk. - HIGH: High risk. - UNACCEPTABLE: Risk level is unacceptable.
        - `riskScore` number — Risk score calculated for the entity.
        - `riskLevel` 'UNKNOWN' | 'LOW' | 'MEDIUM' | 'HIGH' | 'UNACCEPTABLE' — The risk level classification: - UNKNOWN: Risk level is not determined. - LOW: Low risk. - MEDIUM: Medium risk. - HIGH: High risk. - UNACCEPTABLE: Risk level is unacceptable.
        - `isOutdated` boolean — Indicates whether the assessment is out of date, either due to manual updates or changes to risk factors that were assessed.
        - `riskFactors` RiskFactor[] — List of risk factors considered in this assessment.
          - `riskFactorId` string — Unique identifier of the risk factor.
          - `factor` string — Name of the Frankie risk factor.
          - `value` string — Value assigned to the risk factor.
          - `score` number — Risk score assigned to the factor (based on customer configuration).
          - `description` string — Description of the risk factor.
          - `workflowExecutionId` string — Unique identifier of the workflow execution in which the risk factor was generated.
          - `stepResultId` string — Unique identifier of the step result if the factor originated from a step.
          - `manualOverrideScore` number — If present, this score overrides all others and is used as the final score in risk assessment.
          - `status` 'VALID' | 'STALE' | 'OVERRIDDEN' | 'DISCARDED' — The current status of the risk factor: - VALID: The risk factor is applicable to the entity. - STALE: The risk factor is no longer applicable to the entity. If this status is returned, it means that at the time of risk assessment, the risk factor was valid. - OVERRIDDEN: The risk factor was manually overridden. If present, manualOverrideScore was used for risk score calculation in the risk assessment. - DISCARDED: The risk factor was added during workflow execution but was discarded at a later stage in the same workflow. This factor was not used in the final risk assessment.
          - `createdAt` string, date-time — Timestamp when the risk factor was created.
          - `updatedAt` string, date-time — Timestamp when the risk factor was last updated.
          - `updatedBy` string — Identifier of the user or system that updated this risk factor (e.g., System:<service_name>; or User:<user_name>).
          - `updatedRequestId` string — Identifier of the request that updated this risk factor.
          - `createdServiceProfileId` string, uuid — Identifier of the service profile associated with this risk factor when it was created.
          - `createdWorkflowExecutionId` string — Identifier of the workflow execution that originally created the risk factor.
          - `createdStepResultId` string — Identifier of the step result that originally created the risk factor.
      - `isManual` boolean — Indicates if the workflow was executed manually.
      - `steps` WorkflowExecutionSteps
        - `order` string[]
        - `passed` string[]
        - `failed` string[]
        - `incomplete` string[]
        - `notApplicable` string[]
      - `startedAt` string, date-time — The timestamp when the workflow execution started.
      - `endedAt` string, date-time — The timestamp when the workflow execution ended.
      - `issues` WorkflowIssue[] — List of issues encountered during the workflow execution.
        - `issueId` string — Unique identifier for the risk issue.
        - `category` 'AML' | 'BAD_DATA' | 'BIOMETRICS' | 'BLOCKLISTED' | 'DECEASED' | 'DEVICE' | 'DOCUMENT' | 'DUPLICATE' | 'EXPIRY' | 'FRAUD' | 'IDV' | 'INFORMATIONAL' | 'KYC' | 'SYSTEM' | 'VERIFY' | 'VISA' | 'WATCHLIST' | 'ACTIVITY', required — General category of issue found: - AML: Anti-Money Laundering issues. - BAD_DATA: Indicates that the data provided is invalid or incorrect. - BIOMETRICS: Issues found during a biometrics check. - BLOCKLISTED: The entity has a hit on a blocklist. - DECEASED: Indicates that the entity is deceased. - DEVICE: Issues found during device checks. - DOCUMENT: Issues found during a document check. - DUPLICATE: Indicates that the entity has duplicates. - EXPIRY: Indicates that a process or document for the entity has expired. - FRAUD: Possible fraud detected. - IDV: Issues found during an Identity Verification (IDV) process. - INFORMATIONAL: Informational messages that are not issues but are required to be returned. - KYC: Issues found during a Know Your Customer (KYC) process. - SYSTEM: System-level issues. - VERIFY: Issues found during a verification process. - VISA: Issues found during a visa check. - WATCHLIST: Issues found during a watchlist check. - ACTIVITY: Issues found during an activity process.
        - `issue` 'AML_ISSUE' | 'BAD_DATA_ADDRESS' | 'BAD_DATA_DOB' | 'BAD_DATA_EMAIL' | 'BAD_DATA_ID' | 'BAD_DATA_MOBILE' | 'BAD_DATA_NAME' | 'BLOCKED' | 'COMPROMISED_DOCUMENT' | 'CREDIT_HEADER' | 'DATA_COMPARISON' | 'DATA_CONSISTENCY' | 'DATA_VALIDATION' | 'DENY_LIST' | 'DECEASED' | 'DEVICE_FRAUD_MATCH' | 'DEVICE_INVALID' | 'DOCUMENT_COMPARISON' | 'DUPLICATE' | 'FRAUD_CHECK' | 'FRAUD_DEVICE' | 'FRAUD_IP_ADDRESS' | 'FRAUD_EMAIL_ADDRESS' | 'FRAUD_PHONE_NUMBER' | 'FRAUD_ISSUE' | 'FRAUD_LIST' | 'IMAGE_INTEGRITY' | 'INTERNAL_MATCH' | 'LIVENESS_DETECTION' | 'MATCHED_EXTERNAL' | 'MATCHED_INTERNAL' | 'MATCHED_SHARED' | 'MEDIA' | 'NOT_FOUND' | 'OCR' | 'PARTIAL' | 'PEP' | 'REQUIRES_AML' | 'REQUIRES_IDV' | 'REQUIRES_KYC' | 'REQUIRES_VISA' | 'SANCTION' | 'SERVICE_ERROR' | 'SERVICE_TIMEOUT' | 'VISA_FAILED' | 'VISUAL_AUTHENTICITY' | 'WATCHLIST' | 'ACTIVITY_AML' | 'ACTIVITY_FRAUD' | 'ACTIVITY_DEVICE', required — For each category, this provides the specific issue type. AML: - PEP: The entity has Politically Exposed Person (PEP) hits. - SANCTION: The entity has sanction hits. - MEDIA: The entity has adverse media hits. - WATCHLIST: The entity has watchlist hits. BAD_DATA: - BAD_DATA_NAME: Name is required for verification but is missing or unusable due to data quality issues. - BAD_DATA_DOB: Date of Birth is required for verification but is missing or unusable due to data quality issues. - BAD_DATA_ADDRESS: Address is required for verification but is missing or unusable due to data quality issues. - BAD_DATA_ID: ID is required for verification but is missing or unusable due to data quality issues. - BAD_DATA_EMAIL: Email is required for verification but is missing or unusable due to data quality issues. - BAD_DATA_MOBILE: Mobile is required for verification but is missing or unusable due to data quality issues. BLOCKLISTED: - MATCHED_INTERNAL: The entity matched an internal blocklist. - MATCHED_SHARED: The entity matched a shared blocklist. - MATCHED_EXTERNAL: The entity matched an external blocklist. DECEASED: - DECEASED: The person whose data is being verified is deceased. DEVICE: - DEVICE_FRAUD_MATCH: Fraud detected on the device. - DEVICE_INVALID: The device is invalid. DUPLICATE: - DUPLICATE: The entity is a duplicate of another entity. EXPIRY: - REQUIRES_KYC: KYC process needs to be re-initiated. - REQUIRES_IDV: IDV process needs to be re-initiated. - REQUIRES_AML: AML process needs to be re-initiated. - REQUIRES_VISA: Visa process needs to be re-initiated. FRAUD: - FRAUD_LIST: The entity is on a fraud list. - FRAUD_CHECK: Fraud detected during checks. - FRAUD_DEVICE: Device fraud detected. - FRAUD_IP_ADDRESS: IP address fraud detected. - FRAUD_EMAIL_ADDRESS: Email address fraud detected. - FRAUD_PHONE_NUMBER: Phone number fraud detected. IDV: - DATA_COMPARISON: Data comparison issue. - DATA_VALIDATION: Data validation issue. - DATA_CONSISTENCY: Data consistency issue. - VISUAL_AUTHENTICITY: Visual authenticity issue. - IMAGE_INTEGRITY: Image integrity issue. - COMPROMISED_DOCUMENT: Document is compromised. - LIVENESS_DETECTION: Liveness detection failed. - DOCUMENT_COMPARISON: Document comparison issue. INFORMATIONAL: - CREDIT_HEADER: Credit header information was returned as part of a credit agency check. KYC: - PARTIAL: The KYC check was only partially successful. - NOT_FOUND: No match was found for the given data. OCR: - OCR: The OCR data does not match what was entered by the user. SYSTEM: - SERVICE_TIMEOUT: All providers have timed out. - SERVICE_ERROR: All providers have returned an error or an internal error has occurred. VISA: - DENY_LIST: The entity matched a visa deny list. - VISA_FAILED: Visa check failed from the provider. WATCHLIST: - INTERNAL_MATCH: The entity matched an internal watchlist. ACTIVITY: - ACTIVITY_AML: AML-related activity issue. - ACTIVITY_FRAUD: Fraud-related activity issue. - ACTIVITY_DEVICE: Device-related activity issue.
        - `workflowExecutionId` string — Identifier of the workflow execution in which this issue was generated.
        - `stepResultId` string — Identifier of the step from which this issue originated, if applicable.
        - `isCleared` boolean — Indicates if this specific issue has been manually flagged as addressed.
        - `createdBy` string — User or system that created this issue.
        - `createdAt` string, date-time — The timestamp when the issue was created.
        - `updatedAt` string, date-time — The timestamp when the issue was last updated.
        - `updatedBy` string — User or system that last updated this issue (e.g., System:<service_name> or User:<user_name>).
        - `updatedRequestId` string — Identifier of the request that updated this issue.
        - `severity` 'INFO' | 'REVIEW' | 'BLOCK' | 'WARNING' | 'CRITICAL' | 'ERROR', required — The severity level of the issue. Possible values: - INFO: Informational only. - REVIEW: Requires review. - BLOCK: Blocks further processing. - WARNING: Warning, but not blocking. - CRITICAL: Critical issue. - ERROR: Error encountered.
      - `lifecyclePhase` 'ONBOARDING' | 'MONITORING' | 'OTHER' — Specifies the lifecycle phase of the customer in which this workflow is executed: - ONBOARDING: Workflow is in the onboarding stage. - MONITORING: Workflow is in the monitoring stage. - OTHER: Workflow is in another stage.
      - `monitoringTypes` MonitoringType[] — The types of monitoring that subscribe to the workflow.
    - `serviceName` string — The name of the service associated with this profile.
    - `customerReference` string — Customer-specific identifier(s).
    - `subscriptions` ServiceProfileSubscription[] — The list of subscriptions associated with the service profile. A subscription determines if the service profile is subscribed to a particular ongoing process.
      - `serviceProfileId` string — The unique identifier of the service profile.
      - `status` 'ENABLED' | 'DISABLED' — Indicates whether the subscription is currently active and operational.
      - `type` 'AML' | 'ACTIVITY' — Specifies the type of service profile subscription. This value determines the category of the service profile subscription.
      - `workflowName` string — The name of the monitoring workflow executed when a monitoring alert occurs.
      - `workflowId` string — The unique identifier of the monitoring workflow.
      - `enabledAt` string, date-time — The date and time when the subscription was most recently enabled.
      - `enabledRequestId` string — The request identifier for the most recent enable action.
      - `enabledBy` string — The user who most recently enabled the subscription.
      - `disabledAt` string, date-time — The date and time when the subscription was most recently disabled.
      - `disabledRequestId` string — The request identifier for the most recent disable action.
      - `disabledBy` string — The user who most recently disabled the subscription.
    - `state` 'INIT' | 'AUTO' | 'ACTIVE' | 'ARCHIVED' | 'BLOCKLISTED' | 'INACTIVE' | 'DELETED' | 'DUPLICATE' — Current state of the Service Profile - INIT: Initial state when the profile is created. - AUTO: Automatically assigned state, typically after initial processing. - ACTIVE: The profile is active and in use. - ARCHIVED: The profile has been archived and is no longer active. - BLOCKLISTED: The profile is blocked from further actions. - INACTIVE: The profile is inactive, not currently in use. - DELETED: The profile has been deleted. - DUPLICATE: The profile is a duplicate of another existing profile.

## Other responses

- `400` — Bad request
- `401` — Unauthorized
- `403` — Forbidden request
- `404` — Not Found
- `500` — Internal Server Error
- `502` — Bad Gateway
- `503` — Service Unavailable

---

[API](https://skmtc.net/frankieone/apis/kyc-v2-api.md) · [All operations](https://skmtc.net/frankieone/apis/kyc-v2-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/frankieone/kyc-v2-api/revisions/880b27506cbb/schema)
