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
| Environnement | URL |
|---|---|
| Production | GET https://api.idcloud.unico.app/documents/v1 |
| Sandbox | GET https://api.idcloud.uat.unico.app/documents/v1 |
Requête
| En-tête | Valeur |
|---|---|
Authorization | Bearer <access_token> (voir Authentification) |
APIKEY | Clé API provisionnée avec la Capture de documents et réutilisation activée. |
| Paramètre | Type | Requis | Description |
|---|---|---|---|
code | string | oui | Identifiant de l'utilisateur (CPF ou CURP, sans formatage). |
type | string | oui | Type de document à interroger. Valeurs acceptées : BR_RG, BR_CNH, BR_CIN, BR_PASSPORT. |
Les valeurs de type ci-dessus sont spécifiques à cet endpoint. Ne les confondez pas avec :
subject.duiTypedans les requêtes POST — utilise le préfixeDUI_TYPE_*et identifie la personne, pas le type de document (ex. :DUI_TYPE_BR_CPF).documentTypedans la réponse — utilise le chemin complet du registre (ex. :unico.moja.dictionary.br.cnh.v2.Cnh).
Exemple
- cURL
- Node.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
{
"items": [
{
"documentType": "unico.moja.dictionary.br.cnh.v2.Cnh",
"documentId": "doc-abc-123"
}
]
}
| Champ | Type | Description |
|---|---|---|
items | array | Liste 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 | string | Identifiant 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 | string | Identifiant 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"
}
}
| Champ | Description |
|---|---|
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 Request
- 403 Forbidden
- 404 Not Found
- 429 Too Many Requests
- 500 Internal Server Error
| Code | Message | Description |
|---|---|---|
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.
| Code | Message | Description |
|---|---|---|
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. |
| Code | Message | Description |
|---|---|---|
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.
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. | Erreur de traitement côté serveur. |