---
updatedAt: 2026-09-29T08:27:48.000Z
agentTools:
  projectIndex: https://docs.sumsub.com/llms.txt
---

# Approve applicant

# Overview

Use this method to set an [applicant status](https://docs.sumsub.com/docs/applicant-statuses) to **Approved**.

When invoked, the applicant status is updated in the Dashboard to **Approved**, and the API response reflects the following state changes:

* `reviewStatus: "completed"`
* `reviewResult.reviewAnswer: "GREEN"`

The method approves an applicant without altering the status of verification steps, documents, images, or other associated data.

<Callout icon="📘" theme="error">
  ### Warning

  This endpoint can temporarily reject the status change with a `409 Conflict` error, a message asking to retry, and a header indicating the time after which you can retry — for example, `Retry-After: 10` (seconds). This can happen when an applicant is set to `pending` and then almost immediately moved to a final status via the API (for example, `approved` right after `pending`) — the request may arrive while internal processing is still running.

  To handle this:

  - Retry `409` responses instead of treating them as permanent failures. If the response includes a `Retry-After` header, wait for the interval it specifies; otherwise, fall back to a short fixed delay (for example, 10–15 seconds).
  - Avoid calling `approve`/`reject`/`init` immediately after moving an applicant to `pending` — wait for processing to finish, or be ready to retry on conflict.
</Callout>

<Callout icon="🚧" theme="warn">
  ### Attention

  - Notes and tags are optional, but if omitted, you must include an empty request body `-d '{}'`; otherwise, a `400` [error](#error-examples) is returned. See the [request examples](#request-examples) for details.
  - Applicants can be approved via the API regardless of their current status, except when [Video identification](https://docs.sumsub.com/sumsub/docs/video-identification) is configured for the [verification level](https://docs.sumsub.com/sumsub/docs/verification-levels) and its review is not complete (that is, no Video identification data exists or the status is `queued` or `pending`).
</Callout>

# Required permissions

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

* **View applicants**
* **View applicant's personal data**
* **Manage applicant notes**
* **Manage applicant tags**

# Request examples

```curl All BODY parameters provided
// This example demonstrates how to send a request with all parameters provided.

curl -X POST \
     'https://api.sumsub.com/resources/applicants/687fb2373fc85ad66b5d0000/-/approve' \
     -H 'content-type: application/json' \
     -H 'X-App-Token: <your-app-token>' \
     -H 'X-App-Access-Sig: <your-signature>' \
     -H 'X-App-Access-Ts: <unix-timestamp>' \
     -d '{
          "note": "This is an example note",
          "tags": [
            "First tag",
            "Second tag"
          ]
        }'
```
```curl No BODY parameters provided
// This example demonstrates how to send a request without body parameters.

curl -X POST \
     'https://api.sumsub.com/resources/applicants/687fb2373fc85ad66b5d0000/-/approve' \
     -H 'content-type: application/json' \
     -H 'X-App-Token: <your-app-token>' \
     -H 'X-App-Access-Sig: <your-signature>' \
     -H 'X-App-Access-Ts: <unix-timestamp>' \
     -d '{}'
```

# Response explained

If the request is sent and processed successfully, you will receive a JSON response representing the applicant profile with augmented and structured information.

You can see the response structure, possible content with descriptions, and examples of response on the [following page](https://docs.sumsub.com/sumsub/reference/get-applicant-data#response-explained).

If the request fails, you will receive an HTTP response containing an error code and a message explaining the error.

### Error examples

```json No request body provided
// The following error is returned if the request body is not provided.

{
  "code": 400,
  "correlationId": "0b30b4efbc0a885c5a579744d0bde7e1",
  "description": "The request body must not be null"
}
```
```json Video identification review is not complete
// The following error is returned if the Video identification review is not complete.

{
  "code": 400,
  "correlationId": "b6d2f45619fef5c233df435644e53fc4",
  "description": "Complete review of Video Ident Control Panel first"
}
```

# 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/{applicantId}/-/approve": {
      "post": {
        "summary": "Approve applicant",
        "description": "",
        "operationId": "approve-applicant",
        "parameters": [
          {
            "name": "applicantId",
            "in": "path",
            "description": "Unique identifier of the applicant in the Sumsub system. <br><br>This identifier is a random combination of 24 digits and lowercase Latin characters. It is automatically generated when the applicant is created on the Sumsub side, and can be found in the [Dashboard](https://cockpit.sumsub.com/checkus/#/applicants/individual?limit=10&page=0). <br><br>If the `applicantId` is unknown to you, use the [Get applicant data (externalUserId)](https://docs.sumsub.com/sumsub/reference/get-applicant-data-via-externaluserid) method to fetch it.",
            "schema": {
              "type": "string"
            },
            "required": true
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "note": {
                    "type": "string",
                    "description": "Optional note text providing additional context for the applicant profile. Notes can be added and managed either in the Dashboard or via [dedicated API methods](https://docs.sumsub.com/sumsub/reference/add-applicant-note)."
                  },
                  "tags": {
                    "type": "array",
                    "description": "[Tags](https://docs.sumsub.com/sumsub/reference/add-custom-applicant-tags) that you may want to assign to the applicant profile. Each string represents a standalone tag. <br><br>⚠️ Mind that tag names are case sensitive.",
                    "items": {
                      "type": "string"
                    }
                  },
                  "RAW_BODY": {
                    "type": "string",
                    "format": "json",
                    "description": "⚠️ If both `note` and `tags` are omitted, you must include an empty request body (`-d '{}'`); otherwise, a `400` [error](#error-examples) is returned.",
                    "enum": [
                      "{}"
                    ]
                  }
                }
              }
            }
          }
        },
        "deprecated": false
      }
    }
  },
  "x-readme": {
    "headers": [],
    "explorer-enabled": true,
    "proxy-enabled": true
  },
  "x-readme-fauxas": true
}
```