# Update verification status

Approve or decline a verification after a review on your side. You can also set decline reasons for each verification type.
You can change the status after our system completes the automatic checks: when the verification waits for a manual review, or when it is already approved or declined. While the automatic checks are in progress, our system returns the `422` error.
After the status change, our system:
- sends the `VERIFICATION_COMPLETED` callback, unless `callback_enabled` is `false`
- sends a notification email to the project owner, unless `project_owner_email_enabled` is `false`
- sends the verification result email to the applicant, unless `applicant_email_enabled` is `false`

Our system replaces the current decline reasons of the verification with the `decline_reasons` that you send. If you do not send `decline_reasons`, our system removes the current decline reasons.

Endpoint: POST /verifications/{verification_id}/status
Version: 1.0
Security: API-Key

## Security:

  - `API-Key` (unknown)
    apiKey in header API-Key

## Path parameters:

  - `verification_id` (string | null, required)

## Request fields (application/json):

  - `verification_status` (string, required)
    The status of the verification. This value is set automatically by our system, or manually in the Admin panel or the Dashboard after a review
- `approved`: a reviewed and approved verification
- `declined`: a reviewed and declined verification
    Enum: "approved", "declined"

  - `decline_reasons` (object)
    The decline reasons for each verification type. The object key is the verification type with the `VERIFICATION_` prefix. The value is an array of decline reason codes. See [Decline reasons](/decline-reasons) for the list of codes. Codes are case-insensitive.
Supported keys: `VERIFICATION_PROFILE`, `VERIFICATION_DOCUMENT`, `VERIFICATION_FACIAL`, `VERIFICATION_ADDRESS`, `VERIFICATION_TAX_ID`, `VERIFICATION_AML`, `VERIFICATION_PAYMENT_METHOD`, `VERIFICATION_VIDEO`, `VERIFICATION_LIVE_VIDEO`, `VERIFICATION_DATABASE_SCREENING`, `VERIFICATION_COMPANY`.
Our system replaces the current decline reasons of the verification with the decline reasons that you send. If you do not send this parameter, our system removes the current decline reasons.
    Example: {"VERIFICATION_DOCUMENT":["EXPIRED_DOCUMENT"],"VERIFICATION_FACIAL":["DIFFERENT_FACES"]}

  - `callback_enabled` (boolean)
    If set to `true`, our system will send the “**Verification completed**” callback for the specified verification
    Enum: "true", "false"

  - `project_owner_email_enabled` (boolean)
    If set to `true`, a notification email regarding the status of the verification will be sent by our system to the project owner of the project
    Enum: "true", "false"

  - `applicant_email_enabled` (boolean)
    If set to `true`, a notification email regarding the status of the verification will be sent by our system directly to the applicant who completed the form
    Enum: "true", "false"

## Request examples:

  - `Approve the verification` (unknown)

  - `Decline with decline reasons` (unknown)

## Response 200:

  - `200` (unknown)
    **OK**
The request was successful, and our system changed the verification status.

## Response 200 fields (application/json):

  - `status` (string)
    Example: ok

  - `data` (object)

  - `data.verification_id` (string | null)
    A unique identifier for a verification, assigned by our system after a verification is created using the “Create a verification" request
    Example: 27c5caea93ee4656881ef9a30fadd21a3768

  - `data.verification_status` (string)
    The status of the verification. This value is set automatically by our system, or manually in the Admin panel or the Dashboard after a review
- `approved`: a reviewed and approved verification
- `declined`: a reviewed and declined verification
    Enum: "approved", "declined"

## Response 400:

  - `400` (unknown)
    **Bad Request**
Our system could not process the request due to invalid syntax, missing parameters, or incorrect data format. Check the request structure and try again.

## Response 400 fields (application/json):

  - `type` (string)
    Example: bad_request

  - `errors` (array)

## Response 401:

  - `401` (unknown)
    **Unauthorized**
Authentication credentials are missing or invalid. The request did not include an API token, or the token provided is malformed, expired, or revoked.

## Response 401 fields (application/json):

  - `type` (string)
    Example: unauthorized

  - `errors` (array)

## Response 402:

  - `402` (unknown)
    **Payment Required**
Access to the requested resource is restricted until a payment is successfully processed. Ensure your account has a valid payment method or sufficient funds to complete this action.

## Response 402 fields (application/json):

  - `type` (string)
    Example: insufficient_funds

  - `errors` (array)

## Response 403:

  - `403` (unknown)
    **Forbidden**
You use a test API key, but the applicant was created in live mode.

## Response 403 fields (application/json):

  - `type` (string)
    Example: forbidden

  - `errors` (array)

  - `errors.message` (string)
    Example: Test mode is not enabled for this applicant

## Response 404:

  - `404` (unknown)
    **Not Found**
The verification with the specified `verification_id` is not found.

## Response 404 fields (application/json):

  - `type` (string)
    Example: not_found

  - `errors` (array)

  - `errors.parameter` (string)
    Example: verification_id

  - `errors.message` (string)
    Example: The verification was not found

## Response 422:

  - `422` (unknown)
    **Unprocessable Content**
Our system understands the request but can’t process it due to invalid fields in the request, or because the verification status can not be changed now.

## Response 422 fields (application/json):

  - `type` (string)
    Example: validation

  - `errors` (array)

  - `errors.parameter` (string)
    Example: verification_id

  - `errors.message` (string)
    Example: Value is invalid

## Response 500:

  - `500` (unknown)
    **Internal Server Error**
This response indicates that our system encountered an unexpected condition that prevented it from fulfilling the request.

## Response 500 fields (application/json):

  - `type` (string)
    Example: internal_server

  - `errors` (array)

