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

# Introduction to the API

> The FrankieOne API enables seamless integration of comprehensive risk and compliance services into your applications, offering global identity verification and business validation capabilities.

## Outbound IP Addresses

<Callout icon="bell" color="#FFCA16" iconType="regular">
  ##### Traffic from FrankieOne originates from the following IP addresses.

  You must whitelist the three Production IP addresses.
</Callout>

<CardGroup cols={2}>
  <Card title="Testing (UAT)" icon="vial">
    * 52.62.31.108
    * 149.167.70.106
    * 123.103.207.82
  </Card>

  <Card title="Production" icon="server">
    * 13.236.159.198
    * 13.237.83.115
    * 16.50.141.56
  </Card>
</CardGroup>

<Info>
  ##### Inbound IP Addresses

  We currently don't support inbound IP address filtering, so you can't limit
  what IP address would be able to authenticate using your FrankieOne API
  credentials.
</Info>

## Key Capabilities

<CardGroup cols={2}>
  <Card title="Swagger / OpenAPI definition" icon="file-code" href="https://drive.google.com/file/d/1OzFtadOlbPB6zSZdqHmDiEqYQFZGrzmW/view?usp=drive_link">
    Download our latest Swagger / OpenAPI definition here.
  </Card>

  <Card title="Swagger documentation" icon="book" href="/docs/reference/authentication">
    View our Swagger documentation here.
  </Card>
</CardGroup>

<AccordionGroup>
  <Accordion title="Identity Verification (IDV) Suite">
    <CardGroup cols={2}>
      <Card title="Document Verification" icon="id-card">
        * Validate international IDs, passports, and licenses
        * Support for 100+ countries
        * Automatic data extraction
      </Card>

      <Card title="Biometric Verification" icon="face">
        * Selfie-to-ID matching
        * Liveness detection
        * Anti-spoofing protection
      </Card>
    </CardGroup>

    <CardGroup cols={2}>
      <Card title="Background Screening" icon="search">
        * PEP & Sanctions checks
        * Adverse media screening
        * Real-time monitoring
      </Card>

      <Card title="Fraud Prevention" icon="shield">
        * Duplicate detection
        * Custom blocklists
        * Network intelligence
      </Card>
    </CardGroup>
  </Accordion>

  <Accordion title="Business Verification (KYB) Suite">
    <Steps>
      <Step title="Company Analysis">
        * Verify business registration
        * Analyze ownership structure
        * Access credit reports
      </Step>

      <Step title="Stakeholder Verification">
        * Identify beneficial owners
        * Verify directors and officers
        * Conduct KYC checks
      </Step>

      <Step title="Ongoing Monitoring">
        * Track company changes
        * Monitor stakeholders
        * Alert on status updates
      </Step>
    </Steps>
  </Accordion>
</AccordionGroup>

## API Fundamentals

<Tabs>
  <Tab title="Core Principles">
    The API follows RESTful conventions with JSON payloads over HTTPS. We've kept it simple with three main HTTP methods:

    ```text theme={null}
    GET    → Retrieve data
    POST   → Create or update resources
    DELETE → Remove resources
    ```

    <Callout icon="star" color="#3DD892" iconType="regular">
      All API responses include unique IDs (UUIDs) for created resources. Store these IDs - you'll need them for updates!
    </Callout>
  </Tab>

  <Tab title="Authentication">
    ```bash Authentication theme={null}
    curl -X POST https://api.frankie.one/v1/verify \
      -H "Authorization: Bearer YOUR_API_KEY" \
      -H "Content-Type: application/json"
    ```
  </Tab>
</Tabs>

## Working with Resources

<AccordionGroup>
  <Accordion title="Basic Resource Creation">
    ```json theme={null}
    POST /v1/entity
    {
      "name": {
        "givenName": "John",
        "familyName": "Doe",
        "displayName": "J Doe"
      },
      "addresses": [
        {
          "streetNumber": "123",
          "streetName": "Main St",
          "city": "Sydney",
          "country": "AUS"
        }
      ]
    }
    ```

    <Info>
      The API automatically generates UUIDs for all created resources, including nested objects like addresses and documents.
    </Info>
  </Accordion>

  <Accordion title="Updating Resources">
    When updating resources:

    1. Always include the resource ID in both the URL and payload
    2. Provide complete objects for updates (partial updates aren't supported)
    3. Only include the objects you want to modify

    <CodeGroup>
      ```json Update Example theme={null}
      POST /v1/entity/12345678-4321-1234-4321-123456789012
      {
        "entityId": "12345678-4321-1234-4321-123456789012",
        "addresses": [
          {
            "addressId": "876543231-1234-4321-1234-210987654321",
            "streetNumber": "456",
            "streetName": "New St",
            "city": "Melbourne",
            "country": "AUS"
          }
        ]
      }
      ```
    </CodeGroup>
  </Accordion>
</AccordionGroup>

## Performing Verifications

<CardGroup cols={2}>
  <Card title="Simple Verification" icon="check">
    ```text theme={null}
    POST /entity/new/verify/profile/simple
    ```

    Creates entity and runs basic checks
  </Card>

  <Card title="Full Verification" icon="shield-check">
    ```text theme={null}
    POST /entity/{id}/verify/profile/full
    ```

    Comprehensive checks
  </Card>
</CardGroup>

<Callout icon="bell" color="#FFCA16" iconType="regular">
  Remember to handle API responses appropriately. All verification endpoints
  return detailed result objects that should be processed for a complete
  verification flow.
</Callout>

## API Endpoints

<Callout icon="key" color="#3DD892" iconType="regular">
  ##### Environment Access

  Testing environment is available for all users, while UAT and Production
  environments are restricted to contracted customers only.
</Callout>

<Tabs>
  <Tab title="UAT Environment">
    <Callout icon="flask" color="#1A6CFF" iconType="regular">
      The UAT environment mirrors production settings and allows contracted customers to perform final testing before going live. Only contracted customers can access UAT environments.
    </Callout>

    <CardGroup cols={3}>
      <Card title="API" icon="server">
        ```text theme={null}
        https://api.kycaml.uat.frankiefinancial.io/
        ```
      </Card>

      <Card title="OneSDK + Smart UI" icon="code">
        ```text theme={null}
        https://backend.kycaml.uat.frankiefinancial.io
        ```
      </Card>

      <Card title="Portal" icon="desktop">
        ```text theme={null}
        https://portal.uat.frankie.one
        ```
      </Card>
    </CardGroup>
  </Tab>

  <Tab title="Production">
    <Warning>
      The live environment for real customer interactions and transactions. Production environment access is restricted to contracted customers only.
    </Warning>

    <CardGroup cols={3}>
      <Card title="API" icon="server">
        ```text theme={null}
        https://api.kycaml.frankiefinancial.io/
        ```
      </Card>

      <Card title="OneSDK + Smart UI" icon="code">
        ```text theme={null}
        https://backend.kycaml.frankiefinancial.io
        ```
      </Card>

      <Card title="Portal" icon="desktop">
        ```text theme={null}
        https://portal.frankie.one
        ```
      </Card>
    </CardGroup>
  </Tab>
</Tabs>

<AccordionGroup>
  <Accordion title="Which endpoints should I use?">
    * Start with the **Testing/Sandbox** environment during development - Move
      to **UAT** once you're ready for integration testing (contracted customers)
    * Use **Production** only when you're fully tested and ready to go live
  </Accordion>
</AccordionGroup>
