---
updatedAt: 2026-09-29T07:39:46.000Z
agentTools:
  projectIndex: https://docs.sumsub.com/llms.txt
---

# Copy applicant profile

# Overview

This method is used by partners to import applicant profiles for [Copy Applicant](https://docs.sumsub.com/sumsub/docs/copy-applicant).

## Required permissions

To use this method, your [app token](https://docs.sumsub.com/sumsub/docs/app-tokens) must have the **Create applicants** [permission](https://docs.sumsub.com/sumsub/docs/user-roles#permissions).

## Webhook behavior during import

On import, the applicant inherits the Donor's review status, and status webhooks fire accordingly:

* **Initial webhook** — fired immediately with the Donor's inherited status (for example, `applicantReviewed` / `GREEN` / `Approved`). This is expected: most clients want the inherited verdict right away.
* **Follow-up webhook** — if the Recipient's target level requires steps the Donor did not complete (for example, Penny Drop, a custom questionnaire, a missing document), the applicant moves to `Pending`/`Documents Requested`, firing a second webhook — often within the same second as the first.

To distinguish the two and filter out the inherited-status webhook if needed, consider the following:

* The initial webhook carries a `reuseScope` field; for Copy Applicant, it is set to `importApiShareToken`.
* `reuseScope` is only present on that initial webhook — never on later ones for the same review attempt.
* If your integration should act only on your own level's checks (not the inherited Donor verdict), ignore or hold webhooks where `reuseScope` is present.

For the full `reuseScope` reference, see [User verification webhooks](https://docs.sumsub.com/sumsub/docs/user-verification-webhooks).

<Callout icon="📘" theme="info">
  ### Note

  **Copy Applicant** supports both individual and company applicants, but it is enabled separately for each.<br />For companies, the full company structure is copied but linked profiles of individual beneficiaries are included only if the feature is also enabled for individual applicants on your account; otherwise, only the structure is copied without linked profiles.
</Callout>

## Request example

```curl
 curl -X POST \
      'https://api.sumsub.com/resources/applicants/-/import?shareToken=_act-5f7g8h9k-b70f-4ad3-bda9-7ce904589380' \
      -H 'X-App-Token: <your-app-token>' \
      -H 'X-App-Access-Sig: <your-signature>' \
      -H 'X-App-Access-Ts: <unix-timestamp>'
```

# Response explained

In the response, a new applicant ID generated on the partner's side is returned.

```json
{
    "id": "5d08a63239b79354a2ebaa1d",
    "createdAt": "2019-06-18 10:52:02",
    "clientId": "CoolCoinLtd",
    ...
}
```

## Error response example

You may encounter two categories of errors:

* Generic token validation occurs first and may return a `401 Unauthorized`.
* If token validation succeeds, the endpoint may return a `400` error with a specific error code indicating the underlying problem.

```json 401
{
  "code": 401,
  "description": "Token is invalid: Token _act-4e5r8y9o-4c7e-4e50-a621-ed76a0dd68fb-v2 is invalid now: created at Tue Dec 02 08:27:46 UTC 2025 with ttl 5 but accessed at Tue Dec 02 08:29:55 UTC 2025 [source: null]",
  "type": "de.smtdp.commons.service.exceptions.ServiceException"
}
```
```json 400
{
  "code": 400,
  "errorCode": 10518,
  "errorName": "copy-applicant-disabled",
  "description": "Copying applicants is disabled for you",
  "type": "de.smtdp.commons.service.exceptions.ServiceException"
}
```

## Error codes with descriptions

| Error code | Error name                 | Description                                                             |
| :--------- | :------------------------- | :---------------------------------------------------------------------- |
| 10501      | `not-in-partners-list`     | Reusing applicants is not allowed since the target is not your partner. |
| 10502      | `invalid-partner-id`       | Partner ID extracted from the share token is invalid.                   |
| 10503      | `invalid-share-token`      | Provided share token is malformed or expired.                           |
| 10504      | `non-suitable-share-token` | Share token is not suitable for reuse with the given level.             |
| 10520      | `copy-applicant-disabled`  | Copying applicants is disabled for you.                                 |

# OpenAPI definition

```json
{
  "openapi": "3.1.0",
  "info": {
    "title": "sumsub-api",
    "version": "1.0"
  },
  "servers": [
    {
      "url": "https://api.sumsub.com"
    }
  ],
  "components": {
    "securitySchemes": {
      "sec0": {
        "type": "apiKey",
        "name": "X-App-Token",
        "in": "header",
        "x-default": ""
      }
    }
  },
  "security": [
    {
      "sec0": []
    }
  ],
  "paths": {
    "/resources/applicants/-/import": {
      "post": {
        "summary": "Copy applicant profile",
        "description": "",
        "operationId": "copy-applicant-profile",
        "parameters": [
          {
            "name": "shareToken",
            "in": "query",
            "description": "A unique share token you receive from your partner. <br><br>You can generate a share token for your partners using the [following method](https://docs.sumsub.com/sumsub/reference/generate-share-token).",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "userId",
            "in": "query",
            "description": "Sets your own `externalUserId` for the imported applicant. In case of an empty value, we will generate a random one.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "levelName",
            "in": "query",
            "description": "Sets the specified `levelName` to the imported applicant and sets `init` in case not all required documents are present.",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "sourceKey",
            "schema": {
              "type": "string"
            },
            "description": "One of the source keys available on the recipient side.<br />Passing an unknown value will return a validation error: `Source key 'key_name' is not allowed for license key cross`."
          }
        ]
      }
    }
  },
  "x-readme": {
    "headers": [],
    "explorer-enabled": true,
    "proxy-enabled": true
  },
  "x-readme-fauxas": true
}
```