Recupere um processo existente pelo seu identificador. De acordo com o contrato da API, o resultado já é retornado de forma síncrona na criação do processo — use este endpoint para reconsultas, auditoria e suporte.
Antes de recuperar o processo, revise nossa configuração de webhook e estratégias de fallback — clique aqui.
Endpoint
| Ambiente | URL |
|---|---|
| Produção | GET https://api.idcloud.unico.app/client/v1/process/{processId} |
| Sandbox | GET https://api.idcloud.uat.unico.app/client/v1/process/{processId} |
Requisição
| Header | Valor |
|---|---|
Authorization | Bearer <access_token> |
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
processId | string (UUID) | sim | Identificador do processo retornado por Criar Processo. |
Exemplo
- cURL
- Node.js
curl -X GET https://api.idcloud.unico.app/client/v1/process/$PROCESS_ID \
-H "Authorization: Bearer $TOKEN"
import fetch from 'node-fetch';
const res = await fetch(
`https://api.idcloud.unico.app/client/v1/process/${processId}`,
{ headers: { Authorization: `Bearer ${accessToken}` } }
);
const { process: proc } = await res.json();
Respostas
{
"process": {
"id": "226fd950-4b80-4da6-a476-ba9d397ddc91",
"flow": "id_r2",
"callbackUri": "/",
"userRedirectUrl": "https://cadastro.uat.unico.app/flow?collect-data=true&dynamic-wrapper=true&id=226fd950-4b80-4da6-a476-ba9d397ddc91",
"state": "PROCESS_STATE_FINISHED",
"result": "PROCESS_RESULT_APPROVED",
"createdAt": "2026-08-06T01:42:21.693615Z",
"finishedAt": "2026-08-06T01:43:03.080508Z",
"person": {
"duiType": "DUI_TYPE_BR_CPF",
"duiValue": "40*******50",
"friendlyName": "teste",
"email": "",
"phone": "5511999999999",
"notifications": [
{ "notificationChannel": "NOTIFICATION_CHANNEL_WHATSAPP" }
],
"phoneCountryCodeAlpha3": ""
},
"purpose": "personAuthentication",
"services": [],
"authenticationInfo": { "authenticationId": "55cba227-9828-49df-a16f-bcdaa7bdaa4d" },
"capacities": ["PROCESS_CAPACITY_IDCLOUDONE"],
"expiresAt": "2026-08-13T01:42:21.536500Z",
"token": "",
"companyData": { "branchId": "", "countryCode": "BRA" },
"simulated": false
}
}
| Campo | Significado |
|---|---|
id | UUID do processo; a chave usada para consultar e acompanhar o fluxo. |
flow | Tipo de jornada executada (ex.: id_r2, idlivetrust_r2, idtrust_r2, ...). |
callbackUri | URI de callback para a qual o aplicativo cliente é redirecionado ao final do fluxo. |
userRedirectUrl | URL completa da página CbU que o usuário abre para executar a jornada (contém o id e flags de comportamento). |
state | Estado do ciclo de vida do processo. Valores PROCESS_STATE_* (ex.: CREATED, FAILED, FINISHED, AWAITING_FOR_DOCUMENT, UNSPECIFIED). |
result | Veredito final da avaliação. Valores PROCESS_RESULT_* (ex.: APPROVED, AUTHENTICATED, NOT_APPROVED, ...). Só é conclusivo quando state = PROCESS_STATE_FINISHED. |
createdAt | Timestamp de criação do processo (UTC). |
finishedAt | Timestamp de conclusão do processo (UTC). |
person | Subobjeto com os dados da pessoa sendo verificada. |
purpose | Finalidade do processo (ex.: personAuthentication, cadastro de pessoa). |
services | Lista de serviços adicionais associados ao processo; vazia quando não há nenhum. |
authenticationInfo.authenticationId | ID do evento de autenticação de identidade gerado pelo fluxo. |
capacities | Capacidades/produtos utilizados. Valores PROCESS_CAPACITY_* (ex.: IDCLOUDONE). |
expiresAt | Timestamp de expiração do processo/link (UTC). |
token | Token de sessão/acesso associado ao processo (pode estar vazio). |
companyData | Subobjeto com os dados da empresa/tenant proprietário do processo. |
simulated | Booleano; indica se este é um processo de simulação/sandbox (true) ou real (false). |
| Campo | Significado |
|---|---|
duiType | Tipo do documento único de identificação. Valores DUI_TYPE_* (ex.: BR_CPF). |
duiValue | Valor do documento (ex.: o número do CPF). |
friendlyName | Nome amigável/apelido da pessoa (texto livre, não validado). |
email | E-mail da pessoa; pode estar vazio. |
phone | Número de telefone no formato E.164 (código do país + código de área + número). |
notifications | Lista de canais de notificação. Cada item carrega notificationChannel com valores NOTIFICATION_CHANNEL_* (ex.: WHATSAPP, SMS, EMAIL). |
phoneCountryCodeAlpha3 | Código de país ISO alpha-3 do número de telefone (ex.: BRA); pode estar vazio. |
| Campo | Significado |
|---|---|
branchId | Identificador da filial do tenant; vazio quando não há segmentação por filial. |
countryCode | País da empresa em ISO alpha-3 (ex.: BRA). |
process.services[].documents[].doc.code reporta o tipo do documento como um código curto em maiúsculas. unico.moja.dictionary.br.cnh.v2.Cnh vira CNH.
O código não carrega nem o país nem a versão do schema; a versão é retornada separadamente em doc.version.
Os tipos de documento que usam o schema unificado — unified_schema na referência de campos — são reportados como o tipo identificado na captura, em maiúsculas: IDCARD, DRIVERLICENSE, PASSPORT ou VOTERID.
Os passaportes dos EUA mantêm a variante em vez de serem agrupados em PASSPORT, então valores como POLYCARBONATEPASSPORT, PASSPORTCARD e PAPERPASSPORT também são retornados.
Por exemplo, unico.moja.dictionary.ar.generic.v1.IdCard e unico.moja.dictionary.us.generic.v1.PolycarbonatePassport são reportados como IDCARD e POLYCARBONATEPASSPORT.
Os tipos de documento que usam o próprio schema de campos — listados em specific_document_schemas na referência de campos — são mostrados na tabela abaixo. Use o tipo do dicionário para consultar cada schema nesse arquivo.
| País | doc.code | Tipo do dicionário | Documento |
|---|---|---|---|
| BR | RG | unico.moja.dictionary.br.rg.v2.Rg | RG |
| BR | CNH | unico.moja.dictionary.br.cnh.v2.Cnh | CNH (carteira de habilitação) |
| BR | CIN | unico.moja.dictionary.br.cin.v1.Cin | CIN |
| BR | PASSAPORTE | unico.moja.dictionary.br.passaporte.v1.Passaporte | Passaporte |
| MX | INE | unico.moja.dictionary.mx.ine.v1.Ine | Credencial de eleitor INE |
| MX | LPC | unico.moja.dictionary.mx.lpc.v1.Lpc | Licencia para conducir (carteira de habilitação) |
| MX | PASAPORTE | unico.moja.dictionary.mx.pasaporte.v1.Pasaporte | Passaporte |
| — | UNKNOWN | unico.moja.dictionary.other.unknown.v1.Unknown | O tipo não pôde ser identificado — doc.data está vazio |
PASSAPORTE e PASAPORTE são documentos diferentesO passaporte brasileiro é PASSAPORTE (com dois S) e o mexicano é PASAPORTE (com um S), cada um espelhando a grafia do próprio dicionário. Não é um erro de digitação — não trate os dois valores como equivalentes.
Nenhuma extração de OCR é realizada e nenhum campo é reportado em doc.data quando doc.code é UNKNOWN.
Clientes no Brasil podem receber o payload completo do processoA estrutura geral da resposta permanece a mesma — o resultado único é o padrão.

A estrutura geral da resposta permanece a mesma — o resultado único é o padrão.
Integrações no Brasil podem receber o objeto de processo completo abaixo, com resultados por capacidade em authenticationInfo.
{
"process": {
"id": "53060f52-f146-4c12-a234-5bb5031f6f5b",
"flow": "idchecktrust",
"callbackUri": "https://example.com/callback",
"userRedirectUrl": "https://example.com/redirect",
"state": "PROCESS_STATE_FINISHED",
"result": "PROCESS_RESULT_OK",
"createdAt": "2024-01-01T10:00:00Z",
"finishedAt": "2024-01-01T10:15:00Z",
"expiresAt": "2024-01-08T10:00:00Z",
"purpose": "VERIFICATION",
"clientReference": "client-ref-abc",
"useCase": "smart_revalidation",
"capacities": ["liveness", "face_match"],
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"person": {
"duiType": "DUI_TYPE_BR_CPF",
"duiValue": "12345678909",
"friendlyName": "Luke Skywalker",
"notifications": [
{
"notificationChannel": "email"
}
]
},
"authenticationInfo": {
"authenticationId": "auth-123",
"livenessResult": "LIVENESS_RESULT_LIVE",
"authenticationResult": "AUTHENTICATION_RESULT_INCONCLUSIVE",
"identityFraudstersResult": "TRUST_RESULT_INCONCLUSIVE",
"bioTokenEngineResult": "BIO_TOKEN_ENGINE_RESULT_UNSPECIFIED",
"smartRevalidationResult": "SMART_REVALIDATION_RESULT_UNSPECIFIED",
"idAgeResult": "ID_AGE_RESULT_UNSPECIFIED",
"scoreEngineResult": {
"scoreEnabled": "SCORE_ENABLED_TRUE",
"score": 85.5
}
},
"companyData": {
"branchId": "branch-123",
"countryCode": "BR"
},
"bioTokenData": {
"referenceProcessId": "ref-proc-123",
"authenticationId": "auth-ref-123"
},
"services": [
{
"envelopeId": "4d4f3d90-04a3-4259-b63b-930ab10d2e47",
"documentIds": ["doc-abc-123"],
"consent_granted": true,
"documents": [
{
"doc_id": "doc-abc-123",
"typified": true,
"cpf_match": true,
"face_match": true,
"validate_doc": true,
"reused_doc": false,
"signed_url": "https://example.com/doc?token=xyz",
"doc": {
"version": 1,
"code": "CNH",
"data": {
"numero": "044589731564",
"cpfNumero": "12345678909",
"nomeCivil": "Luke Skywalker",
"dataNascimento": "1990-05-12T00:00:00Z",
"dataExpiracao": "2027-12-07T00:00:00Z",
"categoria": "B"
}
}
}
]
}
]
}
}
| Campo | Tipo | Descrição |
|---|---|---|
process.id | string (UUID) | Identificador do processo. |
process.flow | string | Identificador do fluxo enviado na criação. |
process.callbackUri | string | URL de callback configurada para eventos do processo. |
process.userRedirectUrl | string | URL para redirecionar o usuário após a conclusão da jornada. |
process.state | enum | Estado atual do processo. Veja os valores abaixo. |
process.result | enum | Resultado da verificação. Presente apenas quando state = PROCESS_STATE_FINISHED. |
process.createdAt | string (datetime) | Timestamp ISO 8601 de quando o processo foi criado. |
process.finishedAt | string (datetime) | Timestamp ISO 8601 de quando o processo foi finalizado. Presente apenas quando state = PROCESS_STATE_FINISHED. |
process.expiresAt | string (datetime) | Timestamp ISO 8601 de quando o processo expira. |
process.purpose | string | Finalidade do processo conforme configurado no fluxo. |
process.clientReference | string | Referência opcional do lado do cliente para indexação no portal. |
process.useCase | string | Identificador do cenário associado ao fluxo. |
process.capacities | array of strings | Lista de capacidades ativadas neste processo. |
process.token | string | JWT assinado para integração com SDK. |
process.person | object | Identificação fornecida na criação. |
process.person.notifications | array | Canais de notificação configurados para a jornada (ex.: email). |
process.authenticationInfo | object | Resultados por capacidade. Veja abaixo. |
process.companyData | object | Contexto da empresa e filial. |
process.companyData.branchId | string | Identificador da filial. |
process.companyData.countryCode | string | Código de país ISO 3166-1 alpha-2. |
process.bioTokenData | object | Informações do processo de referência — presente apenas em fluxos de Validação 1:1 e Revalidação Inteligente. |
process.services | array | Envelopes assinados, documentos capturados e outras saídas de serviço. Veja abaixo. |
| Valor | Significado |
|---|---|
PROCESS_STATE_CREATED | Processo criado; o usuário ainda não completou a jornada. |
AWAITING_FOR_DOCUMENT | Processo criado sem documento de identificação; aguardando que seja definido via Definir Documento do Processo. Presente apenas quando o Fluxo Personalizado permite documento opcional. |
PROCESS_STATE_FINISHED | Jornada concluída. Verifique result e authenticationInfo. |
PROCESS_STATE_FAILED | Erro de processamento. |
AWAITING_FOR_DOCUMENT não segue a convenção de prefixo PROCESS_STATE_* usada pelos outros estados. Esta é uma inconsistência de nomenclatura conhecida na API atual.
| Valor | Significado |
|---|---|
PROCESS_RESULT_OK | Todas as capacidades retornaram resultados positivos. |
PROCESS_RESULT_INVALID_IDENTITY | Pelo menos uma capacidade retornou um negativo definitivo (ex.: prova de vida falhou, identidade não correspondida). |
PROCESS_RESULT_ERROR | Erro durante o processamento do resultado. |
PROCESS_RESULT_EXPIRED | O processo expirou antes da conclusão da jornada. |
PROCESS_RESULT_UNSPECIFIED | Processo ainda não finalizado. |
Todos os campos são sempre retornados independentemente do fluxo. Campos para capacidades não utilizadas no fluxo retornam *_UNSPECIFIED.
Valores abreviados (ex.: livenessResult = LIVE, authenticationResult = INCONCLUSIVE) mapeiam diretamente para os valores de enum completos documentados aqui (LIVENESS_RESULT_LIVE, AUTHENTICATION_RESULT_INCONCLUSIVE, etc.) — o prefixo é omitido por brevidade.
| Campo | Capacidade | Valores possíveis |
|---|---|---|
authenticationId | — | Identificador único para esta tentativa de autenticação. |
livenessResult | Prova de Vida | LIVENESS_RESULT_LIVE, LIVENESS_RESULT_NOT_LIVE, LIVENESS_RESULT_UNSPECIFIED |
authenticationResult | Verificação de Identidade | AUTHENTICATION_RESULT_POSITIVE, AUTHENTICATION_RESULT_NEGATIVE, AUTHENTICATION_RESULT_INCONCLUSIVE, AUTHENTICATION_RESULT_UNSPECIFIED |
identityFraudstersResult | Classificação de Risco de Fraude | TRUST_RESULT_YES, TRUST_RESULT_INCONCLUSIVE, TRUST_RESULT_UNSPECIFIED |
bioTokenEngineResult | Validação 1:1 | BIO_TOKEN_ENGINE_RESULT_POSITIVE, BIO_TOKEN_ENGINE_RESULT_NEGATIVE, BIO_TOKEN_ENGINE_RESULT_UNSPECIFIED |
smartRevalidationResult | Revalidação Inteligente | SMART_REVALIDATION_RESULT_POSITIVE, SMART_REVALIDATION_RESULT_NEGATIVE, SMART_REVALIDATION_RESULT_UNSPECIFIED |
idAgeResult | Verificação de Idade | ID_AGE_RESULT_POSITIVE, ID_AGE_RESULT_NEGATIVE, ID_AGE_RESULT_INCONCLUSIVE, ID_AGE_RESULT_UNSPECIFIED |
scoreEngineResult.scoreEnabled | Score de Risco | SCORE_ENABLED_TRUE, SCORE_ENABLED_FALSE, SCORE_ENABLED_UNSPECIFIED |
scoreEngineResult.score | Score de Risco | Número de -100 a +100. Presente quando authenticationResult = AUTHENTICATION_RESULT_INCONCLUSIVE e o Score de Risco está habilitado. |
serproResult.score | Retorno de Semelhança do Serpro | 0–100 (similaridade); -1 (sem face em arquivo para este CPF); -2 (erro de integração). |
servicesO array services utiliza camelCase para campos de nível de envelope (envelopeId, documentIds) e snake_case para campos de nível de documento (doc_id, consent_granted, face_match, etc.). Isso reflete a resposta real da API — ambas as convenções são intencionais e não constituem um erro de documentação.
| Campo | Tipo | Descrição |
|---|---|---|
envelopeId | string (UUID) | Identificador do envelope assinado. |
documentIds | array of strings | IDs dos documentos capturados neste serviço. |
consent_granted | boolean | Se o usuário concedeu consentimento de compartilhamento de dados. |
documents | array | Documentos capturados com dados de OCR e resultados de validação. |
documents[].doc_id | string | Identificador do documento. |
documents[].typified | boolean | Se o tipo de documento foi identificado com sucesso. |
documents[].cpf_match | boolean | Se o CPF no documento corresponde ao CPF fornecido (apenas Brasil). |
documents[].face_match | boolean | Se a selfie corresponde à foto no documento. |
documents[].validate_doc | boolean | Se o documento passou na validação de autenticidade. |
documents[].reused_doc | boolean | Se este documento foi reutilizado de um processo anterior. |
documents[].signed_url | string | URL pré-assinada para download do PDF do documento (válida por 5 minutos — refaça a consulta para renovar). |
documents[].doc.version | integer | Versão do schema de OCR. |
documents[].doc.code | string | Código curto do tipo de documento (ex.: CNH). Consulte Tipos de documento e campos de OCR para todos os valores e como o código é derivado. |
documents[].doc.data | object | Campos de OCR extraídos. O conteúdo varia por tipo de documento — veja a referência completa de campos para o catálogo completo. Os nomes dos campos dentro de doc.data (ex.: nomeCivil, dataNascimento) são os nomes reais produzidos pelo motor de OCR — já em português. |
Códigos de Erro
- 400 Bad Request
- 401 Unauthorized
- 404 Not Found
- 429 Too Many Requests
- 500 Internal Server Error
| Código | Mensagem | Descrição |
|---|---|---|
3 | process id is invalid | Quando o ID do processo é inválido. |
| Código | Mensagem | Descrição |
|---|---|---|
| — | Jwt header is an invalid JSON | Quando o access token utilizado contém caracteres incorretos. |
| — | Jwt is expired | Quando o access token utilizado expirou. |
| Código | Mensagem | Descrição |
|---|---|---|
5 | error getting process: rpc error: code = NotFound desc = process not found | Quando o ID do processo não foi encontrado. |
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.
Continuously 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.
| Código | Mensagem | Descrição |
|---|---|---|
99999 | Internal failure! Try again later | Quando há um erro interno. |
Polling vs webhook
Você pode consultar este endpoint para verificar o progresso, mas o padrão recomendado é assinar um webhook e usar este endpoint apenas como fallback. Veja Webhooks e Eventos.
Próximos passos
- Para a selfie capturada, veja Obter Selfie.
- Para o pacote de auditoria de evidências, veja Obter Conjunto de Evidências.