### 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
```