Approve applicant

Recent Requests
Log in to see full request history
TimeStatusUser Agent
Retrieving recent requests…
LoadingLoading…

Overview

Use this method to set an applicant status 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.

📘

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.
🚧

Attention

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

Request examples

// This example demonstrates how to send a request with all parameters provided.

curl -X POST \
     'https://api.sumsub.com/resources/applicants/687fb2373fc85ad66b5d8744/-/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"
          ]
        }'
// This example demonstrates how to send a request without body parameters.

curl -X POST \
     'https://api.sumsub.com/resources/applicants/687fb2373fc85ad66b5d8744/-/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.

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

Error examples

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

{
  "code": 400,
  "correlationId": "0b30b4efbc0a885c5a579744d0bde7e1",
  "description": "The request body must not be null"
}
// 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"
}
Path Params
string
required

Unique identifier of the applicant in the Sumsub system.

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.

If the applicantId is unknown to you, use the Get applicant data (externalUserId) method to fetch it.

Body Params
string

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.

tags
array of strings

Tags that you may want to assign to the applicant profile. Each string represents a standalone tag.

⚠️ Mind that tag names are case sensitive.

tags
json
enum

⚠️ If both note and tags are omitted, you must include an empty request body (-d '{}'); otherwise, a 400 error is returned.

Allowed:
Language
Credentials
Header
LoadingLoading…
Response
Click Try It! to start a request and see the response here!