Zum Hauptinhalt springen

Prozess erstellen

MarkdownChatGPTClaude

Dieser Endpunkt deckt drei Produkte ab, die denselben Pfad teilen, sich aber in Body-Parametern, Fähigkeiten und Antwortfeldern unterscheiden:

  • Einführung -- validiert, wer der Benutzer ist, indem sein Gesicht mit der Identitätsdatenbank von Unico verglichen wird (subject.duiType + subject.code erforderlich).
  • Transaktional -- verifiziert, dass es sich um dieselbe Person eines vorherigen Prozesses handelt, durch Gesicht-zu-Gesicht-Vergleich (referenceProcessId ODER references-Array mit Selfie / Prozess-ID erforderlich).
  • Cardholder Verification -- bestätigt, dass eine Karte zu ihrem angegebenen Inhaber gehört, ohne jegliche Selfie-Aufnahme (subject.code + card erforderlich). Optional wird ein zuvor validierter Prozess über referenceProcessId wiederverwendet, um die Prüfung auszulösen; ohne dieses Feld fällt die Antwort standardmäßig auf unsure zurück. Siehe die Fähigkeit Cardholder Verification.

Das aktive Produkt wird durch den APIKEY bestimmt, der im Anfrage-Header gesendet wird.

Für den vollständigen Integrationsablauf siehe API-Übersicht.

Endpunkt​

UmgebungURL
ProduktionPOST https://api.id.unico.app/processes/v1
SandboxPOST https://api.id.uat.unico.app/processes/v1

Anfrage​

Headers
HeaderWert
AuthorizationBearer <access_token> (siehe Authentifizierung)
APIKEYBereitgestellter API-Schlüssel -- definiert das aktive Produkt und die aktivierten Fähigkeiten.
Content-Typeapplication/json
Body-Parameter
FeldTypErforderlichBeschreibung
subject.duiTypeintegerjaDokumenttypkennung. Siehe duiType-Werte unten.
subject.codestringjaIdentifikatorwert gemäß subject.duiType. Keine Punkte oder Bindestriche.
subject.namestringneinVollständiger Name.
subject.genderstringneinM oder F.
subject.birthDatestring (ISO 8601)neinGeburtsdatum (YYYY-MM-DD).
subject.emailstringneinE-Mail-Adresse.
subject.phonestringneinTelefonnummer im E.164-Format.
subject.clientReferencestringbedingtEindeutiger Bezeichner des Benutzers in Ihrem System. Erforderlich für die Fähigkeit Mehrfachkonten. Eindeutig in Ihrer Datenbank, maximal 256 Zeichen, keine Leerzeichen.
useCasestringneinOperationskontext, z. B. Onboarding.
subsidiaryIdstringneinFilial-ID — nur erforderlich, wenn mehrere Filialen vorhanden sind.
imageBase64stringjaVom Frontend erfasstes Selfie, in Base64.
duiType-Werte
LandCodeBeschreibung
AR6Argentinischer Reisepass
AR7Argentinische DNI
AR49Argentinischer Führerschein (Licencia Nacional de Conducir)
AT34Österreichische Steuernummer (STNR)
BE36Belgische Nationalnummer (NN)
BR1Brasilianische CPF
BR5Brasilianischer Reisepass
BR14Brasilianische CNPJ
CA28Kanadische SIN
CH33Schweizer AHV/AVS-Nummer
CL9Chilenische RUN
CL52Chilenischer Reisepass
CL57Chilenischer Führerschein (Licencia de Conducir)
CO26Kolumbianische NIT
CO53Kolumbianischer Reisepass
CO55Kolumbianischer Führerschein (Licencia de Conducción)
CO56Kolumbianischer Bürgerausweis (Cédula de Ciudadanía)
DE41Deutsche Steuer-Identifikationsnummer (IdNr)
DK29Dänische CPR
EC10Ecuadorianische NI
ES50Spanische Ausländer-Identifikationsnummer (NIE)
ES51Spanischer Personalausweis (DNI)
FI35Finnische Personenkennung (HETU)
FR46Französische Steuerreferenznummer (SPI)
GB30Britische Sozialversicherungsnummer (NINO)
GT12Guatemaltekische CUI
ID16Indonesische NIK
IE47Irische Sozialversicherungsnummer (PPSN)
IT37Italienischer Codice Fiscale (CF)
LU48Luxemburgische nationale Identifikationsnummer (Matricule)
MX2Mexikanische CURP
MX25Mexikanische RFC (Persona Física)
MX58Mexikanischer Führerschein (Licencia de Conducir)
NG8Nigerianische NIN
NG20Nigerianische Bankverifizierungsnummer (BVN)
NG43Nigerianisches BVN-Token (gehasht)
NG44Nigerianisches NIN-Token (gehasht)
NL42Niederländische Bürgerservicenummer (BSN)
NO39Norwegische nationale Identitätsnummer (Fødselsnummer)
PE27Peruanische RUC
PE40Peruanische DNI
PE54Peruanischer Reisepass
PL31Polnische PESEL
PT45Portugiesische Steueridentifikationsnummer (NIF)
SE32Schwedische Personennummer (PNR)
SE38Schwedische Koordinierungsnummer (Samordningsnummer)
TR24Türkische Identifikationsnummer (TCKN)
US4US-amerikanische SSN
US11US-amerikanischer Reisepass
US18US-amerikanischer Führerschein
US21US-amerikanische Passkarte
US22US-amerikanischer Polycarbonat-Reisepass
US23US-amerikanische ID-Karte
UY13Uruguayische CI
ZZ15E-Mail-Adresse
ZZ17Telefonnummer
—0Nicht angegeben
—3Interner Unico-Identifikator
Bildanforderungen
  • Mindestauflösung: 640 x 480 (HD-Standard)
  • Maximale Dateigröße: 800 KB (JPEG92-Komprimierung empfohlen)
  • Akzeptierte Formate: PNG, JPEG, WebP
  • JWT-Tokens des SDK laufen nach 10 Minuten ab und können nur einmal verwendet werden
Komprimierte Anfragen

Die API unterstützt das Senden des Anfrage-Bodys komprimiert, unter Verwendung des Standard-HTTP-Headers Content-Encoding. Dies ist optional und vollständig abwärtskompatibel: Clients, die diesen Header nicht senden, funktionieren weiterhin genau wie zuvor.

Unterstützte Formate
EncodingContent-Encoding-HeaderStatus
Gzipgzip✅ Empfohlen
Deflatedeflate✅ Unterstützt
Keine Komprimierung(Header nicht vorhanden)✅ Unterstützt (Standardverhalten)
Empfehlung

Verwenden Sie gzip. Es bietet die universellste Unterstützung über Sprachen und HTTP-Bibliotheken hinweg und vermeidet die Implementierungsmehrdeutigkeiten, die bei anderen Formaten auftreten.

Komprimierung wird für Anfragen mit einem großen Body empfohlen (z. B. umfangreiche JSON-Payloads, base64-kodierte Bild-Uploads, Batch-Übermittlungen). Bei kleinen Anfragen bringt der Overhead der Komprimierung möglicherweise keinen relevanten Vorteil.

So senden Sie eine komprimierte Anfrage
  1. Komprimieren Sie den Anfrage-Body (z. B. das serialisierte JSON) mit dem gewählten Algorithmus.
  2. Senden Sie den komprimierten Body als Binärdaten in der Anfrage.
  3. Fügen Sie den Header Content-Encoding mit dem passenden Wert hinzu (gzip oder deflate).
  4. Behalten Sie Content-Type bei, um das ursprüngliche Inhaltsformat zu beschreiben (z. B. application/json), nicht die Transportkodierung.
echo '{"subject":{"code":"12345678909"},"useCase":"Onboarding","imageBase64":"/9j/4AAQSkZJR..."}' | gzip > body.json.gz

curl -X POST https://api.id.unico.app/processes/v1 \
-H "Authorization: Bearer $TOKEN" \
-H "APIKEY: $API_KEY" \
-H "Content-Type: application/json" \
-H "Content-Encoding: gzip" \
--data-binary @body.json.gz
Tipp

Verwenden Sie für das Python-Beispiel den Parameter data=, nicht json=. Der Parameter json= serialisiert die Payload automatisch, komprimiert sie jedoch nicht.

Verwendung von deflate stattdessen: Der obige Ablauf ist identisch – nur der Komprimierungsaufruf und der Wert von Content-Encoding ändern sich.

Sprachedeflate
Bash / cURLzlib-flate -compress < body.json > body.json.deflate (aus qpdf), dann -H "Content-Encoding: deflate"
Pythonzlib.compress(data) statt gzip.compress(data)
.NET (C#)System.IO.Compression.DeflateStream statt GZipStream
deflate ist in der Praxis mehrdeutig

Die deflate-Content-Encoding von HTTP ist als zlib-Stream (RFC 1950) spezifiziert, aber manche Clients und Server erzeugen oder erwarten historisch stattdessen rohes DEFLATE (RFC 1951). Diese API erwartet den Standard-zlib-verpackten Stream – dieselbe Ausgabe, die zlib.compress() (Python) oder DeflateStream (.NET) standardmäßig erzeugen. Im Zweifel bevorzugen Sie gzip, da dort keine solche Mehrdeutigkeit besteht.

Fehlerverhalten

Wenn Content-Encoding mit einem nicht unterstützten Wert gesendet wird oder der Body beschädigt oder für die angegebene Kodierung ungültig ist, gibt die API 400 Bad Request mit einer Meldung zurück, dass die Dekomprimierung des Anfrage-Bodys fehlgeschlagen ist.

FAQ

Muss ich etwas ändern, wenn ich keine Komprimierung verwenden möchte? Nein. Die Unterstützung für Content-Encoding ist additiv — Anfragen ohne diesen Header werden weiterhin normal verarbeitet.

Beeinflusst das die API-Antwort? Nein. Diese Funktion betrifft nur den vom Client gesendeten Body (Anfrage). Die Komprimierung der Antwort (was die API zurückgibt) wird separat über den Header Accept-Encoding gesteuert.

Welches Format sollte ich wählen? Verwenden Sie gzip, sofern keine besondere Einschränkung in Ihrer Umgebung ein anderes Format erfordert.

Beispiel​

curl -X POST https://api.id.unico.app/processes/v1 \
-H "Authorization: Bearer $TOKEN" \
-H "APIKEY: $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"subject": {
"duiType": 1,
"code": "12345678909",
"name": "Luke Skywalker",
"gender": "M",
"birthDate": "2000-05-20",
"email": "[email protected]",
"phone": "5519725570707"
},
"useCase": "Onboarding",
"imageBase64": "/9j/4AAQSkZJR..."
}'

Antworten​

200 OK

Der Contract ist einheitlich — das Feld idCloud.result trägt das konsolidierte Urteil der verwendeten Fähigkeiten.

Unico konsolidiert die Ergebnisse der ausgeführten Fähigkeiten in einem einzigen idCloud.result, bereit, um den nächsten Schritt Ihres Flows zu entscheiden — ohne dass Sie einzelne Ergebnisse orchestrieren müssen.

{
"id": "80371b2a-3ac7-432e-866d-57fe37896ac6",
"status": 3,
"idCloud": {
"result": "approved"
}
}
FeldTypBeschreibung
idstring (UUID)Prozesskennung. Verwenden Sie sie mit Prozess abrufen für erneute Abfragen.
statusinteger1 (in Bearbeitung), 3 (erfolgreich abgeschlossen), 5 (Fehler).
Mögliche Ergebniswerte
idCloud.resultBedeutungEmpfohlene Aktion
approvedEchte Person und validierte Identität.Mit dem Flow fortfahren.
deniedIdentität nicht validiert, Lebenderkennung fehlgeschlagen oder extremes Risiko erkannt.Flow beenden oder zu einem alternativen Flow weiterleiten.
critical-riskKritisches Risikoniveau erkannt.Flow beenden oder an die manuelle Prüfung weiterleiten.
high-riskHohes Risikoniveau erkannt.An die manuelle Prüfung oder einen alternativen Flow weiterleiten.
retryUnzureichende Erfassung oder Score zur Auswertung.Den Benutzer um eine neue Erfassung bitten.
inconclusiveNicht genügend Nachweise für ein Urteil.An die manuelle Prüfung oder einen alternativen Flow weiterleiten.

Die zurückgegebenen Werte hängen vom Recipe ab, das in Ihrem APIKey konfiguriert ist. Siehe Flows für die Ergebniswerte, die jedes Recipe zurückgeben kann.

BrazilKunden in Brasilien erhalten möglicherweise die Antwort nach Fähigkeit

Die Gesamtstruktur der Antwort bleibt gleich — das einzelne Ergebnis ist der Standard.

Integrationen in Brasilien erhalten möglicherweise die offenen Ergebnisse pro Fähigkeit. Jede in der APIKey aktivierte Fähigkeit fügt der Antwort einen eigenen Block hinzu — Felder für deaktivierte Fähigkeiten werden weggelassen.

{
"id": "80371b2a-3ac7-432e-866d-57fe37896ac6",
"status": 3,
"unicoId": {
"result": "yes"
},
"riskLevel": {
"result": "inconclusive"
},
"idFace": {
"personId": "a1b2c3d4e5f67890a1b2c3d4e5f67890a1b2c3d4e5f67890a1b2c3d4e5f67890",
"result": "FOUND"
},
"government": {
"serpro": 87
},
"liveness": 1
}
Antwortfelder hängen von Ihrem APIKey ab

Das obige Beispiel zeigt alle möglichen Capability-Felder. Ihre tatsächliche Antwort enthält nur Felder für die in Ihrer APIKey-Konfiguration aktivierten Capabilities — Felder für deaktivierte Capabilities werden vollständig weggelassen. Wenden Sie sich an Ihren Unico-Projektmanager, um Capabilities zu aktivieren oder anzupassen.

FeldTypBeschreibung
unicoId.resultstringyes, no, inconclusive -- siehe Identitätsprüfung.
riskLevel.resultstringapproved, reproved, risk-critical, risk-high, inconclusive -- siehe mögliche Werte unten oder Betrugseinstufung nach Risiko.
idFace.resultstringFOUND — siehe Gesichts-Identifikator.
idFace.personIdstringStabiler, opaker Bezeichner für das Gesicht, zurückgegeben zusammen mit idFace.result = FOUND. Kann kein Gesicht im Bild identifiziert werden, schlägt die Anfrage mit Fehler 20532 fehl, anstatt einen idFace-Block zurückzugeben.
identityFraudsters.resultstringVeraltet. Verwenden Sie stattdessen riskLevel. Kunden mit laufenden Integrationen können es weiterhin verwenden, während sie die Migration mit dem verantwortlichen Projektteam koordinieren.
government.serprointegerSerpro-Ähnlichkeitswert (0--100, -1, -2). Nur in Brasilien verfügbar. Siehe Serpro-Ähnlichkeitsabgleich.
livenessinteger1 (bestanden), 2 (nicht bestanden) -- siehe Lebenderkennung.
riskLevel.result — mögliche Werte
WertBedeutung
approvedEs handelt sich um das Gesicht des Ausweisinhabers, und es wurden keine Hinweise auf Betrug gefunden.
reprovedEine Ablehnung wird empfohlen, da mehrere Betrugsindikatoren erkannt wurden.
risk-criticalEine Ablehnung wird empfohlen, die endgültige Entscheidung liegt jedoch in Ihrem Ermessen. Kritisches Risiko bedeutet, dass mindestens 2 starke Betrugsnachweise gefunden wurden.
risk-highEine Ablehnung wird ebenfalls empfohlen, die Entscheidung verbleibt jedoch bei Ihnen. Hohes Risiko bedeutet, dass mindestens ein starker Betrugsnachweis gefunden wurde.
inconclusiveEs wurden keine starken Betrugsnachweise gefunden. Daher ist es nicht möglich zu beurteilen, ob ein relevantes Risiko vorliegt oder nicht.
Information

Wenn unicoId.result = inconclusive und die Risiko-Score-Orchestrierung aktiv ist, kann der Prozess status: 1 (in Bearbeitung) zurückgeben. Fragen Sie Prozess abrufen ab oder verwenden Sie Webhooks, um das Endergebnis zu erhalten.

MexicoKunden in Mexiko erhalten möglicherweise den Block der RENAPO-Verifizierung

Die Antwort behält dieselbe Struktur und ergänzt den idGov-Block.

Integrationen in Mexiko mit aktivierter RENAPO-Verifizierung erhalten einen zusätzlichen idGov-Block mit dem Eintrag, den RENAPO zur CURP des Benutzers führt. Er ist eine separate Antwort neben dem Identitätsergebnis.

{
"id": "11111111-2222-3333-4444-555555555555",
"status": 3,
"idCloud": { "result": "approved" },
"idGov": {
"government_valid": true,
"curp": "PUEA880304MDFRJN04",
"government_name": "ANA PRUEBA EJEMPLO",
"date_of_birth": "1988-03-04",
"age": 38,
"gender": "F",
"deceased": false,
"is_mexican": true,
"citizenship": "MEXICO",
"state_of_birth": "Ciudad de México",
"state_iso": "MX-CMX",
"issuing_entity_code": "DF",
"municipality_registration": ""
}
}
FeldTypBeschreibung
idGovobjectRENAPO-Eintrag zur CURP. Fehlt, wenn die Capability nicht aktiviert ist. {}, wenn RENAPO nicht geantwortet hat. Nur Mexiko. Siehe RENAPO-Verifizierung.

Fehlercodes​

CodeNachrichtBeschreibung
40221This flow does not support reusing a prior process (referenceProcessId or bioTokenId) without an image; send an image (imageBase64, or references[0] with type IMAGE_BASE64) instead.Der Wiederverwendungs-Flow (referenceProcessId/bioTokenId, ohne Bild) wurde abgelehnt, da die Prozesswiederverwendung für diesen API-Schlüssel nicht aktiviert ist.
20900O base64 informado não é válido.Der base64-Parameter ist ungültig. Mögliche Ursachen: Es handelt sich nicht um ein Bild oder es liegt ein Injektionsversuch vor.
20807A imagem precisa estar no padrão HD ou possuir uma resolução superior a 640 x 480.Die Auflösung des hochgeladenen Bildes ist zu niedrig.
20532No face detected in image.Im übermittelten Bild konnte kein Gesicht erkannt werden.
20513The referenced process was not found.Die referenceProcessId verweist auf einen Prozess, der nicht existiert oder nicht mehr zugänglich ist.
20512The referenced process is not available for reuse.Der referenzierte Prozess existiert, ist aber nicht zur Wiederverwendung verfügbar.
20509The subject.name field is invalid.subject.name enthält ungültige Zeichen.
20508The subject.gender field is invalid.subject.gender muss M oder F sein.
20507O parâmetro subject.code é inválido.Nicht standardgemäßer oder nicht existierender CPF.
20506O base64 informado é muito grande. O tamanho máximo suportado é até 800kb.Bildgröße überschreitet 800 KB; auf JPEG92 komprimieren.
20505O base64 informado não é suportado. Os formatos aceitos são png, jpeg e webp.Das Base64-Format ist ungültig oder wird nicht unterstützt.
20065The referenceProcessId field is invalid.Die referenceProcessId ist keine gültige UUID.
20062The useCase field is invalid.Nicht erkannter Wert im Feld useCase.
20024The referenceProcessId field is missing.Der referenceProcessId-Parameter wurde nicht angegeben und references wurde nicht als Alternative gesendet. Gilt nicht für Cardholder Verification -- ihr referenceProcessId wird nie als erforderlich validiert; eine nicht erfüllte Wiederverwendungsvoraussetzung liefert stattdessen unsure.
20533The card field is missing.Cardholder Verification: Das Objekt card wurde nicht angegeben.
20534The card.bin field is missing.Cardholder Verification: card.bin wurde nicht angegeben.
20535The card.last4 field is missing.Cardholder Verification: card.last4 wurde nicht angegeben.
20536The card data is invalid.Cardholder Verification: Die Kartendaten wurden als ungültig zurückgewiesen.
20021The subject.phone field is invalid.Format von subject.phone ist ungültig (IDD + Vorwahl + Nummer, 13 Zeichen).
20019The subject.birthDate field is invalid.subject.birthDate liegt außerhalb des ISO-8601-Formats (YYYY-MM-DD).
20009O parâmetro imagebase64 não foi informado.Der Selfie-Bildparameter fehlt.
20008The subject.email field is invalid.Ungültiges E-Mail-Format in subject.email.
20006O parâmetro subject.name não foi informado.Der subject.name-Parameter fehlt.
20005O parâmetro subject.code não foi informado.Der subject.code-Parameter fehlt.
20004O parâmetro subject não foi informado.Der subject-Parameter fehlt.
20003The request body is missing or invalid.Null oder ungültiger Payload.
20002O parâmetro APIKey não foi informado.Der APIKEY-Parameter fehlt im Anfrage-Header.
20001O parâmetro authtoken não foi informado.Der Integrationstoken-Parameter fehlt im Anfrage-Header.
10508The JWT with the captured face has already been used.Das JWT kann nur einmal verwendet werden.
10507The JWT with the captured face is expired.JWT abgelaufen; muss innerhalb von 10 Minuten gesendet werden.
10506The imageBase64 field is not a valid JWT from SDK.Das imageBase64 ist kein gültiges vom SDK generiertes JWT.

Nächste Schritte​

  • Zum Abfragen eines Einführungsprozess-Ergebnisses siehe Prozess abrufen.
  • Um alle Recipe-Kombinationen und ihre möglichen Ergebniswerte zu sehen, siehe Flows.
  • Für Dokument- und Altersverifizierungs-Operationen siehe die entsprechenden Seiten in diesem Abschnitt.