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

# KYC Connector API introduction

> Connect third-party KYC providers like Sumsub and Veriff to Uphold's platform. Ingestions map provider payloads to KYC processes without bespoke code.

The KYC Connector API is an API designed to connect third-party KYC providers with Uphold's platform, without you having to build and maintain bespoke integrations.

It functions as an ingestion layer between mainstream KYC providers and Uphold's platform [KYC processes](../core-api/kyc/introduction#kyc-processes), such as `profile`, `address`, `identity` and `proofOfAddress`.

## Key features and benefits

* Compatible with multiple KYC providers, so you can connect whichever provider you use without any custom integration work.
* The KYC Connector API ingests and normalizes provider data for you.
* Enable your platform to continue relying on your existing KYC provider.

## Supported providers

<div className="block dark:hidden">
  <CardGroup cols={2}>
    <Card title="Sumsub" img="https://mintcdn.com/uphold-d4756e17/7IRkuAa79m7bSPci/rest-apis/kyc-connector-api/_media/sumsub-logo-for-white.svg?fit=max&auto=format&n=7IRkuAa79m7bSPci&q=85&s=fa0bbcc1d1eab884746a307021a9c916" href="./sumsub" width="800" height="800" data-path="rest-apis/kyc-connector-api/_media/sumsub-logo-for-white.svg">
      A leading and comprehensive verification solution that focuses on compliance and user experience.
    </Card>

    <Card title="Veriff" img="https://mintcdn.com/uphold-d4756e17/3C76EHDEw7j-RT0J/rest-apis/kyc-connector-api/_media/veriff-logo.svg?fit=max&auto=format&n=3C76EHDEw7j-RT0J&q=85&s=84d9c712aac0efc7254408dc24cf49f1" href="./veriff" width="50" height="72" data-path="rest-apis/kyc-connector-api/_media/veriff-logo.svg">
      An AI-driven, scalable verification that helps businesses meet compliance requirements.
    </Card>
  </CardGroup>
</div>

<div className="hidden dark:block">
  <CardGroup cols={2}>
    <Card title="Sumsub" img="https://mintcdn.com/uphold-d4756e17/7IRkuAa79m7bSPci/rest-apis/kyc-connector-api/_media/sumsub-logo-for-black.svg?fit=max&auto=format&n=7IRkuAa79m7bSPci&q=85&s=d2d9fbb33b462349f334b23277067aef" href="./sumsub" width="800" height="800" data-path="rest-apis/kyc-connector-api/_media/sumsub-logo-for-black.svg">
      A leading and comprehensive verification solution that focuses on compliance and user experience.
    </Card>

    <Card title="Veriff" img="https://mintcdn.com/uphold-d4756e17/3C76EHDEw7j-RT0J/rest-apis/kyc-connector-api/_media/veriff-logo.svg?fit=max&auto=format&n=3C76EHDEw7j-RT0J&q=85&s=84d9c712aac0efc7254408dc24cf49f1" href="./veriff" width="50" height="72" data-path="rest-apis/kyc-connector-api/_media/veriff-logo.svg">
      An AI-driven, scalable verification that helps businesses meet compliance requirements.
    </Card>
  </CardGroup>
</div>

## Ingestions

KYC Connector is a **workflow-based ingestion system**.

An ingestion pulls KYC data from an existing user verification on the provider side and submits it to Uphold's platform on their behalf. The verification must already be approved before you can create one.

When creating an ingestion, you provide a reference to the user's verification and specify which KYC processes to ingest — the API handles fetching and normalizing the provider data for you.

### Statuses

The ingestion workflow follows these statuses:

* **Queued**: When you create an ingestion, it starts in the `queued` state.
* **Running**: The ingestion will be quickly picked up by a worker, which changes its status to `running` and starts processing it. During this phase, the worker interacts with the provider's API to retrieve KYC data and files for the specified processes.
* **Finished**: Once the ingestion processing comes to an end, its status changes to `finished`.

You can track ingestions in two ways:

* **Polling**: Poll the endpoint that retrieves an ingestion by its ID.
* **Webhooks**: Subscribe to webhooks to be notified when an ingestion status changes.

### Results

Under the `result` field, you can find the outcome of the ingestion of each KYC process.

For example, if you created an ingestion to ingest both `identity` and `proofOfAddress` processes, the result will contain the outcome of both processes. Each process will have its own status, which can be `processing`, `completed`, or `failed` as well as extracted data and an error if the ingestion for that process failed. Below are examples of possible results for an `identity` ingestion:

<Tabs>
  <Tab title="Processing" icon="clock">
    ```json theme={null}
    {
      "result": {
        "identity": {
          "status": "processing"
        }
      }
    }
    ```
  </Tab>

  <Tab title="Completed" icon="check-circle">
    ```json theme={null}
    {
      "result": {
        "identity": {
          "status": "completed",
          "data": {
            "document": {
              "type": "passport",
              "number": "7700225VH",
              "country": "GB",
              "expiresAt": "2026-03-13"
            },
            "person": {
              "givenName": "John",
              "familyName": "Doe",
              "birthdate": "1987-01-01",
              "gender": "male"
            },
            "verifiedAt": "2020-01-01T00:00:00Z"
          },
          "files": [
            {
              "id": "123e4567-e89b-12d3-a456-426614174000",
              "category": "document",
              "context": "photo-document-front",
              "contentType": "image/png",
              "size": 204800,
              "providerDetails": {
                "fileId": "732150141"
              }
            }
          ]
        }
      }
    }
    ```
  </Tab>

  <Tab title="Failed" icon="circle-xmark">
    ```json theme={null}
    {
      "result": {
        "identity": {
          "status": "failed",
          "error": {
            "code": "provider_data_not_available",
            "message": "Profile data not available in Sumsub applicant info",
            "hint": "Most likely the share token refers to an applicant without identity verification process."
          }
        }
      }
    }
    ```
  </Tab>
</Tabs>

### Important note on `completed` status

When a process status is marked as `completed`, it means that the data has been **extracted and submitted** to Uphold's platform. However, it does **not** necessarily mean that the KYC process is "ok". You should always check the actual KYC process status after ingestion using the [Get KYC Overview](../core-api/kyc/get-overview) endpoint. For instance:

* The `profile` process ingestion can be `completed` but the actual `profile` KYC process status might still be `pending` in case there are still fields to be submitted.
* The `identity` process ingestion can be `completed` but the actual `identity` KYC process status might be `failed` in situations like a duplicate identity conflict with another user or if the user is underage.

Simply put, `completed` indicates successful data extraction and submission to the platform, not a successful KYC verification result.
