跳转到主要内容

创建流程

MarkdownChatGPTClaude

这是每个 Unico API 集成的入口点。你的后端调用它来创建流程;你的前端使用返回的令牌来渲染 iFrame、重定向用户,或初始化原生 SDK。

完整的集成流程请参见流程。

端点​

环境URL
生产环境POST https://api.idcloud.unico.app/client/v1/process
沙箱环境POST https://api.idcloud.uat.unico.app/client/v1/process

请求​

Headers
Header值
AuthorizationBearer <access_token>(参见身份验证)
Content-Typeapplication/json
Body parameters
字段要求取决于所使用的 flow

某个字段是必填、可选还是不适用,取决于你所集成的 flow——在仅凭这张表判断某个字段的要求之前,先到流程中查看你所使用的具体配方。

字段类型描述
callbackUristring旅程结束后用户被重定向到的 URL。对于回调在应用内处理的原生 SDK 流程,使用 /。
flowstringFlow 标识符——决定运行哪些能力。示例:idunicodocs、idunicosign、idchecktrust、idtoken、idsmart。参见可用流程。
purposestring业务用途。可接受的值:creditprocess、biometryonboarding、carpurchase、ageverification。
person.duiTypeenum证件类型。参见下方的 duiType 值。
person.duiValuestring证件号码,不带格式。
person.friendlyNamestring在旅程界面中显示的用户展示名称。最多 50 个字符。
person.phonestring电话号码,格式为国际区号 + 区域码 + 号码,不含分隔符。通过 SMS 或 WhatsApp 发送通知时为必填项。
person.emailstring邮箱地址。对于包含电子签名的流程为必填项。
person.​notificationsarray用于发送旅程链接的通知渠道。每个条目都带有 notificationChannel:NOTIFICATION_CHANNEL_WHATSAPP、NOTIFICATION_CHANNEL_SMS 或 NOTIFICATION_CHANNEL_EMAIL。
referencesarray1:1 验证和智能重新验证流程的参照输入。每个条目包含 referenceType(REFERENCE_TYPE_IMAGE_BASE64 或 REFERENCE_TYPE_PROCESS_ID)和 referenceContent(base64 编码的图像或流程 UUID)。最多只能发送一个条目——数组更长会被以 400 拒绝,且 referenceContent 不能为空。
useCasestring智能重新验证场景。对于 🇧🇷 的 idsmart、idsmart_r2、idsmart_tp1 为必填项。示例:USE_CASE_LOGIN、USE_CASE_FIN_TRANSACTIONS。
clientReferencestring你系统中该用户的唯一标识符。多账号能力的必填项。 在你的数据库中唯一,最多 256 个字符,不含空格。
companyBranchIdstring (UUID)分支机构 ID。仅当服务账号关联了多个分支机构时才需要。
expiresInstring流程从创建起的有效期窗口。格式:"3600s"。若省略,默认为 7 天。
flowConfigobject按流程覆盖的配置项。
flowConfig.​biometryCapture.​enabledBackCameraboolean使用设备的后置摄像头。与证件采集或电子签名流程不兼容。
contextualizationobject旅程期间向用户展示的交易背景信息,用于解释采集目的。适用于任何地区的客户 — 不限于特定国家。
contextualization.​company_namestring旅程期间展示的公司名称。最多 20 个字符。
contextualization.​currencystring向用户展示的货币代码。可接受的值:BRL、MXN、USD。
contextualization.​pricenumber向用户展示的交易金额。
contextualization.​localeobject旅程期间展示的本地化文本。键:ptBr、enUs、esMx — 无论客户所在地区如何,这些都是文本仅支持的语言。
contextualization.locale.{ptBr|enUs|esMx}.reasonstring旅程期间展示的采集简要原因。最多 50 个字符。
contextualization.locale.{ptBr|enUs|esMx}.titlestring旅程期间展示的客户提示标题。最多 100 个字符。必须与 text 一起提供。HTML 标签会被剥离。
contextualization.locale.{ptBr|enUs|esMx}.textstring旅程期间展示的客户提示正文。最多 210 个字符。必须与 title 一起提供。HTML 标签会被剥离。
imageBase64string直接发送的自拍照。可接受 SDK 的采集 JWT。
document.purposeenum证件的用途。固定取值:DOCUMENT_PURPOSE_ONBOARDING、DOCUMENT_PURPOSE_CREDIT_PROCESS、DOCUMENT_PURPOSE_CAR_PURCHASE、DOCUMENT_PURPOSE_PAY_BY_PAYCHECK、DOCUMENT_PURPOSE_FGTS。仅在 Face Document Match 流程中使用。
document.​files[].​databytes新的证件采集,base64 编码。全球可用,不限于巴西。与 document.documentId 互斥。
document.documentIdstring (UUID)重用同一人此前已采集的证件,而不进行新的采集。与 document.files[] 互斥。
expectedResultobject在测试/沙箱环境中模拟某项能力的结果,并将响应标记为 simulated: true。参见模拟结果(Test Mock)。
duiType 值
国家值描述
ARDUI_TYPE_AR_PASSPORT阿根廷护照
ARDUI_TYPE_AR_DNI阿根廷 DNI
ARDUI_TYPE_AR_LNC阿根廷驾驶证(Licencia Nacional de Conducir)
ATDUI_TYPE_AT_STNR奥地利税号(STNR)
BEDUI_TYPE_BE_NN比利时国家号码(NN)
BRDUI_TYPE_BR_CPF巴西 CPF
BRDUI_TYPE_BR_PASSPORT巴西护照
BRDUI_TYPE_BR_CNPJ巴西 CNPJ
CADUI_TYPE_CA_SIN加拿大 SIN
CHDUI_TYPE_CH_AHV瑞士 AHV/AVS 号码
CLDUI_TYPE_CL_RUN智利 RUN
CLDUI_TYPE_CL_PASSPORT智利护照
CLDUI_TYPE_CL_LICENCIA_CONDUCIR智利驾驶证(Licencia de Conducir)
CODUI_TYPE_CO_NIT哥伦比亚 NIT
CODUI_TYPE_CO_PASSPORT哥伦比亚护照
CODUI_TYPE_CO_LICENCIA_CONDUCCION哥伦比亚驾驶证(Licencia de Conducción)
CODUI_TYPE_CO_CC哥伦比亚公民身份证(Cédula de Ciudadanía)
DEDUI_TYPE_DE_IDNR德国税务识别号码(IdNr)
DKDUI_TYPE_DK_CPR丹麦 CPR
ECDUI_TYPE_EC_NI厄瓜多尔 NI
ESDUI_TYPE_ES_NIE西班牙外国人身份号码(NIE)
ESDUI_TYPE_ES_DNI西班牙国民身份证(DNI)
FIDUI_TYPE_FI_HETU芬兰个人身份代码(HETU)
FRDUI_TYPE_FR_SPI法国税务参考号码(SPI)
GBDUI_TYPE_GB_NINO英国国民保险号码(NINO)
GTDUI_TYPE_GT_CUI危地马拉 CUI
IDDUI_TYPE_ID_NIK印度尼西亚 NIK
IEDUI_TYPE_IE_PPSN爱尔兰个人公共服务号码(PPSN)
ITDUI_TYPE_IT_CF意大利税务代码(CF)
LKDUI_TYPE_LK_NIC斯里兰卡 NIC
LUDUI_TYPE_LU_MATRICULE卢森堡国民身份号码(Matricule)
MXDUI_TYPE_MX_CURP墨西哥 CURP
MXDUI_TYPE_MX_RFC_PERSONA_FISICA墨西哥 RFC(自然人)
MXDUI_TYPE_MX_LICENCIA_CONDUCIR墨西哥驾驶证(Licencia de Conducir)
NGDUI_TYPE_NG_NIN尼日利亚 NIN
NGDUI_TYPE_NG_BVN尼日利亚银行验证号码(BVN)
NGDUI_TYPE_NG_BVN_TOKEN尼日利亚 BVN 令牌(哈希)
NGDUI_TYPE_NG_NIN_TOKEN尼日利亚 NIN 令牌(哈希)
NLDUI_TYPE_NL_BSN荷兰公民服务号码(BSN)
NODUI_TYPE_NO_FNR挪威国民身份号码(Fødselsnummer)
PEDUI_TYPE_PE_RUC秘鲁 RUC
PEDUI_TYPE_PE_DNI秘鲁 DNI
PEDUI_TYPE_PE_PASSPORT秘鲁护照
PLDUI_TYPE_PL_PESEL波兰 PESEL
PTDUI_TYPE_PT_NIF葡萄牙税务识别号码(NIF)
SEDUI_TYPE_SE_PNR瑞典个人号码(PNR)
SEDUI_TYPE_SE_SAMORDNINGSNUMMER瑞典协调号码(Samordningsnummer)
TRDUI_TYPE_TR_TCKN土耳其身份证号码(TCKN)
USDUI_TYPE_US_SSN美国 SSN
USDUI_TYPE_US_PASSPORT美国护照
USDUI_TYPE_US_DRIVER_LICENSE美国驾驶执照
USDUI_TYPE_US_PASSPORT_CARD美国护照卡
USDUI_TYPE_US_POLYCARBONATE_PASSPORT美国聚碳酸酯护照
USDUI_TYPE_US_ID_CARD美国身份证
UYDUI_TYPE_UY_CI乌拉圭 CI
ZZDUI_TYPE_ZZ_EMAIL电子邮件地址
ZZDUI_TYPE_ZZ_PHONE_NUMBER电话号码
创建不带证件的流程

当 flow 允许可选证件时,你可以省略 person.duiType 和 person.duiValue。采集完成后,流程会停留在 AWAITING_FOR_DOCUMENT 状态,直到你的后端通过设置流程证件发送证件。

示例​

curl -X POST https://api.idcloud.unico.app/client/v1/process \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"flow": "idunicodocs_r2",
"purpose": "biometryonboarding",
"clientReference": "pedido-88216",
"callbackUri": "https://your-app.example.com/onboarding/callback",
"person": {
"duiType": "DUI_TYPE_BR_CPF",
"duiValue": "12345678909"
}
}'

响应​

200 OK
{
"process": {
"id": "b7c1f0a2-63d4-4f3e-9a17-2c8e5d41b0aa",
"flow": "idunicodocs_r2",
"state": "PROCESS_STATE_CREATED",
"result": "PROCESS_RESULT_UNSPECIFIED",
"purpose": "biometryonboarding",
"clientReference": "pedido-88216",
"person": {
"duiType": "DUI_TYPE_BR_CPF",
"duiValue": "12345678909"
},
"capacities": [
"PROCESS_CAPACITY_IDLIVE",
"PROCESS_CAPACITY_IDUNICO",
"PROCESS_CAPACITY_IDDOCS"
],
"authenticationInfo": {
"authenticationId": ""
},
"companyData": {
"branchId": "",
"countryCode": "BRA"
},
"callbackUri": "https://your-app.example.com/onboarding/callback",
"userRedirectUrl": "https://cadastro.unico.app/flow?id=b7c1f0a2-63d4-4f3e-9a17-2c8e5d41b0aa",
"token": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9…",
"webAppToken": "eyJlbmMiOiJBMjU2R0NNIiwiYWxnIjoiZGlyIn0…",
"simulated": false
}
}
字段类型描述
process.idstring (UUID)流程标识符。使用它通过获取流程获取结果。
process.stateenumPROCESS_STATE_CREATED——流程已创建,旅程尚未开始。PROCESS_STATE_FAILED——流程创建失败。
process.resultenum验证结果。仅当 state = PROCESS_STATE_FINISHED 时存在——参见流程以了解某个 flow 可能返回的结果值。
process.flowstring创建时发送的 Flow 标识符。
process.purposestring创建时发送的业务用途。
process.callbackUristring创建时发送的回调 URI。
process.​clientReferencestring创建时发送的你方内部标识符。仅在请求中提供时才存在。
process.​companyBranchIdstring (UUID)分支机构 ID。仅在请求中提供时才存在。
process.​userRedirectUrlstring用于重定向用户的 URL(Web 重定向和 iFrame 集成)。请勿修改此 URL。
process.tokenstring用于初始化 Web SDK iFrame 的 JWT。
process.webAppTokenstring用于初始化原生 SDK(Android、iOS、Flutter)的 JWT。
process.createdAtstring (date-time)流程创建时的时间戳。
process.expiresAtstring (date-time)流程过期、无法再完成的时间戳。
process.capacitiesarray为该流程配置的能力。
process.​authenticationInfoobject该流程的身份验证信息(创建时为空)。
process.personobject创建时发送的 person 对象的回显。
process.​companyData.​branchIdstring (UUID)与该流程关联的分支机构 ID。
process.​companyData.​countryCodestring与该分支机构关联的国家代码(例如 BR、MX)。

错误代码​

代码消息描述
3invalid flow指定的 flow 不存在。
3invalid person: friendly name exceeds 50 characters.展示名称超过 50 个字符。
3invalid purpose提供的用途无效。
3invalid callbackUri: unable to parse callbackUri: parse "": empty url, invalid callbackUri: url:提供的 callbackUri 无效。
3invalid person: email required for notification channel NOTIFICATION_CHANNEL_EMAIL, invalid email address for notification channel NOTIFICATION_CHANNEL_EMAIL提供的邮箱无效,且已配置邮件通知。
3invalid person: phone number required for notification channel NOTIFICATION_CHANNEL_WHATSAPP, phone number does not contain 13 chars for notification channel NOTIFICATION_CHANNEL_WHATSAPP提供的电话号码无效,且已配置 SMS 或 WhatsApp 通知。
3idnsv2/GetPublicID request error: rpc error: code = InvalidArgument desc = invalid dui value提供的标识符(duiValue)无效。
3invalid expiresIn argumentexpiresIn 的值无效。
3invalid company_name argument in process contextualization, max length is 20contextualization.​company_name 超过 20 个字符。
3title and text must be provided together in process contexts某个 locale 只提供了 title 或 text 中的一个。
3invalid title argument in process contexts, max length is 100某个 locale 的 title 超过 100 个字符。
3invalid text argument in process contexts, max length is 210某个 locale 的 text 超过 210 个字符。
3invalid reason argument in process contexts, max length is 50某个 locale 的 reason 超过 50 个字符。
3The references array must contain at most one element.references 中发送了多个条目。
3The references[].referenceContent field is missing.referenceContent 为空。
3The references[].referenceType field must be IMAGE_BASE64 or PROCESS_ID.referenceType 不是受支持的值之一。
3A reference is required for this flow.该 flow 需要参照,但未发送。请发送带有 referenceType(PROCESS_ID 或 IMAGE_BASE64)的 references[0]。
9The referenceProcessId field is invalid.参照流程不存在或无法被重用。会指出你发送的具体字段——如果你发送的是该字段,则为 bioTokenId。
3INVALID_IMAGE图像不是有效的 base64,或看起来像注入攻击。
3INVALID_DUI证件号码不符合标准格式或不存在。
3IMAGE_TOO_LARGE图像超过最大 800 KB 的限制。
3UNSUPPORTED_IMAGE_FORMAT图像格式不是 PNG、JPEG 或 WebP。
3MISSING_IMAGE该 flow 需要图像,但未发送。
3MISSING_NAME该 flow 需要姓名,但未发送。
3MISSING_DUI该 flow 需要证件号码,但未发送。
3MISSING_PERSON该 flow 需要 person 对象,但未发送。
3INVALID_REQUEST请求体为空或无法解析。
3TOKEN_ALREADY_USED采集令牌已被使用过。它是一次性的。
3TOKEN_EXPIRED采集令牌已过期。它必须在 10 分钟内使用。
3INVALID_BUNDLE请求不满足安全要求。
3INVALID_NAME姓名超过了允许的最大长度。
3INVALID_EMAIL邮箱地址格式错误或太长。
3INVALID_PHONE电话号码超过 20 个字符。
3INVALID_DUI_TYPE证件类型不是受支持的值之一。
3INVALID_CLIENT_REFERENCEclientReference 太长,或包含空格或 #。
3INVALID_CONSENT_TYPEconsentType 不是 NONE、DIRECT 或 INDIRECT。
3INVALID_USE_CASEuseCase 无法识别,或太长。
3INVALID_DEVICE_TRUST_TOKEN设备信任令牌无效或已被使用过。
3TOO_MANY_REFERENCESreferences 中发送了多个条目。
3INVALID_REFERENCE_TYPEreferenceType 不是 IMAGE_BASE64 或 PROCESS_ID。
3INVALID_REFERENCE_PROCESS参照流程 ID 不是有效的标识符。
3REFERENCE_PROCESS_NOT_FOUND被参照的流程不存在。
3REFERENCE_PROCESS_NOT_READY被参照的流程没有可重用的结果,或已被使用过。
3REFERENCE_SELFIE_NOT_FOUND被参照的流程没有可供重用的自拍照。
3INVALID_CAPTURE_TOKEN采集到的图像不是由采集 SDK 生成的有效令牌。
3INVALID_CAPTURE_SIGNATURE采集令牌的签名验证失败。
3PRIOR_CAPTURE_NOT_FOUND找不到此请求所依赖的先前采集记录。请重新开始该流程。
3PRIOR_CAPTURE_IN_PROGRESS先前的采集尚未完成。请稍后重试。
3PRIOR_CAPTURE_FAILED先前的采集未能完成。请重新开始该流程。
3INVALID_DOCUMENT证件文件不可读、受密码保护,或格式不受支持。
3INVALID_AUTH_PROCESSdocument.authProcessId 无效、已过期,或属于另一个人。
3INVALID_DOCUMENT_PURPOSEdocument.purpose 不是受支持的值之一。
3PROCESS_REUSE_NOT_ENABLED该 flow 不允许在没有图像的情况下重用先前的流程。请改为发送图像。
9PROCESS_FAILED流程在创建过程中出现终止性失败。
9Tenant API key is not configuredAPI 密钥未正确配置。

后续步骤​