跳转到主要内容
以下 config 字段用于 POST /v3/workflows/ 和 PATCH /v3/workflows/{settings_uuid}/ 的 features 数组中每个条目内。
v3 工作流 API 会根据有序的 features 数组构建线性的节点式工作流。请按照实际执行顺序发送各项功能。
某项功能由哪个引擎运行(Didit 自有引擎,还是第三方服务商)不在下列 config 字段之列。它通过控制台的 市场 管理,市场会为你在该功能的 config 对象上设置 provider_key 和 fallback_to_native。

验证规则

  • 省略 config.documents_allowed、将其设为 null 或 {} 时,OCR 默认覆盖所有受支持的国家/地区和证件类型。如果你发送自定义的 documents_allowed 对象,它必须至少包含一个有效的国家/地区和一种已启用的证件类型。每个证件配置都可以将 sides 设为 1(仅采集正面)或 2(采集正反面)。
  • QUESTIONNAIRE 需要 config.questionnaire_uuid。
  • KYB_DOCUMENTS 需要 config.kyb_required_document_groups。
  • SIGNATURE 在合格电子签名可用之前,会以 qes_not_available 拒绝 signature_level: "qes"。当工作流上的 signature_availability.aes 为 false 时,新的 signature_level: "aes" 步骤会以 aes_not_available 被拒绝。其文件必须在创建会话时已存在:当 signature_documents_source 设为 workflow 时,该步骤需要在控制台中上传文件,没有文件的步骤可以保留为草稿,但无法上线;设为 session 时,每次创建调用都必须发送 sign.documents。
  • FACE_MATCH 在简单工作流请求中必须位于 OCR 之后。
  • 同一工作流中同时出现 NFC 和 DATABASE_VALIDATION 时,二者都需要 OCR。AML 之前需要有 OCR、KYB_REGISTRY 或 DOCUMENT_AI 之一。如果其前面只有 DOCUMENT_AI,则待筛查的 full_name 必须能够被填充:它可以来自前面已将键设为 full_name 的 Document AI 字段(系统会为你自动映射),也可以来自显式的 config.aml_field_sources 条目(参见 AML)。
  • KYB_DOCUMENTS 和 KYB_KEY_PEOPLE 等 KYB 子功能要求工作流中更早的位置已有 KYB_REGISTRY。
  • 工作流只能是个人(KYC)工作流或企业(KYB)工作流,二者不能同时存在。使用了任一 KYB 功能(KYB_REGISTRY、KYB_DOCUMENTS、KYB_KEY_PEOPLE)的工作流,只能与 AML、DOCUMENT_AI、QUESTIONNAIRE、PHONE_VERIFICATION、EMAIL_VERIFICATION、IP_ANALYSIS 和 SIGNATURE 组合。它不能包含仅适用于个人的功能,例如 OCR、LIVENESS、FACE_MATCH、NFC、PROOF_OF_ADDRESS、DATABASE_VALIDATION 或 AGE_ESTIMATION;个人工作流也不能包含 KYB 功能。在企业工作流中,DOCUMENT_AI 会将任何标记为 is_full_name 的字段与已核验的公司进行比对,而不是与个人比对。若要核验公司背后的人员,请单独创建一个 KYC 工作流,并在 KYB_KEY_PEOPLE 节点中通过 kyb_ubo_verification_workflow、kyb_officer_verification_workflow 或 kyb_shareholder_verification_workflow 引用该工作流。
  • 操作字段使用 DECLINE、REVIEW 或 NO_ACTION,除非下文说明某字段受到限制。
  • 分数和阈值字段为 0 到 100 之间的数字,除非列出了更窄的范围。

通用状态规则

每个功能都支持可选的 status_rules 数组。当字段条件匹配时,可使用它覆盖功能状态。
按如下方式理解上面的示例:kyc.extra_fields.profession 以 80 为最低分数进行模糊匹配 Soft. Engineer,则将功能状态设置为 Declined。 对于身份证件验证,可以指定提取的 extra_fields 值,例如 kyc.extra_fields.profession;驾照类别的有效期日期,例如 kyc.extra_fields.dl_class_code_b_from 和 kyc.extra_fields.dl_class_code_b_to;或各类别的限制/说明代码,例如 kyc.extra_fields.dl_class_code_b_notes(英国驾照的第 12 列)。这些值来自 OCR 结果的 extra_fields 对象,不属于 expected_details。
dl_class_code_*_from 和 dl_class_code_*_to 始终是有效的 ISO 日期,或者不会出现在 extra_fields 中。Didit 绝不会在日期字段中返回无法识别的 OCR 文本。如果无法读取类别表中的单元格,该字段将被省略,而不会以原始字符串形式发送。因此,请使用 is_empty 运算符将无法识别的类别日期路由到相应的处理流程,而不要假设该字段始终存在。
对于日期字段,请使用 value_type: "relative_date",并将值设置为如下结构的对象:{ "direction": "past" | "future", "amount": number, "unit": "days" | "months" | "years" }。例如,使用 operator: "less_than" 和 { "direction": "past", "amount": 3, "unit": "years" },可匹配从今天起三年以前的日期。

与特定步骤比较

图形化工作流可以多次运行同一功能,例如运行三个身份证件验证步骤。 当使用 value_type: "field" 时,在值后追加 @<node_id>,即可读取某个特定步骤的值。 被引用的节点必须是功能步骤,并且在到达该规则所在步骤的每条路径上,都必须始终先于该规则所在的步骤运行;或者它就是该规则所在的步骤本身。 不带后缀的值将从该规则所在的步骤读取。
请将此规则理解为:设置在第三个身份证件验证步骤上的规则,要求该步骤的 kyc.full_name 以 80 为最低分数,模糊匹配步骤 ocr_1 读取的全名,则将功能状态设置为 Declined。 在控制台中,变量选择器会按画布上的编号列出每个符合条件的步骤,并自动为您存储后缀。

OCR / 身份证件验证

功能值:OCR。
以上六个 document_liveness_* 阈值用于配置证件活体检测,而不是按信号配置的判定字段。portrait_replacement_action、printed_copy_action 和 screen_capture_action 是账户级设置,不接受在工作流功能配置中设置:API 在保存时会去除未知的配置键,因此在此发送它们不会生效。每个信号都有拒绝阈值和审核阈值,取值范围为 0-100,分数越高表示证件越可能为真实。
示例:

按国家/地区设置的方法

methods 以 ISO 3166-1 alpha-3 国家/地区代码为键。每个国家/地区最多包含三个方法对象;未填写的项目使用默认值。
wallet.on_failure 的取值为 fallback_to_document、decline 或 retry。retry(仅适用于钱包,且该国家/地区已关闭证件采集)会让登录未在钱包步骤完成的用户再次尝试;会话绝不会因此被拒绝,并会保持开放,直到用户完成或会话过期。id_lookup 开关仅接受 fallback_to_document 或 decline。 若要让证件不出现在第一屏,仅在钱包或查询未成功时才提供证件,请设置 document.fallback_only。示例使用芬兰,其中芬兰可信网络优先,证件采集作为备用。芬兰还需要在 documents_allowed 中启用其证件类型(例如护照和身份证),以便备用方案有可提供的证件。
以上两项查询在当前目录中均为 available,因此该配置可按原样保存。本示例有意省略钱包部分:只有在目录将钱包标记为 available 的国家/地区,钱包配置才能保存;在其他国家/地区设置 wallet.enabled: true 会被拒绝,并导致整个保存失败,包括查询配置在内。若目录将某国家/地区的钱包标记为 available,请在该国家/地区添加钱包:
保存时 API 会执行以下验证:
  • 未知的国家代码、国家内的未知键或方法内的未知键都会被拒绝,不会静默丢弃任何内容。
  • 所有方法均未启用的国家/地区会被拒绝,因为该地区的用户无法完成验证。
  • 只有在该国家/地区启用证件采集时,钱包或查询才能回退至证件采集。在 document.enabled 为 false 的国家/地区,fallback_to_document 会在运行时导致拒绝,因为没有可回退的目标。
  • 除非 document.enabled 为 true,且该国家/地区至少有一个钱包或身份查询回退至证件采集,否则 document.fallback_only: true 会返回 HTTP 400 错误。
当前预发布环境会将 id_lookup.response_fields 应用于比对输出、可选的性别字段和保留的登记库人像。必需身份字段仍是验证记录的一部分。这并不保证所有中间供应商有效载荷都会被排除在处理之外。本次变更尚未在生产环境中验证。在依赖字段选择来满足保留要求之前,请先在目标环境中确认其行为。
在编写 methods 之前,请先查看能力目录。您可以通过控制台的 国家 标签页查看,也可以使用 didit_workflow_get_id_verification_methods_catalog MCP 工具。行为、覆盖范围和计费信息见身份证件验证方法。

NFC / 电子护照

功能值:NFC。

活体检测

功能值:LIVENESS。

人脸比对

功能值:FACE_MATCH。

年龄估算

功能值:AGE_ESTIMATION。

电话验证

功能值:PHONE_VERIFICATION。 在组织完成首次充值之前,电话验证处于禁用状态。
电话情报增强是可选的附加功能。当 phone_enrichment_enabled 为 true 时,每次完成的电话验证都会附带电话情报增强,并在标准电话验证费用之外每次请求收取 $0.05。基于评分的操作只有在增强评分可用后才会生效;信任指数、电话类型和转网相关操作在增强运行后即会应用。社交足迹检查是第二个独立的附加功能。当 phone_social_enabled 为 true 时,每次完成的电话验证还会返回该号码注册的在线平台,包括即时通讯、社交媒体、电子商务和专业服务,并且每次请求收取 $0.05。它可以与 phone_enrichment_enabled 同时启用,也可以单独启用:两个附加功能的定价和计费相互独立。如果查询结果显示号码未在其覆盖的任何平台上注册,这同样是有效且计费的结果,并会触发 phone_no_social_presence_action。若要在工作流图谱中根据结果进行分支,请使用 phone.social_profiles_registered(号码注册的平台数量)。

邮箱验证

功能值:EMAIL_VERIFICATION。
邮箱情报增强是可选的附加功能。当 email_enrichment_enabled 为 true 时,每次完成的邮箱验证都会进行邮箱情报增强,每次请求收取 $0.05,另加标准的邮箱验证费用。基于分数的操作会在情报增强评分可用后生效;泄露相关操作则在增强运行后立即生效。社交足迹检查是第二个独立的附加功能。当 email_social_enabled 为 true 时,每次完成的邮箱验证还会报告该地址在哪些在线平台上注册过,包括邮箱服务商、社交媒体、专业、电子商务和娱乐服务,并且每次请求收取 $0.05。它可以与 email_enrichment_enabled 同时启用,也可以单独启用,两项附加功能的定价和计费相互独立。如果查询发现该地址未在任何覆盖的平台上注册,这依然是有效且计费的结果,并会触发 email_no_social_presence_action。如需在工作流图中根据结果进行分支,请使用 email.social_profiles_registered(该地址已注册的平台数量)。

数据库核验

功能值:DATABASE_VALIDATION。 示例:
database_validation_countries 决定此步骤是否真正执行检查。保存时未包含它的 DATABASE_VALIDATION 功能会被接受,但不会执行任何检查,因此请务必至少发送一个国家/地区及至少一个服务 ID。
如果步骤无法运行某个服务 ID,保存将被拒绝,返回 400,错误信息会指明该 ID 并说明原因,且不会保存任何内容。这包括:ID 不在目录中、ID 属于其他国家、服务尚未开放,以及服务仅通过独立的 POST /v3/database-validation/ 提供。如果某个服务所需的输入无法由任何前面的步骤提供,同样会被拒绝,并列出缺失的输入。已保存的工作流中如果包含某个已无法运行的服务,重新保存时该服务会被移除。 例如,此阿根廷工作流从身份证件验证读取 DNI 号码和性别,并在不使用自拍照的情况下将其与 RENAPER 核对:
如需同时将自拍照与 RENAPER 持有的照片进行比对,请改用 arg_renaper,并在 LIVENESS 步骤之后使用。其人脸比对分数和阈值参见 RENAPER。

银行验证

功能值:BANK_VERIFICATION。 用户验证银行账户,银行报告的账户持有人会与工作流中较早步骤确立的身份进行比对。用户可通过两种方式之一完成验证:银行登录(open_banking),即在自己的银行登录;或账户核验(account_lookup),即输入账户信息,由银行确认其上的户名。bank_method_order 以及每个国家/地区的 methods 决定某个国家/地区提供哪些方式,以及哪种方式排在最前;参见 银行验证方式。该步骤会生成证据,包括户名匹配分数、生成该分数的比对以及原因代码;bank_*_action 键则将这些证据转换为状态。 节点是否执行任何操作,取决于两个因素。bank_countries 是白名单,因此空映射不会提供任何银行,也不会执行任何检查。此外,持有人还需要有可供比对的依据:在该节点前放置 OCR、DATABASE_VALIDATION 或 QUESTIONNAIRE 步骤,在创建会话时发送 expected_details,或使用 bank_field_sources 自行映射字段。若以上条件均不满足,账户归属只能为 unknown,此时由 bank_reference_identity_missing_action 决定如何处理。
银行验证功能仍在逐步推出,因此只有在已为其启用该功能的账户上,BANK_VERIFICATION 节点才会被接受。在其他账户上,保存会被拒绝,并会说明原因。此处同样不配置由哪条路由执行该步骤:路由由控制台 Marketplace 为您设置的 provider_key 与 fallback_to_native 这一组参数决定。

连接账户

用户无法完成验证时

用户始终可以不通过银行继续,该步骤不会使用户陷入停滞。参见 用户无法验证其银行时。 用户选择继续时,会话会根据其继续的原因执行 bank_unsupported_action、bank_attempts_exhausted_action 或 bank_skipped_action 中对应的操作,除非此前已有某次尝试评估并已决定该步骤的结果:参见 判定操作。

比对账户持有人

账户核验

以下配置仅适用于账户核验。银行登录保留其自身的近似匹配以及 bank_max_attempts。

财务数据

bank_expected_currencies 仅依赖默认的 ownership 授权范围即可使用。其他三个配置项读取真实的财务数据,因此每一项都需要在 bank_scopes 中配置对应的授权范围,否则保存会被拒绝。

存储内容

判定操作

除非标记为受限,否则此处每个键都接受 DECLINE、REVIEW 或 NO_ACTION。省略或发送 null 时,将使用下方的默认值。凡不属于明确所有权证据的结果,默认都不会通过;只有能够证明与用户不符的证据才会导致拒绝。

更多控制

这些键均为可选。每个操作键接受 DECLINE、REVIEW 或 NO_ACTION。 示例 config 对象,适用于已启用 Bank Verification 且所选通道覆盖您所列国家/地区的账户:
bank_countries 决定此步骤是否生效,并且会根据该节点所运行的通道进行校验,而不是对照全局国家列表。若该通道无法建立账户归属,则该国家/地区在保存时会被拒绝,并在错误信息中注明。因此请仔细阅读错误信息,不要假定该国家/地区已被接受,并会在运行时被跳过。

AML

功能值:AML。 对于 KYC 个人筛查,请使用以下字段: 对于 KYB 企业筛查,请使用以下字段:

筛查 Document AI 步骤提取的实体

AML 步骤通常从 OCR 步骤(个人)或 KYB_REGISTRY 步骤(企业)读取其要筛查的对象。如果工作流唯一的提取步骤是 DOCUMENT_AI(例如税务证明或成立文件等非标准化文件),则两者都没有,因此必须说明每个筛查输入来自何处。 示例:筛查墨西哥 acta constitutiva(公司设立文件)中提到的公司,且工作流中没有任何身份证件:
如果之前没有 OCR 和 KYB_REGISTRY 步骤,AML 步骤必须能够填充 full_name,因为没有名称就无法进行服务商搜索。如果工作流未映射任何内容,或映射了上游步骤未提取的 Document AI 键,保存时将被拒绝,而不会保存后却不进行任何筛查。AML 的精确度直接取决于您提供的标识符数量:仅凭姓名进行的筛查会产生大量误报。

设备与 IP 分析

功能值:IP_ANALYSIS。 示例:
如果您希望在自动拒绝高置信度已恢复设备之前先对其进行监控,请将 recovered_device_action 与 duplicated_device_action 分开配置。这在上线推广期间很有用,因为已恢复设备匹配旨在检测欺诈团伙,但仍应结合您自身的流量进行校准。

位置验证

功能值:GEOLOCATION。 通过设备位置或连接的 IP 位置,检查用户在验证过程中所处的位置,并将其与允许区域、禁止区域、IP 位置和证件地址进行比对。 步骤的运行方式请参阅位置验证,决策字段请参阅其报告。 如果你需要计算与证件地址的距离,请将此步骤放在身份证件验证或地址证明之后,因为只有存在已登记地址时才会测量该距离。 当 geolocation_position_source 未设置时,与 IP 位置的距离需要同一工作流中包含设备与 IP 分析步骤。 所有字段均为可选:config 为空的步骤会要求设备提供精度在 250 米以内、时间不超过 120 秒的位置,允许用户尝试 3 次,并且不应用任何区域规则。 每个检测结果都有各自的操作字段。未设置的操作字段采用你所选 geolocation_preset 的默认值;若未选择预设,则采用下方列出的各字段默认值。 位置不确定或被拒绝时默认为 REVIEW,而不是 DECLINE,因为权限被拒绝或半径过大并不构成欺诈证据。 你显式设置的操作始终优先于预设。 重放的挑战(LOCATION_REPLAY_DETECTED)和失败的设备证明(LOCATION_INTEGRITY_FAILED)始终会拒绝,且没有操作字段。

区域形状

geolocation_areas 中的每一项都有一个 id(1 至 64 个字符,仅限 A-Z a-z 0-9 _ -,且在列表中唯一)、一个可选的 label(最多 80 个字符)、一个 type(取值为 allowed 或 blocked),以及一个用于选择形状的 kind。 一个列表最多包含 50 个区域,并且在 is_geolocation_geofencing_enabled 为 true 时,至少需要一个 allowed 区域。 geolocation_areas 与 geolocation_geofencing_by_country 不能同时发送,并且 geolocation_refusal_path: "end_session" 要求 geolocation_permission_denied_action 为 REVIEW 或 DECLINE。 对于永远无法匹配的区域(例如某个国家没有已发布边界的区域),API 会拒绝该区域,而不予保存。 示例:

地址证明

功能值:PROOF_OF_ADDRESS。

问卷

功能值:QUESTIONNAIRE。

KYB 公司登记

功能值:KYB_REGISTRY。 kyb_registry_fields_config 将每个可配置字段键映射为 {"enabled": bool, "required": bool}。enabled: false 隐藏该字段,enabled: true, required: false 将其显示为可选,enabled: true, required: true 则使其在提交时必填。company_name、country_code 和 region 始终显示且必填,无法配置。当该对象被省略、为 null 或为 {} 时,采用默认设置:仅 incorporation_date 为必填,其余字段均为可选。
可配置的字段键:registration_number、incorporation_date、legal_address、vat_number、alternative_names、tax_number、company_type、legal_entity_identifier、location_of_registration、nature_of_business、registered_capital_amount、registered_capital_currency、website、email、phone、control_scheme。有关终端用户的行为,请参阅可配置的登记表单字段;有关 vat_number 和 tax_number 的检查方式,请参阅增值税号与税号验证。

KYB 证件

功能值:KYB_DOCUMENTS。

KYB 关键人员

功能值:KYB_KEY_PEOPLE。

Document AI

功能值:DOCUMENT_AI。 向用户请求一份或多份证件,并借助视觉模型提取您定义的指定字段。每个已配置的字段都会成为可用于分支的值 document_ai.<key>,该步骤的结果为 document_ai.status。 document_ai_documents 中的每一项都是一个证件: 证件 fields 中的每一项都是一个字段: 示例:

电子签名

功能值:SIGNATURE。 让已验证的个人或企业的关键人员,在文档上签名。签名级别可选简单(默认)或高级(AES)。请将其放在验证签署人的步骤之后:身份证件验证,以及用于接收验证码的邮箱或电话验证。参见 电子签名。 工作流文档中的字段在控制台的模板编辑器中设置。对于会话文档,请在 sign.documents[].fields 中发送字段,并在 sign.field_values 中发送 api.<key> 字段的值。参见 创建会话。 示例,适用于每次会话都发送文档的情况:
最后修改于 2026年11月7日