### Install Bruno CLI on Linux Source: https://docs.frankieone.com/v2/api/developers/api-testing-guide Use Snap to install the Bruno command-line interface on Linux. ```bash # Linux (Snap) snap install bruno ``` -------------------------------- ### Install FrankieOne SDK via NPM Source: https://docs.frankieone.com/v2/kyc/kyc/concepts-and-definitions/kyc-llm-reference Use this command to install the FrankieOne SDK package using npm. ```bash npm install @frankieone/one-sdk ``` -------------------------------- ### Workflow ID Examples Source: https://docs.frankieone.com/v2/api/developers/predefined-workflows Illustrative examples of workflow IDs and their meanings, demonstrating the naming convention. ```text AUS-Basic2V-TwoPlus ``` ```text USA-Advanced1V-IDOnly ``` ```text GBR-Basic2V-TwoPlusID ``` -------------------------------- ### Example v2 Request URL with Variables Source: https://docs.frankieone.com/v2/api/developers/api-testing-guide Demonstrates how to use environment variables in the request URL for the v2 API. ```text https://api.{{frankie-environment}}.frankie.one/v2/individuals ``` -------------------------------- ### Install Bruno CLI on Windows Source: https://docs.frankieone.com/v2/api/developers/api-testing-guide Use Chocolatey to install the Bruno command-line interface on Windows. ```bash # Windows (Chocolatey) choco install bruno ``` -------------------------------- ### v2 Current API Request Example Source: https://docs.frankieone.com/v2/api/introduction/api-versioning Example of a POST request to the current v2 API for individual creation, including endpoint, headers, and request body. ```text POST /v2/individuals ``` ```text api_key: YOUR_API_KEY X-Frankie-CustomerID: YOUR_CUSTOMER_ID ``` ```json { "individual": { "name": { "givenName": "John", "familyName": "Doe" }, "dateOfBirth": { "year": "1990", "month": "03", "day": "27" }, "addresses": [ { "type": "RESIDENTIAL", "status": "CURRENT", "streetNumber": "525", "streetName": "Kent", "locality": "Manhattan", "subdivision": "NY", "country": "USA", "postalCode": "10037" } ] } } ``` -------------------------------- ### Get Workflows Response Example Source: https://docs.frankieone.com/v2/docs/tm/implementation This is an example of a successful response when calling the GET /v2/workflows endpoint. It shows the structure of the workflows array, including details like workflow ID, lifecycle phase, and monitoring types. ```json { "requestId": "req_01J...", "workflows": [ { "serviceName" : "DEFAULT", "workflowId" : "wf_01J...", "workflowName" : "Monitoring", "type" : "SYSTEM", "lifecyclePhase": "MONITORING", "monitoringTypes": ["ACTIVITY"] } ] } ``` -------------------------------- ### Install Bruno CLI on macOS Source: https://docs.frankieone.com/v2/api/developers/api-testing-guide Use Homebrew to install the Bruno command-line interface on macOS. ```bash # macOS (Homebrew) brew install bruno ``` -------------------------------- ### v1 Legacy API Request Example Source: https://docs.frankieone.com/v2/api/introduction/api-versioning Example of a POST request to the legacy v1 API for entity creation, including endpoint, headers, and request body. ```text POST /v1/entity ``` ```text Authorization: Bearer YOUR_API_KEY ``` ```json { "entity": { "entityType": "INDIVIDUAL", "givenName": "John", "familyName": "Doe", "dateOfBirth": "1990-03-27", "streetNumber": "525", "streetName": "Kent", "city": "Manhattan", "country": "USA" } } ``` -------------------------------- ### Quick Setup for MCP Client Configuration Source: https://docs.frankieone.com/v2/api/developers/frankie-one-mcp-server Add this configuration to your MCP client to connect to the FrankieOne MCP server. No authentication is required. ```json { "mcpServers": { "frankieone": { "type": "url", "url": "https://docs.frankieone.com/mcp" } } } ``` -------------------------------- ### Example Headers with Variables Source: https://docs.frankieone.com/v2/api/developers/api-testing-guide Shows how to incorporate various environment and API key variables into request headers. Optional headers are included but may be disabled by default in some tools. ```text api_key: {{api_key}} X-Frankie-CustomerID: {{X-Frankie-CustomerID}} X-Frankie-CustomerChildID: {{X-Frankie-CustomerChildID}} X-Frankie-Channel: {{X-Frankie-Channel}} X-Frankie-Username: {{X-Frankie-Username}} Content-Type: application/json ``` -------------------------------- ### Example Workflow Execution Sequence Source: https://docs.frankieone.com/v2/api/developers/understanding-checks-workflows-in-frankie-one This diagram illustrates the typical sequence of data collection and verification using OneSDK Flow IDs and backend workflows. ```text OneSDK Flow ID (Frontend) ↓ Collects Data ↓ Workflow (Backend) ↓ Verifies Data ``` -------------------------------- ### Success Response Example (Create Individual) Source: https://docs.frankieone.com/v2/api/developers/api-testing-guide This JSON structure represents a successful response when creating an individual. It includes a requestId, details about the created individual, and service profiles. ```json { "requestId": "01HM5XJ7VASZ3EJMB1VQGTBFJ4", "individual": { "entityId": "abc123-def456-ghi789", "schemaVersion": 2, "name": { "nameId": "...", "givenName": "John", "familyName": "Smith" }, "dateOfBirth": { "dateOfBirthId": "...", "year": "1990", "month": "01", "day": "15" }, "addresses": [...], "consents": [...] }, "serviceProfiles": [...] } ``` -------------------------------- ### Initialize FrankieOne SDK Source: https://docs.frankieone.com/v2/kyc/kyc/concepts-and-definitions/kyc-llm-reference Initialize the OneSDK with your session token and mode. Configure the recipe provider for forms. ```javascript const oneSdk = await OneSDK({ session: sessionTokenFromBackend, mode: "development", // or "production" recipe: { form: { provider: { name: 'react' } // or 'vanilla' } } }); ``` -------------------------------- ### Lending Onboarding Workflow Diagram Source: https://docs.frankieone.com/v2/kyc/kyc/use-cases/lending-risk-based-customer-onboarding Conceptual implementation flow for lending customer onboarding, illustrating the sequence from application to loan decision. ```mermaid flowchart LR A["Application"] --> B["Identity Verification"] B --> C["Fraud Assessment"] C --> D["Risk Decision"] D --> E["Credit Assessment"] E --> F["Loan Decision"] ``` -------------------------------- ### AUS-Basic1V-IDOnly Workflow Example Source: https://docs.frankieone.com/v2/kyc/kyc/concepts-and-definitions/kyc-workflows Example JSON payload for the AUS-Basic1V-IDOnly workflow, which verifies a single government ID. Ensure you provide the required identity document details. ```json { "documents": { "IDENTITY": [ { "type": "PASSPORT", "country": "AUS", "primaryIdentifier": "PA1234567" } ] } } ``` -------------------------------- ### Example Fallback Configuration Source: https://docs.frankieone.com/v2/api/developers/how-frankie-one-selects-vendors-and-data-sources Demonstrates a typical fallback configuration where the system attempts to use a primary vendor, and if unsuccessful, automatically routes to a secondary vendor. This ensures service continuity even if the primary source fails or returns no match. ```mermaid flowchart TD A[Verification Request] --> B[Try Primary Vendor
Vendor A] B --> C{Successful?} C -->|Yes| D[Return Result] C -->|No| E[Try Secondary Vendor
Vendor B] E --> F{Successful?} F -->|Yes| D F -->|No| G[Return No Match] style A fill:#e1f5ff,stroke:#333,stroke-width:2px style B fill:#fff3cd,stroke:#333,stroke-width:1px style C fill:#d1ecf1,stroke:#333,stroke-width:2px style E fill:#fff3cd,stroke:#333,stroke-width:1px style F fill:#d1ecf1,stroke:#333,stroke-width:2px style D fill:#d4edda,stroke:#333,stroke-width:2px style G fill:#f8d7da,stroke:#333,stroke-width:2px ``` -------------------------------- ### Hybrid Integration: Entity Data Storage Example Source: https://docs.frankieone.com/v2/api/developers/integration-architecture-guide Illustrates dual storage for entity data, where your system is the source of truth and FrankieOne stores verification context, linked by a stable reference. ```json { "customerId": "CUST-12345", "frankieEntityId": "entity-abc-123", "verificationStatus": "PENDING" } ``` -------------------------------- ### Workflow Execute Response Example Source: https://docs.frankieone.com/v2/api/developers/api-testing-guide An example of a successful workflow execution response. This response may be synchronous (200) or asynchronous (202), indicated by the presence of a requestId or workflowExecutionId. ```json { "requestId": "01HM5XJ7VASZ3EJMB1VQGTBFJ4", "workflowResult": { "workflowExecutionId": "wf-exec-12345" }, "serviceProfile": { "serviceName": "your-service-name" }, "individual": { "entityId": "abc123-def456-ghi789-jkl012" } } ``` -------------------------------- ### Quick Implementation Flow Source: https://docs.frankieone.com/v2/kyc/kyc/use-cases/kyc-banking Outlines the essential steps for implementing a KYC workflow, from customer creation to handling webhook decisions and account activation. ```mermaid flowchart LR A["Create Individual"] --> B["Collect Documents"] --> C["Run Workflow"] C --> D["Receive Webhook"] D --> E["Handle Decision"] E --> F["Activate Account"] ``` -------------------------------- ### KYC Check Result Example Source: https://docs.frankieone.com/v2/api/developers/understanding-checks-workflows-in-frankie-one An example of a completed KYC check, showing the check type, name, result, and detailed verification status for name, address, and date of birth. ```json { "checkType": "KYC", "checkName": "two_", "result": "PASS", "details": { "nameVerified": true, "addressVerified": true, "dobVerified": true, "matchedSources": [ "Credit Bureau", "Electoral Roll" ] } } ``` -------------------------------- ### Get Individual Data Request Source: https://docs.frankieone.com/v2/kyc/kyc/concepts-and-definitions/kyc-llm-reference Use this HTTP GET request to retrieve individual data and associated service profiles. Ensure you include your API key and customer ID. ```http GET /v2/individuals/3fa85f64-5717-4562-b3fc-2c963f66afa6 HTTP/1.1 Host: api.uat.frankie.one api_key: your-api-key X-Frankie-CustomerID: your-customer-id ``` -------------------------------- ### Cursor MCP Server Configuration Source: https://docs.frankieone.com/v2/api/developers/frankie-one-mcp-server Configure the FrankieOne MCP server in Cursor by navigating to **Settings > MCP Servers > Add Server** and entering the provided Name, Type, and URL. ```text Name: frankieone Type: url URL: https://docs.frankieone.com/mcp ``` -------------------------------- ### Generate OneSDK Onboarding URL Source: https://docs.frankieone.com/v2/api/developers/understanding-checks-workflows-in-frankie-one Use this JavaScript snippet to generate a hosted OneSDK onboarding URL by calling the FrankieOne API. Ensure you replace placeholder API keys and IDs. ```javascript // Step 1: Generate hosted OneSDK URL const response = await fetch('https://api.frankie.one/idv/v2/idvalidate/onboarding-url', { method: 'POST', headers: { 'api_key': YOUR_API_KEY, 'X-Frankie-CustomerID': YOUR_CUSTOMER_ID, 'Content-Type': 'application/json' }, body: JSON.stringify({ flowId: 'idv', // ← This is the Flow ID entityId: 'entity-123', consent: true, sendSMS: true, phoneNumber: '+61412999999' }) }); const { url } = await response.json(); // Step 2: Send URL to user (via SMS, email, or display in app) // User completes the flow at this URL // Step 3: Receive webhook when user completes flow // Step 4: Execute workflow to verify the collected data ``` -------------------------------- ### Get Verification Results Source: https://docs.frankieone.com/v2/api/developers/api-testing-guide Retrieves the verification results for a specific individual entity. ```APIDOC ## GET /v2/individuals/{entityId}/results ### Description Get verification results. ### Method GET ### Endpoint /v2/individuals/{entityId}/results ### Parameters #### Path Parameters - **entityId** (string) - Required - The unique identifier of the individual entity. ``` -------------------------------- ### Initialize OneSDK Catch-All Event Listener Source: https://docs.frankieone.com/v2/kyc/kyc/concepts-and-definitions/kyc-llm-reference Use a wildcard listener to capture all SDK events, useful for debugging or logging. ```javascript oneSdk.on('*', (eventName, eventData) => { console.log(eventName, eventData); }) ``` -------------------------------- ### Get All Documents for Entity Source: https://docs.frankieone.com/v2/api/developers/api-testing-guide Retrieves all documents associated with a specific individual entity. ```APIDOC ## GET /v2/individuals/{entityId}/documents ### Description Get all documents for an entity. ### Method GET ### Endpoint /v2/individuals/{entityId}/documents ### Parameters #### Path Parameters - **entityId** (string) - Required - The unique identifier of the individual entity. ``` -------------------------------- ### Get Service Profile for Entity Source: https://docs.frankieone.com/v2/api/developers/api-testing-guide Retrieves the service profile details for a specific individual entity and service name. ```APIDOC ## GET /v2/individuals/{entityId}/serviceprofiles/{serviceName} ### Description Get service profile for entity. ### Method GET ### Endpoint /v2/individuals/{entityId}/serviceprofiles/{serviceName} ### Parameters #### Path Parameters - **entityId** (string) - Required - The unique identifier of the individual entity. - **serviceName** (string) - Required - The name of the service profile. ``` -------------------------------- ### OneSDK Flow Workflow Diagram Source: https://docs.frankieone.com/v2/api/developers/understanding-checks-workflows-in-frankie-one This diagram illustrates the step-by-step process of how OneSDK flows work, from requesting an onboarding URL to executing verification workflows. ```text User's Browser/App │ │ 1. Request onboarding URL │ ▼ Your Backend │ │ 2. Call FrankieOne API │ POST /idv/v2/idvalidate/onboarding-url │ Body: { flowId: "idv", entityId: "..." } │ ▼ FrankieOne API │ │ 3. Returns URL │ { url: "https://hosted.frankieone.com/..." } │ ▼ Your Backend │ │ 4. Send URL to user │ ▼ User's Browser/App │ │ 5. User opens URL │ - Sees document capture screen │ - Takes photo of ID │ - Takes selfie │ - Reviews data │ ▼ OneSDK (Hosted by FrankieOne) │ │ 6. Data collected │ - Document images │ - Biometric data │ - User consent │ ▼ FrankieOne Platform │ │ 7. Webhook sent to your backend │ "IDV data captured" │ ▼ Your Backend │ │ 8. Execute workflow │ POST /v2/individuals/{entityId}/.../workflows/{workflowName}/execute │ ▼ FrankieOne Platform │ │ 9. Workflow runs (KYC, IDV, AML checks) │ ▼ Your Backend │ │ 10. Webhook sent │ "Workflow complete - PASS" ``` -------------------------------- ### Get IDV Token Source: https://docs.frankieone.com/v2/api/developers/api-testing-guide Obtains an IDV (Identity Verification) token, typically used for integrating with provider SDKs. ```APIDOC ## POST /v2/individuals/{entityId}/actions/idv/token ### Description Get IDV token for provider SDK. ### Method POST ### Endpoint /v2/individuals/{entityId}/actions/idv/token ### Parameters #### Path Parameters - **entityId** (string) - Required - The unique identifier of the individual entity. ``` -------------------------------- ### Get Specific Workflow Execution Source: https://docs.frankieone.com/v2/api/developers/api-testing-guide Retrieves the details of a single, specific workflow execution using its execution ID. ```APIDOC ## GET /v2/individuals/{entityId}/serviceprofiles/{serviceName}/workflows/{workflowName}/executions/{executionId} ### Description Get a specific workflow execution. ### Method GET ### Endpoint /v2/individuals/{entityId}/serviceprofiles/{serviceName}/workflows/{workflowName}/executions/{executionId} ### Parameters #### Path Parameters - **entityId** (string) - Required - The unique identifier of the individual entity. - **serviceName** (string) - Required - The name of the service profile. - **workflowName** (string) - Required - The name of the workflow. - **executionId** (string) - Required - The unique identifier of the workflow execution. ``` -------------------------------- ### Deprecation Header Example Source: https://docs.frankieone.com/v2/api/introduction/api-versioning Deprecated endpoints return a 'Deprecation' header indicating their status and a 'Sunset' header with the retirement date. ```text Deprecation: true Sunset: Sat, 01 Jan 2028 00:00:00 GMT ``` -------------------------------- ### Get Activities request Source: https://docs.frankieone.com/v2/docs/tm/implementation-resolve-reevaluate Fetches historical information about user activities. This can be used to understand user behavior and for investigation purposes. ```APIDOC ## GET /v2/individuals/{individual_id}/activities ### Description Fetches historical information about user activities to provide context on user behavior and aid in investigations. ### Method GET ### Endpoint /v2/individuals/{individual_id}/activities ### Parameters #### Query Parameters - **sortField** (string) - Optional - Field to sort activities by (e.g., ACTIVITY_AT). - **sort** (string) - Optional - Sort order (ASC or DESC). - **limit** (integer) - Optional - Maximum number of activities to return. - **page** (integer) - Optional - Page number for pagination. ### Request Example ```text curl -X 'GET' \ 'https://api.uat.frankie.one:443/v2/individuals/d2859e0c-1f63-4208-947a-038bcb7b1e5e/activities?sortField=ACTIVITY_AT&sort=ASC&limit=20&page=1' \ -H 'accept: application/json' \ -H 'api_key: X ' \ -H 'X-Frankie-CustomerID: {{your_customer_id}}' \ -H 'X-Frankie-Username: {{example@frankieone.com}}' ``` ### Response #### Success Response (200) - **activities** (array) - A list of activity objects. - **pagination** (object) - Pagination information. #### Response Example ```json { "activities": [ { "activity_id": "string", "activity_type": "string", "activity_at": "string", "details": {} } ], "pagination": { "total_items": 0, "total_pages": 0, "current_page": 0, "page_size": 0 } } ``` ``` -------------------------------- ### Authentication Error Example Source: https://docs.frankieone.com/v2/api/developers/api-testing-guide This JSON structure indicates an authentication error, providing an errorCode, errorMsg, details about the authentication issue, and the requestId. ```json { "errorCode": "AUTH-0002", "errorMsg": "Unauthorized", "details": [ { "issue": "Invalid Authentication provided. Access denied.", "issueLocation": "request" } ], "requestId": "00000000S6MNG7624K2TDXT1E3" } ``` -------------------------------- ### Include FrankieOne SDK via CDN Source: https://docs.frankieone.com/v2/kyc/kyc/concepts-and-definitions/kyc-llm-reference Include this script tag in your HTML to load the FrankieOne SDK from a CDN. ```html ``` -------------------------------- ### Error Response Example Source: https://docs.frankieone.com/v2/api/developers/api-testing-guide This JSON structure details an error response, including an errorCode, errorMsg, a list of specific issues, and the requestId. ```json { "errorCode": "API-0400", "errorMsg": "Multiple Errors: See Issues list", "details": [ { "issue": "entityId in path must be of type uuid: \"test\"", "issueLocation": "VALIDATE-entityId" } ], "requestId": "01HM5XJ7VASZ3EJMB1VQGTBFJ4" } ``` -------------------------------- ### GET /v2/workflows Source: https://docs.frankieone.com/v2/api/developers/predefined-workflows Retrieves a list of workflows available to your account. This is useful for confirming which workflows are configured for your specific account and understanding their details. ```APIDOC ## GET /v2/workflows ### Description Retrieves a list of workflows available to your account. This endpoint helps you discover which workflows are configured for your specific account and provides details about each workflow. ### Method GET ### Endpoint /v2/workflows ### Headers #### Required Headers - **api_key** (string) - Required - Your API key provided by FrankieOne - **X-Frankie-CustomerID** (string) - Required - Your Customer ID provided by FrankieOne #### Optional Headers - **X-Frankie-CustomerChildID** (string) - Optional - Child account identifier for multi-tenant setups - **X-Frankie-Channel** (string) - Optional - Channel identifier (e.g., `api`, `portal`, `smartui`) - **X-Frankie-Username** (string) - Optional - Username of the API caller ### Query Parameters #### Query Parameters - **serviceName** (string) - Optional - Filter workflows by service name - **include** (string) - Optional - Include additional detail; supports `workflowDefinition` ### Response #### Success Response (200) - **serviceName** (string) - The name of the service the workflow belongs to. - **workflowId** (string) - The unique identifier for the workflow. - **workflowName** (string) - The human-readable name of the workflow. - **type** (string) - The type of verification the workflow performs. - **lifecyclePhase** (string) - The current phase of the workflow's lifecycle. ``` -------------------------------- ### Initialize Git Repository for Bruno Collections Source: https://docs.frankieone.com/v2/api/developers/api-testing-guide Initialize a Git repository within your Bruno collection directory to manage API collection versions. This allows for tracking changes and collaboration. ```bash cd "FrankieOne KYC V2 AUS" git init git add . git commit -m "Initial FrankieOne v2 API collection" ``` -------------------------------- ### Cost vs. Pass Rate Trade-offs Diagram Source: https://docs.frankieone.com/v2/api/developers/how-frankie-one-selects-vendors-and-data-sources This diagram illustrates the relationship between different configuration strategies (Single Source, Cascade, Parallel) and their associated costs and approximate pass rates. It serves as a visual guide for balancing performance and budget. ```mermaid graph LR A[Single Source] -->|"Lower Cost
~70-80% Pass Rate"| B[Cascade
2-3 Sources] B -->|"Medium Cost
~80-90% Pass Rate"| C[Parallel
3+ Sources] C -->|"Higher Cost
~90-100% Pass Rate"| D[ ] style A fill:#d4edda,stroke:#333,stroke-width:2px style B fill:#fff3cd,stroke:#333,stroke-width:2px style C fill:#f8d7da,stroke:#333,stroke-width:2px style D fill:none,stroke:none ```