---
title: Get a process
description: GET /v1/processes/{id} — read a process and its result, the Human Token and the person's intelligence.
canonical: https://developer.unico.io/human-plugin/api-reference/get-process
locale: en
generated_by: markdown-export
---

# Get a process

Read a process by the id Human Plugin returned on create.

`GET /v1/processes/{id}`

`id` is the UUID from the create response. There is no authentication header and no client scoping: any caller that can reach Human Plugin can read any of its processes.

```bash
curl http://human-plugin.internal:8080/v1/processes/b063041c-7529-4e70-a2b4-c71c00f19801
```

## When the result arrives

- A **pending** process (`PROCESS_STATE_CREATED`) is checked on each read, and answered with its result as soon as there is one.
- A **finished** or **failed** process is final, and is answered as is.
- A create that was interrupted is answered as failed about 70 seconds after it started.

Reading is the only way a pending process advances: there is no background job, and the return to your `callbackUri` does not update Human Plugin.

## Response

`200 OK` with the same shape as a create: `id`, `state` and `data`.

A pending Journey:

```json
{ "id": "b063041c-7529-4e70-a2b4-c71c00f19801", "state": "PROCESS_STATE_CREATED", "data": {} }
```

### Finished and failed processes

A finished process returns its result in `data`: who the person is, in `humanToken`, and the person's [intelligence](/human-plugin/get-started/intelligence), in `ndocs`, plus `liveness` when the flow checks it. A revalidation returns `humanTokenMatch` instead of `humanToken`. Each field is described in [The result in `data`](/human-plugin/api-reference/create-process#result). A failed process returns `PROCESS_STATE_FAILED` with an empty `data`.

A finished process:

```json
{
  "id": "b063041c-7529-4e70-a2b4-c71c00f19801",
  "state": "PROCESS_STATE_FINISHED",
  "data": {
    "humanToken": { "value": "6d3d71…", "status": "validated" },
    "liveness": { "value": "live", "status": "validated" },
    "ndocs": {
      "distinctClientsCount": 2,
      "transactionsCount": 3,
      "firstSeen": "2026-09-08",
      "lastSeen": "2026-11-03",
      "credentials": [
        { "type": "DUI_TYPE_NG_BVN", "countryCode": "NGA", "distinctCredentialCount": 1 }
      ]
    }
  }
}
```

A finished revalidation, where `ndocs` describes the person you confirmed:

```json
{
  "id": "7f2c9a10-3d4e-4b5f-8a61-0c9e2d7b4a35",
  "state": "PROCESS_STATE_FINISHED",
  "data": {
    "humanTokenMatch": "true",
    "liveness": { "value": "live", "status": "validated" },
    "ndocs": {
      "distinctClientsCount": 2,
      "transactionsCount": 4,
      "firstSeen": "2026-09-08",
      "lastSeen": "2026-11-04",
      "credentials": [
        { "type": "DUI_TYPE_NG_BVN", "countryCode": "NGA", "distinctCredentialCount": 1 }
      ]
    }
  }
}
```

A failed process:

```json
{ "id": "c41e8b27-95d0-4a8f-b3e6-2f7a1d9c0e58", "state": "PROCESS_STATE_FAILED", "data": {} }
```

The Journey `token` and `link` are returned only by the create. Keep them from that response.

## Errors

| Status | `message` | Meaning |
| --- | --- | --- |
| 404 | `PROCESS_NOT_FOUND` | The id is not a UUID or is unknown |
| 502 | `UPSTREAM_UNAVAILABLE` | The process is pending and its result could not be checked. Retry later |
| 503 | `DATABASE_UNAVAILABLE` | The database failed. Retry later |

Reads are safe to retry.

## Next

[Get the selfie](/human-plugin/api-reference/get-selfie)