---
title: Create Process
description: Create a Human Token process on the Human API — send a selfie (API Only) or start the Human Token Journey — and get the humanToken in data.humanToken.
canonical: https://developer.unico.io/human-token/api-reference/post-processes
locale: en
generated_by: markdown-export
---

- [/](/)
- API Reference
- Create Process

**On this pageCreate ProcessPOSTCreate a Human Token process from your back-end and get the humanToken in data.humanToken.

Human Token runs on the Human API `POST /client/v1/process` endpoint. With the API Only flows (`api+humantoken`, `api+liveness+humantoken` and `api+liveness+humantoken+revalidation`), the process is created and finished in a single call: the response already carries the result in `data.humanToken`. With the Human Token Journey flows (`humantoken` and `humantoken+revalidation`), the response carries the process `id`, a `token` and the journey `link`, and the result is available after the user completes the journey. The `+revalidation` flows require a `references` array with a previously obtained `humanToken` for revalidation.
### Flows​

Human Token runs in two integration models:

**API Only** — your back-end sends the selfie in `imageBase64`.
**Human Token Journey** — the user goes through the Unico journey on Web and returns to your `callbackUri`.

FlowCapabilitiesPossible resultIntegration componentsrequiredExample`api+humantoken`[Human Token](/human-token/)PROCESS_STATE_FINISHEDPROCESS_STATE_FAILEDAPIView example`api+liveness+humantoken`Liveness[Human Token](/human-token/)PROCESS_STATE_FINISHEDPROCESS_STATE_FAILEDAPIView example`api+liveness+humantoken+revalidation`Liveness[Human Token](/human-token/)RevalidationPROCESS_STATE_FINISHEDPROCESS_STATE_FAILEDAPIView example`humantoken`Liveness[Human Token](/human-token/)PROCESS_STATE_CREATEDPROCESS_STATE_FINISHEDPROCESS_STATE_FAILEDPROCESS_STATE_CANCELEDAPIWebView example`humantoken+revalidation`Liveness[Human Token](/human-token/)RevalidationPROCESS_STATE_CREATEDPROCESS_STATE_FINISHEDPROCESS_STATE_FAILEDPROCESS_STATE_CANCELEDAPIWebView example
### Endpoint​

EnvironmentURL**Production**`POST https://humantoken.unico.app/client/v1/process`
### Request​

Headers
HeaderValue`x-unico-accesskey``<your_access_key>` (see [Authentication](/human-token/get-started/authentication))`Content-Type``application/json`
Body parameters
FieldTypeRequiredDescription`flow`stringyesHuman Token flow: `api+humantoken`, `api+liveness+humantoken`, `api+liveness+humantoken+revalidation` (API Only) or `humantoken`, `humantoken+revalidation` (Human Token Journey). See [Flows](#flows).`imageBase64`stringAPI OnlyThe selfie, captured by your front-end and sent directly, in base64. PNG, JPEG or WebP, up to 800 KB. Follow the [Capture Standard](/human-token/additional-resources/capture-standard).`callbackUri`stringHuman Token JourneyURL the user is redirected to after the journey ends.`companyBranchId`stringnoBranch identifier. When provided, the process uses the configuration of the specified branch.`references`arrayRevalidation flowsArray of reference objects. Required for `+revalidation` flows. Each object has `referenceType` (`REFERENCE_TYPE_HUMAN_TOKEN`) and `referenceContent` (the previously obtained `humanToken` value).
### Responses​

200 OK
FieldTypeDescription`id`string (UUID)Process identifier. Use it to fetch the process again via [Get Process](/human-token/api-reference/get-process).`state`stringProcess state — see [Interpreting the result](#interpreting-the-result). Only in the API Only flows.`token`stringToken of the created process, you can use this to open Journey SDK experience. Only in the Human Token Journey flows (`humantoken`, `humantoken+revalidation`).`link`stringURL of the Human Token Journey: send the user to it. Only in the Human Token Journey flows (`humantoken`, `humantoken+revalidation`).`data.​humanToken.​value`stringStable, opaque identifier of the face (up to 100 characters). The same person always resolves to the same value. Only in the API Only flows (non-revalidation).`data.​humanTokenMatch`string`"true"` if the selfie matches the referenced `humanToken`, `"false"` otherwise. Only in the `+revalidation` API Only flow.
Interpreting the result
`state`MeaningWhat to do`PROCESS_STATE_FINISHED``data.humanToken.value` filled: real person, with a Human Token.Look up `value` in your records: if it exists, it is a returning user or a possible duplicate; if not, it is a new person.`PROCESS_STATE_FINISHED`No `data.humanToken`, or an empty `value`: inconclusive.Treat it as inconclusive. Never store or match an empty `value`; retry the process or reject, per your business rules.`PROCESS_STATE_FAILED`The identification process failed.Retry the process or reject it, per your business rules.`PROCESS_STATE_CREATED`Process created.Wait. Fetch the result later with [Get Process](/human-token/api-reference/get-process).`PROCESS_STATE_CANCELED`The process was canceled.Create a new process, if the user still needs to be verified.
warningAlways check that `data.humanToken.value` is not empty before using it.
### Error Codes​

noteThe HTTP status returned when the access key in the `x-unico-accesskey` header is missing or invalid is still being confirmed. See [Authentication](/human-token/get-started/authentication).
400 Bad Request403 Forbidden429 Too Many Requests500 Internal Server ErrorCodeMessageDescription`3`invalid flowWhen the specified flow does not exist.`3`INVALID_IMAGEWhen the image is not valid base64, or looks like an injection attempt.`3`IMAGE_TOO_LARGEWhen the image exceeds the maximum size of 800 KB.`3`UNSUPPORTED_IMAGE_FORMATWhen the image format is not PNG, JPEG or WebP.`3`MISSING_IMAGEWhen the image is required for this flow and was not sent.`3`INVALID_REQUESTWhen the request body is null or cannot be interpreted.`9`monthly process limit of <monthly_limit> reached for this tenantWhen the monthly usage limit has been reached.`9`PROCESS_FAILEDWhen the process reached a terminal failure while being created.CodeMessageDescription`7`PERMISSION_DENIEDWhen the credentials are valid but not entitled to this action.Rate limit reached. When your system receives an HTTP 429 error, you must implement mechanisms to prevent cascading failures and avoid worsening the restriction.
**Best practices:**

**Cool-down period (backoff):** Immediately halt or throttle subsequent requests from your system. Do not continuously retry failed requests in a tight loop.
**Queueing & throttling:** Buffer or queue outgoing requests on your end to control the traffic flow before re-sending them.
**Exponential backoff with jitter:** When retrying, increase the waiting time exponentially between attempts (e.g., 1 s, 2 s, 4 s, 8 s) and add a small random delay ("jitter") to prevent a herd effect where all queued requests retry at the exact same millisecond.

warningContinuously hitting a rate-limited endpoint without backing off can **prolong the restriction period** and severely impact your system's operational throughput. Properly throttling requests on your side ensures a smoother, more resilient integration.
For default limits, increase requests and additional details, see [Rate Limits](/developers/start/rate-limits).CodeMessageDescription`13`Internal failure! Try again laterWhen there is an internal error.
For the full list of codes of this endpoint, see the Human API [Create Process](/developers/api-reference/post-processes#error-codes) reference.
### What's next​

Store the `humanToken` value alongside your user record to recognize the same person on later Human Token calls.
To fetch the process again, for auditing or support, use [Get Process](/human-token/api-reference/get-process).
Last updated on Oct 22, 2026**