---
title: Trigger KYC then profile declaration
slug: detected-apis/trigger-kyc-then-profile-declaration
docTags: 
createdAt: 2026-08-11T12:55:25.885Z
---

Your application creates a profile, adds the people who must complete KYC, triggers Verify Portal links for those people, then completes **profile declaration** so the case can move into review, risk, and automated or manual decisioning.

# General Flow

- Your systems create a profile for the case (entity or individual, per your configuration)
- Your systems add representatives (directors, UBOs, trustees, or other required people) on that profile
- Your systems trigger KYC links so each required person completes verification in the Detected Verify Portal
- After KYC is complete (and other configured modules as needed), **profile declaration** finishes the case typically via the Onboarding Portal Review & submit / Declaration step
- Detected runs screening, data comparison, and configured risk / status-change actions
- Low-risk cases may auto-approve; otherwise the case goes to manual review in Case Management
- Your systems receive Status Webhooks and pull profile / verification data as needed

# Who is involved

| **Role**                          | **In this flow**                                                                                              |
| --------------------------------- | ------------------------------------------------------------------------------------------------------------- |
| End customer / representative     | Completes KYC in the Verify Portal when invited                                                               |
| Declaratory / portal user         | Completes **profile declaration** (Review & submit) when that is part of your configuration                   |
| Your development team             | Builds create profile → add people → KYC login links → declaration hand-off                                   |
| Your operations / compliance team | May create the case, invite people, and review non-auto-approved outcomes in Case Management                  |
| Your systems                      | `POST /profiles`, `POST /representatives`, verify `login-links`; Status Webhook; composed GETs after decision |
| Detected                          | Verify Portal, declaration, screening / risk, Case Management, webhooks                                       |

# When to choose this flow

**Use when:** You orchestrate the case from your application - create the profile, add people, send KYC links, then complete **profile declaration** so risk and approval can run.

# What you build

**API density:** High. Profile and people orchestration plus verify redirects; declaration is portal-led on this flow.

| Step                      | API / surface                                                                                         |
| ------------------------- | ----------------------------------------------------------------------------------------------------- |
| Create the case           | `POST /profiles`                                                                                      |
| Add people on the profile | `POST /representatives` (repeat per person; include roles your People Model requires)                 |
| Trigger KYC               | `POST /representatives/{uuid}/login-links` (`purpose: verify`) - redirect, email, SMS, or QR          |
| Person completes KYC      | Verify Portal (ID / liveness / forms per People Verification settings)                                |
| KYC outcome               | Status Webhook (`verification.updated`) and/or `GET /representatives/{uuid}/verifications`            |
| Profile declaration       | Onboarding Portal - Declaration / Review & submit (declaratory or portal user per your configuration) |
| Post-declaration          | Screening / risk / status-change actions → Status Webhook (`profile.updated`) → composed GETs         |

KYC sequence detail: [Trigger a KYC journey with redirect](https://docs.detected.app/detected-apis/trigger-a-kyc-journey-with-redirect).



# Data Flow

```mermaid
---
config:
  theme: redux-dark
  look: classic
  layout: dagre
---
flowchart TD
  subgraph YourApp["Your application"]
    Create(["Create profile"])
    AddPeople(["Add representatives"])
    TriggerKYC(["Trigger KYC links"])
  end
  subgraph Detected["Detected"]
    subgraph Verify["Verify Portal"]
      KYCTasks(["Complete KYC tasks"])
      KYCSubmit(["Submit verification"])
    end
    subgraph Onboard["Onboarding Portal"]
      Declare(["Profile declaration"])
    end
    Risk(["Screening / risk / automation"])
    Decision(["Auto approve or manual review"])
  end
  Customer((("Representative")))
  YourApp --> Create --> AddPeople --> TriggerKYC
  TriggerKYC -- "Invite / redirect" --> Verify
  Customer --> KYCTasks --> KYCSubmit
  KYCSubmit -.-> Declare
  Declare --> Risk --> Decision
  Decision -. "Webhook" .-> YourApp
```



# Integration view

Same flow with API endpoints and webhook events called from your stack.

```mermaid
---
config:
  theme: redux-dark
  look: classic
  layout: dagre
---
flowchart TB
  subgraph Stack["Your stack"]
    App["Your application / ops tool"]
    WH["Status Webhook"]
  end
  subgraph API["Detected API v2"]
    P["POST /profiles"]
    R["POST /representatives"]
    LL["POST /representatives/{uuid}/login-links\npurpose: verify"]
    GV["GET /representatives/{uuid}/verifications"]
    GP["GET /profiles/{uuid}\n+ analysis / composed GETs"]
  end
  subgraph Portals["Detected portals"]
    V["Verify Portal — KYC"]
    D["Onboarding Portal — Profile declaration"]
  end
  subgraph CM["Case Management"]
    Auto["Auto approve / status actions"]
    Manual["Manual review if not low risk"]
  end
  App --> P --> R --> LL
  LL -->|"Deliver link"| V
  V -.->|"verification.updated"| WH
  WH --> GV
  V --> D
  D --> Auto
  D --> Manual
  Auto -.->|"profile.updated"| WH
  Manual -.->|"profile.updated"| WH
  WH --> GP
```



# After declaration

1. Configure the Status Webhook in Case Management → Integration Information (profile and verification events use the Status URL).
2. On `verification.updated`, verify the `Signature` header and pull verification detail if you sync KYC results early. See [Verify webhook](https://docs.detected.app/detected-apis/verify-webhook).
3. After **profile declaration**, expect `profile.updated` (often **Needs Review**, then Approved / other statuses from your automation). Verify the `Signature` header. See [Webhook overview](https://docs.detected.app/detected-apis/webhook-overview).
4. Pull case data with composed GETs. See [Extract information from a profile after compliance decision](https://docs.detected.app/detected-apis/extract-information-from-a-profile-after-compliance-decision).





# Relevant APIs / integration guides

[Trigger a KYC journey with redirect](https://docs.detected.app/detected-apis/trigger-a-kyc-journey-with-redirect)

[Create a profile via API](https://docs.detected.app/detected-apis/create-a-profile-via-api)

[Verify webhook](https://docs.detected.app/detected-apis/verify-webhook)

[Profile webhook lifecycle](https://docs.detected.app/detected-apis/profile-webhook-lifecycle)

[Extract information from a profile after compliance decision](https://docs.detected.app/detected-apis/extract-information-from-a-profile-after-compliance-decision)

[Webhook overview](https://docs.detected.app/detected-apis/webhook-overview)

[Portals / Web Apps](https://docs.detected.app/detected-apis/portals-web-apps)

[External System Initiating](https://docs.detected.app/detected-apis/external-system-initiating)

[Reference Process Flows](https://docs.detected.app/detected-apis/reference-process-flows)
