---
title: "Decide signer identity review"
method: POST
path: "/v1/documents/{documentId}/assignments/{assignmentId}/signers/{signerId}/identity-verification/review"
tags: ["Assignments"]
---

# Decide signer identity review

`POST /v1/documents/{documentId}/assignments/{assignmentId}/signers/{signerId}/identity-verification/review`

## Request

- Base URL: `https://api.assinafy.com.br`
- URL: `https://api.assinafy.com.br/v1/documents/{documentId}/assignments/{assignmentId}/signers/{signerId}/identity-verification/review`
- Auth: one of:
  - HTTP bearer
  - API key in header `X-Api-Key`

Approves or rejects a signer whose identity verification is `InReview`, while the document is `pending_signature` or `pending_identity_review`. Approved: once every signer has signed and no other signer is under review, the document is certificated; the certificate states the approval by review and every difference found. Rejected: the document is cancelled (`rejected_by_user`, with the reviewer as the user) and every signer and copy receiver gets the cancellation notice; the note is never shown to them. The signer gets no message about the decision itself. The decision is also reported to the verification provider. Not available to OAuth applications (`403`): the certificate names the person who reviewed, so the decision is made in Assinafy.

[Copy as Markdown](https://api.assinafy.com.br/v1/docs/markdown?method=post&path=%2Fv1%2Fdocuments%2F%7BdocumentId%7D%2Fassignments%2F%7BassignmentId%7D%2Fsigners%2F%7BsignerId%7D%2Fidentity-verification%2Freview) [Open in ChatGPT](https://chatgpt.com/?q=Read%20the%20API%20documentation%20at%20https%3A%2F%2Fapi.assinafy.com.br%2Fv1%2Fdocs%2Fmarkdown%3Fmethod%3Dpost%26path%3D%252Fv1%252Fdocuments%252F%257BdocumentId%257D%252Fassignments%252F%257BassignmentId%257D%252Fsigners%252F%257BsignerId%257D%252Fidentity-verification%252Freview%20and%20help%20me%20integrate%20this%20endpoint.) [Open in Claude](https://claude.ai/new?q=Read%20the%20API%20documentation%20at%20https%3A%2F%2Fapi.assinafy.com.br%2Fv1%2Fdocs%2Fmarkdown%3Fmethod%3Dpost%26path%3D%252Fv1%252Fdocuments%252F%257BdocumentId%257D%252Fassignments%252F%257BassignmentId%257D%252Fsigners%252F%257BsignerId%257D%252Fidentity-verification%252Freview%20and%20help%20me%20integrate%20this%20endpoint.)

## Path parameters

- `documentId` string, required
- `assignmentId` string, required
- `signerId` string, required

## Request body

- object
  - `decision` 'Approved' | 'Rejected', required
  - `note` string, nullable: Optional. Recorded in the activity log and sent to the provider; never shown to the signer.

## Response `200`

Decided

- object: Standard success wrapper. Operations add their own `data`.
  - `status` integer: HTTP status code, mirrored in the body.
  - `message` string: Human-readable message; empty on success.
  - `data` SignerIdentityReview
    - `id` string
    - `status` 'Pending' | 'InReview' | 'Approved' | 'Declined' | 'Expired' | 'Abandoned'
    - `provider` 'AssinafyVerify'
    - `verification_method` 'IdDocumentFaceMatchBasic'
    - `reason_codes` object[]: Why the provider sent it to review, in its order. Unknown codes have the code as description.
      - `code` string
      - `description` string
    - `evidence_available` boolean
    - `expected` object, nullable: What the signer was registered with.
      - `name` string, nullable
      - `cpf` string, nullable
    - `document` object, nullable: What was read from the document.
      - `type` string, nullable
      - `name` string, nullable
      - `cpf` string, nullable
    - `matches` object, nullable
      - `cpf` boolean, nullable
      - `name` number, nullable: Name similarity, 0-1.
      - `birth_date` boolean, nullable
    - `checks` object[]
      - `name` string
      - `result` string: pass, review, skipped, or a failure result.
      - `score` number, nullable
      - `reasons` string[]
    - `images` string[]: The evidence images the reviewer can open with **Signer identity review image**, in display order: `document_front`, `document_back`, `document_pdf`, `face`. Only while `status` is `InReview`; empty once decided.
    - `ruleset_version` string, nullable
    - `evidence_sha256` string, nullable
    - `reviewed_by` object, nullable
      - `id` string
      - `name` string
    - `reviewed_at` string, date-time, nullable
    - `review_note` string, nullable
    - `completed_at` string, date-time, nullable

## Other responses

- `400`: Invalid decision, the verification is not `InReview`, or the document is no longer awaiting signatures.
- `401`: Missing or invalid credentials.
- `404`: Assignment, signer or verification not found.
- `500`: Unexpected server error.

## Changes

- **2026-10-15** `da98836f863b`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/assinafy/apis/assinafy-api-reference/changes/v1/documents/:documentId/assignments/:assignmentId/signers/:signerId/identity-verification/review/post.md)

---

[API](https://skmtc.dev/assinafy/apis/assinafy-api-reference.md) - [All operations](https://skmtc.dev/assinafy/apis/assinafy-api-reference/llms.txt) - [OpenAPI document](https://skmtc.dev/assinafy/apis/assinafy-api-reference/revisions/f7da81a5567e?raw)
