Saltar al contingut principal
POST
cURL

Compatibilitat amb KYC i KYB

Un únic endpoint crea sessions de Verificació d’usuaris i de Verificació d’empreses. El tipus del flux de treball determina quin tipus de sessió es crea:
  • Si passes un workflow_id d’un flux de treball KYC, es crea una sessió de Verificació d’usuaris (KYC). Resposta session_kind: "user".
  • Si passes un workflow_id d’un flux de treball KYB, es crea una sessió de Verificació d’empreses (KYB). Resposta session_kind: "business".
Configura els fluxos de treball a la consola, a Workflows → Create workflow. Un flux de treball és KYC o KYB en el moment de crear-lo; després no es pot canviar el tipus.

Exemples

Resposta (201 Created):

Documents de signatura electrònica

Quan el flux de treball té un pas de Signatura electrònica que pren els documents de la sessió (signature_documents_source amb el valor session o both), envia’ls a sign.documents. Cada document és el fitxer en base64, de manera que Didit no l’ha de descarregar mai des d’una URL.
Sense fields, el signant llegeix el document i hi està d’acord.

Col·locar camps mitjançant text d’ancoratge

En lloc d’una posició, un camp pot portar un anchor: un fragment de text del document que marca on va el camp. Els ancoratges són útils per a documents que generes per a cada sessió, per exemple a partir d’una plantilla Word. Per als documents del flux de treball, col·loca els camps a la consola. Si el text no és al document, la crida retorna 400 amb field_anchor_not_found i la clau del camp. Didit no elimina el text d’ancoratge del PDF, de manera que escriu-lo amb el mateix color que el fons de la pàgina.

Valors dels camps

sign.field_values defineix el valor de cada camp el prefill del qual és api.<key>, tant als documents del flux de treball com als de la sessió. És un objecte indexat pels noms <key>. Els valors són cadenes d’1 a 500 caràcters per als camps text i data, i booleans per a un checkbox.

Errors i crides repetides

Una sessió admet fins a 20 documents i 50 MB en total. La crida retorna 400 amb un error de sign quan:
  • El flux de treball no té cap pas de Signatura electrònica.
  • Has enviat sign.documents i el pas només accepta documents del flux de treball.
  • El pas només accepta documents de la sessió i no n’has enviat cap, o no té documents del flux de treball i tampoc n’has enviat cap.
  • Un document és massa gran, no és base64 vàlid o no és un fitxer admès.
  • Un fitxer Word és rebutjat amb signature_document_not_supported, o no es pot convertir i retorna signature_document_conversion_failed, cadascun amb el reason que apareix a Fitxers admesos.
  • Un camp no és vàlid, el seu ancoratge no es troba (field_anchor_not_found), o un valor de camp és rebutjat.
Tornar a crear per al mateix workflow_id i vendor_data retorna la sessió pendent. Si aquesta crida envia sign, els seus documents, camps i valors de camp han de ser idèntics als de la primera (mateix ordre, títols, noms de fitxer, contingut, camps i valors). Qualsevol diferència retorna 400 amb {"sign": "signature_document_changed"}: utilitza un vendor_data diferent o espera que acabi la sessió pendent.

Proves amb escenaris de sandbox

En una aplicació en mode sandbox, passa sandbox_scenario per precarregar un resultat determinista (aprovació, un rebuig concret o un escenari en revisió) sense tocar proveïdors reals ni el teu saldo:
sandbox_scenario és rebutjat amb 400 a les aplicacions en producció. Si encara no coneixes el resultat en el moment de crear la sessió, pots activar-lo (o tornar-lo a activar) més tard mitjançant POST /v3/session/{session_id}/sandbox/arm/, sempre que la sessió encara estigui Not Started: el selector d’escenaris previ al flux allotjat utilitza aquest mateix endpoint. Consulta Sandbox i dades de prova per al catàleg complet d’escenaris, el registre de valors màgics i la forma de la sol·licitud i la resposta de l’endpoint d’activació.

vendor_data vincula la sessió a una entitat

  • En els fluxos de treball KYC, vincula la sessió a una entitat d’usuari. Si l’usuari no existeix, es crea automàticament.
  • En els fluxos de treball KYB, vincula la sessió a una entitat d’empresa. Es crea automàticament si és nova.
Més informació a vinculació de dades del proveïdor.

Consentiment biomètric a Illinois, Texas i Colorado

El flux allotjat i el SDK natiu 4.10.0 o posterior poden mostrar un pas de consentiment biomètric explícit abans de la primera captura facial, segons el mode de consentiment de l’aplicació i on es troba la persona. Hi ha dos camps opcionals que alimenten aquesta decisió:
  • user_state: on viu la persona, quan ho saps (US-IL, IL o Illinois). En mode Auto, un estat inclòs en l’àmbit d’aplicació fa que el flux ho demani.
  • biometric_consent: un objecte amb given_at i text_version, per al consentiment que ja has recollit. El flux no el torna a demanar.
Els SDK natius per sota de 4.10.0 no poden mostrar aquest pas: les seves sessions funcionen com abans i la decisió indica que el consentiment no s’ha recollit. Consulta Consentiment biomètric.

Important: la comunicació de la informació i l’obtenció del consentiment encara tenen lloc al teu producte

Create Session genera una URL de verificació i un token de sessió. Per si mateix, no demostra que hagis mostrat a l’usuari la informació legal ni que hagis obtingut el consentiment que requereix el teu cas d’ús concret. Si inicies una sessió de Didit des de la teva pròpia aplicació, web, embolcall del SDK o flux de marca blanca, hauries de gestionar la capa legal a la teva pròpia UX abans que l’usuari comenci la captura.

Llista de comprovació recomanada abans de la verificació

  1. Digues a l’usuari que la teva empresa sol·licita la verificació i que Didit és el proveïdor de verificació / encarregat del tractament que fa funcionar el flux.
  2. Enllaça al teu avís de privacitat i a qualsevol terme legal del responsable del tractament que sigui aplicable al recorregut.
  3. Enllaça a l’Avís de privacitat de la verificació de Didit i a les Condicions d’ús per a usuaris finals de la verificació d’identitat.
  4. Si el teu flux inclou captura de document, captura de selfie, prova de vida o biometria, recull un consentiment explícit i afirmatiu sempre que la llei aplicable o la teva posició legal ho exigeixin.
  5. Si utilitzes una UI personalitzada, un domini personalitzat o un recorregut només amb API, mostra aquests avisos al teu propi producte abans d’enviar l’usuari al flux de Didit.
  6. Guarda el teu propi registre del text de l’avís o del consentiment, la marca de temps i les metadades relacionades si el teu equip legal exigeix un registre d’auditoria.
Els requisits legals varien segons la jurisdicció. La marca blanca no elimina el paper de Didit en el flux de verificació. Revisa la implementació amb un assessor legal abans de llançar-la si operes en jurisdiccions amb normes específiques sobre biometria.

Autoritzacions

x-api-key
string
header
requerit

La clau d'API de la teva aplicació, des de Developers -> API keys a la Business Console. La clau primària té accés complet. Una clau amb nom pot tenir l'abast limitat: cap, lectura o escriptura per recurs, limitada a determinats fluxos de treball o a sessions aprovades, a una llista d'adreces IP i a una data de caducitat. 401 significa que la clau és incorrecta, revocada o caducada; 403 significa que no s'ha enviat cap clau, que la clau no té accés a aquest recurs o acció, o que la sol·licitud prové d'una adreça fora de la seva llista d'IP; 404 en una ruta de sessió significa que la sessió està fora dels fluxos de treball o estats de la clau. Una clau sense accés a fitxers multimèdia rep els URL d'imatge, vídeo i PDF com a null, i una clau sense permís d'escriptura de sessions rep els enllaços de sessió i els tokens com a null. Consulta https://docs.didit.me/console/api-keys.

Cos

application/json
workflow_id
string<uuid>
requerit

Identificador estable del flux de treball que defineix quins passos de verificació executarà la sessió. Els fluxos de treball es creen i es gestionen a la pàgina Workflows de la Console. El workflow_id també selecciona implícitament si la sessió és de KYC o de KYB.

Exemple:

"11111111-2222-3333-4444-555555555555"

vendor_data
string

Un identificador únic per a l'usuari que s'està verificant, com ara un UUID, correu electrònic o ID d'usuari intern. Aquest camp s'utilitza per a: (1) Agrupament d'usuaris: les sessions amb el mateix vendor_data s'enllacen al mateix perfil d'usuari a la pestanya Usuaris. (2) Detecció de duplicats entre sessions: quan es cerquen cares, documents, números de telèfon, correus electrònics, adreces IP o empremtes digitals de dispositiu duplicades, les sessions amb el mateix vendor_data es tracten com el mateix usuari i s'exclouen de les coincidències. Sense vendor_data, cada sessió es tracta com un usuari únic i es mostren tots els possibles duplicats. Recomanem fermament proporcionar sempre un vendor_data per reduir el soroll en la detecció de duplicats.

Exemple:

"user-123"

multi_account_segment
string

Àmbit opcional de detecció de duplicats dins de la teva organització. Les comprovacions de cares duplicades comparen aquesta sessió només amb altres sessions que tinguin el mateix segment, de manera que bases de comptes separades (comptes personals i d'empresa, o un per cada subclient B2B) no marquin una persona que legítimament té un compte a cadascuna. Omet-lo per utilitzar l'únic àmbit per defecte, que és el que utilitzen totes les sessions actualment. Les coincidències de llista de bloqueig i de llista d'admesos ignoren aquest camp.

Maximum string length: 64
Exemple:

"business-accounts"

callback
string

URL a la qual redirigir l'usuari un cop completada la verificació. Didit afegeix automàticament verificationSessionId i status (Approved, Declined, In Review) com a paràmetres de consulta. S'admeten esquemes d'URL personalitzats (p. ex., myapp://) per a callbacks mòbils. Si s'omet, s'utilitza la callback_url per defecte del flux de treball. Quan l'aplicació té dominis permesos (allowed_domains a PATCH /v3/webhook/), un callback http o https ha de pertànyer a un d'aquests orígens (mateix esquema, amfitrió i port); en cas contrari, la sol·licitud falla amb un error 400 a callback: callback must be on one of the application's allowed domains: https://app.example.com. Els esquemes d'URL personalitzats sempre s'accepten.

Exemple:

"https://example.com/verification/callback"

callback_method
enum<string>
predeterminat:initiator

Determina quin dispositiu ha de gestionar la redirecció a la URL de callback proporcionada. Utilitza initiator per redirigir només el dispositiu que ha iniciat el flux, completer per al dispositiu que el finalitza o both per permetre que qualsevol dels dos dispositius activi el callback. Si mai observes que el callback no s'activa de manera fiable, et recomanem establir aquest valor a both.

Opcions disponibles:
initiator,
completer,
both
Exemple:

"both"

metadata
any

JSON arbitrari emmagatzemat amb la sessió i retornat en la resposta i als webhooks. S'accepta qualsevol valor JSON (objecte, cadena, número, matriu), però es recomana un objecte JSON de parells clau/valor. No es mostra a l'usuari final. Utilitza'l per passar els teus propis identificadors de correlació, variants A/B o context empresarial.

Exemple:
tags
string[]

Etiquetes afegides a la sessió quan es crea, pel seu nom. Fins a 10, de fins a 50 caràcters cadascuna. Els noms no distingeixen majúscules de minúscules i s'emmagatzemen en majúscules. Un nom que encara no existeixi a l'aplicació es crea com a etiqueta nova. Les etiquetes es mostren a la sessió a la consola, on pots filtrar-hi.

Maximum array length: 10
Maximum string length: 50
Exemple:
language
enum<string>

Codi d'idioma (ISO 639-1) per a la interfície del procés de verificació. Controla l'idioma mostrat a l'usuari final durant la verificació. Si no s'indica, l'idioma del navegador es detectarà automàticament i s'utilitzarà. Consulta tots els idiomes admesos aquí.

Opcions disponibles:
en,
ar,
bg,
bn,
bs,
ca,
cnr,
cs,
da,
de,
el,
es,
et,
fa,
fi,
fr,
he,
hi,
hr,
hu,
hy,
id,
it,
ja,
ka,
kk,
ko,
ky,
lt,
lv,
mk,
mn,
ms,
nl,
no,
pl,
pt-BR,
pt,
ro,
ru,
sk,
sl,
so,
sq,
sr,
sv,
th,
tr,
uk,
uz,
vi,
zh-CN,
zh-TW,
zh
Exemple:

"en"

contact_details
object

Informació de contacte de l'usuari que es pot utilitzar per a notificacions, emplenament previ de formularis de verificació i verificació de telèfon. Això inclou l'adreça de correu electrònic, l'idioma preferit per a les comunicacions i el número de telèfon.

Exemple:
expected_details
object

Detalls d'usuari esperats utilitzats per a la validació creuada amb les dades extretes del document d'identitat de l'usuari, el Comprovant de domicili i altres passos de verificació. Les discrepàncies es mostren com a advertències a la decisió; alguns camps (p. ex. id_country, expected_document_types) també modifiquen el flux visible per a l'usuari. En fluxos de treball de Verificació d'empreses (KYB) només s'utilitzen els camps de l'empresa (company_name, registry_country, registration_number) —emplenen prèviament la cerca al registre mercantil per a l'usuari— i s'ignoren tots els camps de nivell de persona.

Exemple:
portrait_image
string<byte>

Imatge de retrat de la cara de l'usuari final codificada en base64 (màx. 2 MB; JPEG, PNG, WebP o TIFF). S'utilitza com a imatge de referència per comparar-la amb la captura de prova de vida quan el flux de treball és de tipus Biometric Authentication amb Coincidència facial activada, o qualsevol flux de treball en graf on Coincidència facial s'executi abans de Verificació d'identitat (OCR). Opcional quan l'usuari de vendor_data ja té una imatge facial emmagatzemada: Didit la reutilitza automàticament, seguint aquest ordre de prioritat: cara de prova de vida aprovada, foto del xip de l'ePassport, retrat del document d'identitat, cara del perfil registrada manualment (només es reutilitzen cares de sessions aprovades o cares que hagis registrat tu mateix). Quan es proporciona, portrait_image sempre té prioritat sobre la cara emmagatzemada. Si s'omet i no existeix cap cara emmagatzemada (o no s'envia vendor_data), la creació de la sessió falla amb 400. S'ignora per a altres tipus de flux de treball.

Exemple:

"iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNkYAAAAAYAAjCB0C8AAAAASUVORK5CYII="

sandbox_scenario
string

Slug de l'escenari només per al sandbox. Només s'accepta quan la clau d'API pertany a una aplicació en mode sandbox; es rebutja en aplicacions de producció. Quan s'estableix, el flux de creació desplega els valors màgics inclosos de l'escenari als camps d'entrada de la sessió (contact_details, expected_details) perquè els proveïdors simulats reprodueixin el resultat de l'escenari a través de la canalització del flux de treball real. Consulta el catàleg d'escenaris a GET /v1/sandbox/scenarios/ o Sandbox i dades de prova. També pots activar (o reactivar) un escenari després de la creació mitjançant POST /v3/session/{sessionId}/sandbox/arm/, sempre que la sessió estigui encara en estat Not Started. Per a cerques sense document, utilitza lookup_partial_match, lookup_no_match o lookup_provider_error per provar el pressupost d'intents configurat i l'alternativa. Per a carteres d'identitat, utilitza wallet_cancelled, wallet_timeout o wallet_provider_error; approve simula una cartera verificada. Totes les carteres del catàleg es poden provar al sandbox, inclosos els esquemes no disponibles en aplicacions de producció. Els intents simulats no es cobren.

Exemple:

"decline_document_expired"

sign
object

Entrada de signatura electrònica per a aquesta sessió. documents són els documents que cal signar, per a un flux de treball el pas de Signatura electrònica del qual agafa documents de la sessió (signature_documents_source session o both): fins a 20 documents i 50 MB en total. field_values emplena els camps el prefill dels quals és api.<key>, tant en documents del flux de treball com de la sessió. Crear una sessió de nou per al mateix workflow_id i vendor_data retorna la sessió pendent; si aquesta crida envia sign, els seus documents, camps i valors han de ser idèntics als primers, i qualsevol diferència retorna 400 amb {"sign": "signature_document_changed"}. Consulta Documents de signatura electrònica.

user_state
string

On viu la persona, quan es coneix: un codi de subdivisió ISO 3166-2 (US-IL, ES-M) o un codi o nom d'estat dels EUA (IL, Illinois). Un estat la legislació del qual requereixi el consentiment biomètric explícit (Illinois, Texas, Colorado) fa que el flux de verificació el sol·liciti abans de capturar una cara, amb l'activador declared_state. Un valor no reconegut retorna 400. Consulta Consentiment biomètric.

Maximum string length: 16
Exemple:

"US-IL"

Consentiment biomètric explícit que ja has recollit de la persona. Compleix el requisit, de manera que el flux de verificació no el torna a demanar, i la decisió el registra com a status: "given" amb l'activador customer_collected. Mai se substitueix una resposta que la persona ja hagi donat al flux. Consulta Consentiment biomètric.

Resposta

Sessió creada (o retornada, si ja existeix una sessió inacabada amb el mateix vendor_data a l'última versió publicada del flux de treball). La resposta és la sessió serialitzada, incloent-hi la url de verificació allotjada a la qual redirigir l'usuari.

session_id
string<uuid>
requerit

Identificador únic de la sessió de verificació. Utilitza aquest id en cridar GET /v3/session/{sessionId}/decision/.

Exemple:

"11111111-2222-3333-4444-555555555555"

session_number
integer
requerit

Número seqüencial i fàcil de llegir assignat a la sessió dins de la teva aplicació. Útil per a suport i taulers.

Exemple:

43762

session_token
string
requerit

Token segur per a URL de 12 caràcters que autoritza l'usuari final a accedir al flux de verificació allotjat a url. Vàlid fins que caduqui la sessió. Tracta'l com un secret: qualsevol persona que el tingui pot obrir el flux de verificació d'aquesta sessió.

Exemple:

"3FaJ9wLqX2Mz"

url
string<uri>
requerit

URL de verificació allotjada a la qual redirigir l'usuari final. L'URL incrusta el session_token i, si està configurat, utilitza el teu domini de marca blanca. Quan la sol·licitud inclou language, l'URL conté un segment de ruta d'idioma — https://verify.didit.me/{language}/session/{session_token} (p. ex. /es/session/...); sense language, el segment s'omet.

Exemple:

"https://verify.didit.me/session/3FaJ9wLqX2Mz"

vendor_data
string | null
requerit

Identificador que has passat a la sol·licitud per vincular la sessió a un usuari o a una empresa del teu propi sistema. Es retorna exactament igual. Null quan no s'ha proporcionat.

Exemple:

"user-123"

metadata
any
requerit

Payload JSON arbitrari que vas emmagatzemar amb la sessió en el moment de la creació. Es retorna literalment: qualsevol valor JSON que hagis enviat (objecte, cadena, número, matriu) es retorna tal qual, tot i que es recomana un objecte JSON. No es mostra a l'usuari final. Sempre present a les respostes; null quan no s'ha proporcionat en crear-la.

Exemple:
status
enum<string>
requerit

Estat actual de la sessió. Les sessions acabades de crear retornen Not Started. Si ja existia una sessió no finalitzada per al mateix vendor_data a l'última versió publicada del flux de treball, l'estat retornat reflecteix aquesta sessió existent.

Opcions disponibles:
Not Started,
In Progress,
Approved,
Declined,
In Review,
Expired,
Abandoned,
Kyc Expired,
Resubmitted,
Awaiting User
Exemple:

"Not Started"

callback
string<uri> | null
requerit

URL de redirecció final a la qual s'envia l'usuari després de completar el flux. Didit afegeix ?verificationSessionId={session_id}&status={status} a aquesta URL. Si no s'indica a la sol·licitud, s'utilitza per defecte la URL de callback configurada al flux de treball; serà null si no se n'ha configurat cap de les dues. Si l'aplicació té dominis permesos i aquesta URL és una URL web externa a aquests dominis (per exemple, un valor per defecte del flux de treball configurat abans que canviés la llista), el flux allotjat no hi redirigeix l'usuari.

Exemple:

"https://example.com/verification/callback"

workflow_id
string<uuid>
requerit

Identificador estable del flux de treball en què s'executa aquesta sessió. Sempre és l'identificador de grup estable del flux de treball: fins i tot si has fet referència a un UUID de versió de flux de treball específic a la sol·licitud (cerca compatible amb versions anteriors), la resposta conté el workflow_id estable. Utilitza'l per correlacionar la sessió amb el flux de treball que hagis configurat a la Console.

Exemple:

"11111111-2222-3333-4444-555555555555"

workflow_version
integer
requerit

Número de versió de la versió publicada del flux de treball a la qual es va fixar la sessió en crear-se. Didit resol workflow_id a la darrera versió publicada del flux de treball quan es crea la sessió, i la sessió continua executant aquesta versió encara que el flux de treball es torni a publicar més endavant.

Exemple:

3

tags
string[]

Les etiquetes de la sessió, per nom.

Exemple:
Darrera modificació el 7 de novembre del 2026