Récupérez un processus Human Token à partir de son identifiant, après le retour de l'utilisateur depuis la Human Token Journey ou pour consulter à nouveau un résultat API Only.
Endpoint
| Environnement | URL |
|---|---|
| Production | GET https://humantoken.unico.app/client/v1/process/{processId} |
Requête
| En-tête | Valeur |
|---|---|
x-unico-accesskey | <your_access_key> (voir Authentification) |
| Paramètre | Type | Requis | Description |
|---|---|---|---|
processId | string (UUID) | oui | Identifiant du processus renvoyé par Créer un processus. |
Exemple
- cURL
- Node.js
curl -X GET https://humantoken.unico.app/client/v1/process/$PROCESS_ID \
-H "x-unico-accesskey: $UNICO_ACCESS_KEY"
import fetch from 'node-fetch';
const res = await fetch(
`https://humantoken.unico.app/client/v1/process/${processId}`,
{ headers: { 'x-unico-accesskey': process.env.UNICO_ACCESS_KEY } }
);
const result = await res.json();
// result.data.humanToken.value
Réponses
La réponse a le même format que celle de Créer un processus. La structure de data dépend du flux utilisé lors de la création du processus.
Flux standards (api+humantoken, api+liveness+humantoken, humantoken) :
{
"id": "6ed74799-4c2f-4023-b43f-a73cf7c847b2",
"state": "PROCESS_STATE_FINISHED",
"data": {
"humanToken": {
"value": "3f9a1c7e5b2d4086a1e3c5f7092b4d6e8a0c2e4f6183a5c7e9b1d3f5072a4c6e",
"status": "validated"
}
}
}
Flux de revalidation (api+liveness+humantoken+revalidation, humantoken+revalidation) :
{
"id": "cb0472c0-6dbc-46c6-b830-2be7edc35424",
"state": "PROCESS_STATE_FINISHED",
"data": {
"humanTokenMatch": "true"
}
}
| Champ | Type | Description |
|---|---|---|
id | string (UUID) | Identifiant du processus. |
state | string | État du processus — voir valeurs de state. |
data.humanToken.value | string | Flux standards uniquement. Identifiant stable et opaque du visage (jusqu'à 100 caractères). La même personne correspond toujours à la même valeur. |
data.humanTokenMatch | string | Flux de revalidation uniquement. "true" si le selfie correspond au humanToken référencé, "false" sinon. |
| Valeur | Signification |
|---|---|
PROCESS_STATE_UNSPECIFIED | État non défini. |
PROCESS_STATE_CREATED | Le processus a été créé et accepte encore de nouvelles sessions. data vaut {}. |
PROCESS_STATE_FINISHED | Le processus est terminé et n'accepte plus de nouvelles sessions. Pour les flux standards, data.humanToken est présent lorsqu'un Human Token a été généré ; pour les flux de revalidation, data.humanTokenMatch indique si le selfie correspond au token référencé. Sinon, data vaut {}. |
PROCESS_STATE_FAILED | Le processus a échoué. data vaut {}. |
PROCESS_STATE_CANCELED | Le processus a été annulé. data vaut {}. |
PROCESS_STATE_AWAITING_FOR_DOCUMENT | Le processus attend un document d'identité. data vaut {}. |
Vérifiez toujours que data.humanToken.value n'est pas vide avant de l'utiliser.
Codes d'erreur
- 400 Bad Request
- 401 Unauthorized
- 404 Not Found
- 429 Too Many Requests
- 500 Internal Server Error
| Code | Message | Description |
|---|---|---|
3 | process id is invalid | Lorsque l'identifiant du processus est invalide. |
Clé d'accès absente ou invalide dans l'en-tête x-unico-accesskey. Voir Authentification.
| Code | Message | Description |
|---|---|---|
5 | error getting process: rpc error: code = NotFound desc = process not found | Lorsque l'identifiant du processus est introuvable. |
Limite de débit atteinte. Lorsque votre système reçoit une erreur HTTP 429, vous devez implémenter des mécanismes pour prévenir les défaillances en cascade et éviter d'aggraver la restriction.
Bonnes pratiques :
- Période de repos (backoff) : Arrêtez ou réduisez immédiatement les requêtes suivantes de votre système. Ne réessayez pas continuellement les requêtes échouées dans une boucle serrée.
- File d'attente et limitation (Queueing & throttling) : Mettez en mémoire tampon ou en file d'attente les requêtes sortantes de votre côté pour contrôler le flux de trafic avant de les renvoyer.
- Backoff exponentiel avec jitter : Lors des nouvelles tentatives, augmentez le temps d'attente de manière exponentielle entre les essais (par exemple, 1 s, 2 s, 4 s, 8 s) et ajoutez un petit délai aléatoire ("jitter") pour éviter un effet de troupeau où toutes les requêtes en file d'attente réessaient exactement à la même milliseconde.
Envoyer continuellement des requêtes vers un endpoint soumis à une limite de débit sans appliquer de backoff peut prolonger la période de restriction et impacter sévèrement le débit opérationnel de votre système. Limiter correctement les requêtes de votre côté garantit une intégration plus fluide et plus résiliente.
Pour les limites par défaut, l'augmentation des requêtes et des détails supplémentaires, consultez Limites de débit.
| Code | Message | Description |
|---|---|---|
99999 | Internal failure! Try again later | Lorsqu'une erreur interne se produit. |
Prochaines étapes
- Revenez à Créer un processus pour envoyer un nouveau selfie.
- Pour comprendre ce que représente le
humanTokenet dans quels cas il n'est pas généré, consultez la présentation de Human Token.