> ## Documentation Index
> Fetch the complete documentation index at: https://docs.argyle.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Verification Statuses

> Track verification status changes and retrieve completed report results.

Use verification webhooks as the source of truth for backend lifecycle tracking. SDK callbacks can update the immediate frontend experience, but they do not replace verification status updates.

## Subscribe to webhooks

Subscribe to the [`verifications.updated`](/api-reference/partners-webhooks/updated) webhook to track lifecycle events.

<Note>
  Set `config.include_resource = true` so the webhook payload contains the full verification object inside `data.resource`.
</Note>

The most common verification `status.code` values are:

| Status code              | Meaning                                                              |
| ------------------------ | -------------------------------------------------------------------- |
| `pending`                | Verification created; user action may still be required.             |
| `user_session_started`   | User opened the connection flow.                                     |
| `authenticated`          | User authenticated and processing has started.                       |
| `awaiting_certification` | Government verification is waiting for applicant self-certification. |
| `documents_processing`   | Uploaded documents are processing.                                   |
| `report_generating`      | The report is generating.                                            |
| `completed`              | The report is ready to retrieve.                                     |
| `completed_with_errors`  | The report is ready, but contains limitations or deficiencies.       |

These are the primary lifecycle updates. See [`status`](/api-reference/partners-verifications/retrieve-a-verification#response-status) for all state transitions and their meanings.

## Download reports and JSON

When `status.code` is `completed` or `completed_with_errors`, the `report` object contains:

* `file_url` — PDF report
* `json_url` — report in JSON format

<Accordion title="Example webhook">
  ```json theme={}
  {
    "event": "verifications.updated",
    "name": "name-for-the-webhook-subscription",
    "data": {
      "user": "018051aa-f7a9-a0db-2f38-6cfa325e9d69",
      "verification": "43a2c6c3-1e63-91e5-88e3-f9ab2dcc489b",
      "resource": {
        "id": "43a2c6c3-1e63-91e5-88e3-f9ab2dcc489b",
        "user": "018051aa-f7a9-a0db-2f38-6cfa325e9d69",
        "created_at": "2023-03-09T16:22:06.081Z",
        "updated_at": "2023-03-09T16:22:06.081Z",
        "channel": "api",
        "status": {
          "state": "COMPLETED",
          "code": "completed",
          "errors": []
        },
        "report": {
          "id": "2a14ce6f-3aed-4c15-8ea2-92a17b6edb95",
          "type": "doc-voi-mortgage",
          "file_url": "www.argyle.com/storagename/pdf",
          "json_url": "www.argyle.com/storagename/json"
        },
        "employments": [
          {
            "employer": "Starbucks",
            "status": "active",
            "hire_date": "2015-08-28",
            "termination_date": null
          }
        ],
        "loan": {
          "number": "1234",
          "borrower_id": "ABC789",
          "application_id": "2121313",
          "officer_email": "john.doe@mortgage.com"
        },
        "billing": {
          "cost_center": "5"
        },
        "data_source": "documents"
      }
    }
  }
  ```
</Accordion>

GET requests to `file_url` and `json_url` require [Argyle authentication headers](/verifications/platform-partners#authentication).
