---
title: Récupérer les documents réutilisables
description: Vérifier si un utilisateur possède déjà un document réutilisable enregistré avant de démarrer un nouveau flux de capture.
canonical: https://developer.unico.io/fr/developers/api-reference/get-document
locale: fr
generated_by: markdown-export
---

- [/fr/](/fr/)
- Référence API
- Récupérer les documents réutilisables

**Sur cette page# Récupérer les documents réutilisables

Utilisez cet endpoint pour vérifier si un utilisateur possède déjà un document disponible pour réutilisation avant de démarrer un nouveau flux de capture de document. Si un document est trouvé, son `documentId` peut être transmis directement à `POST /processes/v1` (type Document) pour ignorer l'étape de capture.
### Endpoint​

EnvironnementURL**Production**`GET https://api.idcloud.unico.app/documents/v1`**Sandbox**`GET https://api.idcloud.uat.unico.app/documents/v1`
### Requête​

En-têtes
En-têteValeur`Authorization``Bearer <access_token>` (voir [Authentification](/fr/developers/start/authentication))`APIKEY`Clé API provisionnée avec la Capture de documents et réutilisation activée.
Paramètres de requête
ParamètreTypeRequisDescription`code`stringouiIdentifiant de l'utilisateur (CPF ou CURP, sans formatage).`type`stringouiType de document à interroger. Valeurs acceptées : `BR_RG`, `BR_CNH`, `BR_CIN`, `BR_PASSPORT`.
remarqueLes valeurs de `type` ci-dessus sont spécifiques à cet endpoint. Ne les confondez pas avec :
`subject.duiType` dans les requêtes POST — utilise le préfixe `DUI_TYPE_*` et identifie la personne, pas le type de document (ex. : `DUI_TYPE_BR_CPF`).
`documentType` dans la réponse — utilise le chemin complet du registre (ex. : `unico.moja.dictionary.br.cnh.v2.Cnh`).

### Exemple​

cURLNode.js```
curl -X GET "https://api.idcloud.unico.app/documents/v1?code=12345678909&type=BR_CNH" \  -H "Authorization: Bearer $TOKEN" \  -H "APIKEY: $API_KEY"
```

```
import fetch from 'node-fetch';const params = new URLSearchParams({ code: '12345678909', type: 'BR_CNH' });const res = await fetch(  `https://api.idcloud.unico.app/documents/v1?${params}`,  {    headers: {      Authorization: `Bearer ${accessToken}`,      APIKEY: apiKey    }  });const data = await res.json();// data.items[0].documentId → transmettre à POST /processes/v1 pour la réutilisation
```

### Réponses​

200 OK
```
{  "items": [    {      "documentType": "unico.moja.dictionary.br.cnh.v2.Cnh",      "documentId": "doc-abc-123"    }  ]}
```

ChampTypeDescription`items`arrayListe des documents réutilisables trouvés pour l'utilisateur. Tableau vide si aucun document réutilisable n'a été trouvé pour le `code` et le `type` donnés.`items[].​documentType`stringIdentifiant du type de document. Valeurs possibles : `unico.​moja.​dictionary.​br.​rg.​v2.​Rg`, `unico.​moja.​dictionary.​br.​cnh.​v2.​Cnh`, `unico.​moja.​dictionary.​br.​cin.​v1.​Cin`, `unico.​moja.​dictionary.​br.​passaporte.​v1.​Passaporte`.`items[].documentId`stringIdentifiant du document. Transmettez cette valeur dans `document.documentId` sur `POST /processes/v1` pour réutiliser le document.
### Utiliser le documentId pour la réutilisation​

Une fois que vous avez un `documentId`, transmettez-le dans la requête du processus Document pour ignorer la capture :
```
{  "subject": {    "code": "12345678909",    "name": "Luke Skywalker"  },  "document": {    "purpose": "onboarding",    "authProcessId": "<biometric-process-id>",    "documentId": "doc-abc-123"  }}
```

ChampDescription`document.purpose`Finalité commerciale de ce processus de document. Valeurs acceptées : `creditprocess`, `carpurchase`, `paybypaycheck`, `onboarding`, `fgts`. Ces valeurs sont spécifiques à l'API Document et diffèrent de l'énumération `purpose` du SDK biométrique.`document.​authProcessId`ID du processus biométrique créé précédemment pour cet utilisateur (via `POST /processes/v1`).`document.documentId`ID du document obtenu à partir de la réponse de cet endpoint. Lorsqu'il est fourni, `document.files` peut être omis — la plateforme récupère automatiquement le document précédemment capturé.
### Codes d'erreur​

400 Bad Request403 Forbidden404 Not Found429 Too Many Requests500 Internal Server ErrorCodeMessageDescription`20507`O parâmetro subject.code é inválido.Valeur d'identifiant malformée ou inexistante (CPF ou CURP).`20002`O parâmetro APIKey não foi informado.En-tête APIKEY manquant.`20001`O parâmetro authtoken não foi informado.En-tête de jeton d'authentification manquant.Jeton Bearer ou `APIKEY` manquant, expiré ou invalide.CodeMessageDescription`30020`The provided authorization token does not have permission to perform this action.Le jeton ne dispose pas de l'autorisation d'accéder au selfie du document.`30017`User does not have permission to perform this action.JWT malformé ou utilisateur sans autorisation pour effectuer cette opération.`10502`O token informado está expirado.Jeton d'accès expiré.`10501`O token informado é inválido.Jeton d'authentification invalide.`10201`O AppKey informado é inválido.APIKEY manquante ou inexistante.CodeMessageDescription`99987`Attachment not found.La pièce jointe associée au document n'a pas été trouvée.`50001`The process is not found.Aucun document trouvé pour les paramètres fournis.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.

avertissementEnvoyer 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](/fr/developers/start/rate-limits).CodeMessageDescription`99999`Internal failure! Try again later.Erreur de traitement côté serveur.Dernière mise à jour le 8 oct. 2026**