Ihre erste Anfrage
Durchgängige Anleitung — eine Anfrage erstellen, Dokumente serverseitig hochladen, sie einreichen und den Webhook verarbeiten.
Der Schnellstart verwendete eine gehostete Sitzung, weil dies der einfachste Weg ist. Diese Seite beschreibt die Alternative: Dokumente in Ihrer eigenen Oberfläche erfassen und serverseitig hochladen. Wählen Sie diesen Ansatz, wenn Sie die volle Kontrolle über das Erlebnis des Antragstellers haben möchten oder bereits Dokumentbilder vorliegen haben.
Der Lebenszyklus
stateDiagram-v2
[*] --> PENDING_UPLOAD: POST /requests
PENDING_UPLOAD --> PENDING_UPLOAD: POST /documents (each upload)
PENDING_UPLOAD --> PROCESSING: POST /submit
PROCESSING --> APPROVED: auto-decision: approve
PROCESSING --> REJECTED: auto-decision: reject
PROCESSING --> ESCALATED: auto-decision: escalate
ESCALATED --> APPROVED: POST /decision (human)
ESCALATED --> REJECTED: POST /decision (human)
REJECTED --> PENDING_UPLOAD: POST /resubmit
APPROVED --> [*]
Jeder Statuswechsel löst einen Webhook aus. Bei den meisten Integrationen müssen Sie nur auf PROCESSING, APPROVED, REJECTED und ESCALATED reagieren.
Schritt 1 — Anfrage erstellen
curl -X POST https://app.certivant.com/api/v1/kyc/requests \
-H "Authorization: Bearer ck_live_..." \
-H "Content-Type: application/json" \
-d '{
"type": "INDIVIDUAL",
"externalRef": "user-9281",
"applicant": {
"fullName": "Alex Singh",
"dateOfBirth": "1988-11-03",
"nationality": "GB",
"email": "alex@example.com",
"phone": "+447700900100",
"emailVerified": true,
"phoneVerified": false
}
}'
Antwort (201):
{
"id": "req_01J0...",
"status": "PENDING_UPLOAD",
"pendingDocTypes": ["GOVERNMENT_ID", "SELFIE"],
"applicant": { "fullName": "Alex Singh", ... },
"createdAt": "..."
}
pendingDocTypes zeigt an, welche Dokumente diese Verifizierung noch benötigt. Das Feld aktualisiert sich bei jedem Upload — sobald es leer ist, kann die Anfrage eingereicht werden.
Schritt 2 — Dokumente hochladen
Jeder Dokument-Upload ist ein eigener multipart/form-data-POST. Übergeben Sie documentType (und bei zweiseitigen Dokumenten wie Führerscheinen side) als Query-Parameter, die Datei in einem Feld namens file.
# Front of an ID card
curl -X POST "https://app.certivant.com/api/v1/kyc/requests/req_01J0.../documents?documentType=GOVERNMENT_ID&side=front" \
-H "Authorization: Bearer ck_live_..." \
-F "file=@/path/to/id-front.jpg"
# Back of the same ID card
curl -X POST "https://app.certivant.com/api/v1/kyc/requests/req_01J0.../documents?documentType=GOVERNMENT_ID&side=back" \
-H "Authorization: Bearer ck_live_..." \
-F "file=@/path/to/id-back.jpg"
# Selfie
curl -X POST "https://app.certivant.com/api/v1/kyc/requests/req_01J0.../documents?documentType=SELFIE" \
-H "Authorization: Bearer ck_live_..." \
-F "file=@/path/to/selfie.jpg"
Einschränkungen:
- Dateigröße: höchstens 10 MB pro Datei.
- MIME-Typen:
image/jpeg,image/png,image/webp,application/pdf. sideist fürGOVERNMENT_IDerforderlich und für jedes Dokument mit zwei Seiten zulässig; lassen Sie es beiSELFIE,PROOF_OF_ADDRESSusw. weg.
Jeder Upload liefert den aktualisierten Status der Anfrage zurück:
{
"id": "doc_01J1...",
"documentType": "GOVERNMENT_ID",
"side": "front",
"status": "pending",
"requestStatus": "PENDING_UPLOAD",
"pendingDocTypes": ["SELFIE"],
"fileSize": 412938,
"mimeType": "image/jpeg"
}
Wenn pendingDocTypes leer ist, können Sie einreichen.
Schritt 3 — Zur Verarbeitung einreichen
Verifizieren Sie zuerst E-Mail-Adresse und Telefonnummer. Die E-Mail- und
Telefonverifizierung gehört zu den Prüfungen. Wenn Ihre Organisation dies
verlangt (KYC/B-Einstellungen), stellen Sie sicher, dass jeder erforderliche
Kanal verifiziert ist, bevor Sie einreichen — entweder indem Sie beim
Erstellen emailVerified / phoneVerified: true setzen (wie in Schritt 1,
wenn Sie sie bereits selbst geprüft haben) oder indem der Antragsteller in
einer gehosteten Sitzung den Code-Schritt für E-Mail bzw. Telefon abschließt.
Ein nicht verifizierter erforderlicher Kanal lässt die Kontaktprüfung bei der
Verarbeitung fehlschlagen.
curl -X POST https://app.certivant.com/api/v1/kyc/requests/req_01J0.../submit \
-H "Authorization: Bearer ck_live_..."
Antwort:
{ "id": "req_01J0...", "status": "PROCESSING", "message": "..." }
Die Anfrage wechselt in den Status PROCESSING. Die Risk-Engine von Certivant führt Echtheitsprüfungen der Dokumente, OCR, Gesichtsabgleich (wenn Sie ein Selfie hochgeladen haben), Lebenderkennung, Sanktionsprüfung und alle eigenen Regeln durch, die Ihre Organisation konfiguriert hat. Dies ist in der Regel innerhalb von Sekunden abgeschlossen.
Fragen Sie das Ergebnis nicht ab. Richten Sie einen Webhook ein (siehe Schritt 4) — so teilt Certivant Ihnen mit, dass die Anfrage abgeschlossen ist. Polling verbraucht das Ratenlimit und erhöht die Latenz.
Schritt 4 — Den Webhook empfangen
Konfigurieren Sie im Dashboard unter KYC → Einstellungen → Webhooks einen Webhook-Endpunkt. Bei jedem Statuswechsel der Anfrage sendet Certivant einen POST an Ihre URL:
{
"event": "kyc.request.approved",
"requestId": "req_01J0...",
"organizationId": "org_01H...",
"externalRef": "user-9281",
"status": "APPROVED",
"timestamp": "2026-05-27T10:04:21.000Z",
"data": {
"score": 94,
"decision": "approve",
"extracted": {
"fullName": "Alex Singh",
"dateOfBirth": "1988-11-03",
"documentNumber": "GBR-1234567"
},
"liveness": { "isLive": true, "confidence": 0.98 },
"faceMatch": { "isMatch": true, "confidence": 0.91 }
}
}
Prüfen Sie den Header X-Certivant-Signature-V2 (siehe Signaturprüfung), suchen Sie die Zeile über externalRef in Ihrer Datenbank und fahren Sie fort.
Schritt 5 — Eskalation und Ablehnung behandeln
Nicht jede Anfrage wird reibungslos genehmigt. Auf zwei Ergebnisse müssen Sie sich vorbereiten:
kyc.request.escalated
Die automatisierte Engine war nicht sicher — meist weil das Dokument von schlechter Qualität war, der Gesichtsabgleich einen Grenzwert knapp erreicht hat oder ein Sanktionstreffer einen menschlichen Blick braucht. Ein Prüfer in Ihrer Organisation öffnet die Anfrage im Dashboard und entscheidet. Sie müssen nichts tun; die endgültige Entscheidung löst einen weiteren Webhook aus (kyc.request.approved oder kyc.request.rejected).
Sie können die Entscheidung auch programmatisch mit dem Berechtigungsbereich kyc:manage treffen:
curl -X POST https://app.certivant.com/api/v1/kyc/requests/req_01J0.../decision \
-H "Authorization: Bearer ck_live_..." \
-H "Content-Type: application/json" \
-d '{ "decision": "APPROVED", "note": "Confirmed against internal CRM record" }'
kyc.request.rejected
Der Antragsteller hat die Prüfungen nicht bestanden — abgelaufenes Dokument, Sanktionstreffer, fehlgeschlagene Lebenderkennung usw. Die Gründe finden Sie in data.factors und data.disqualifiers der Webhook-Nutzlast. Sie können den Antragsteller einen erneuten Versuch machen lassen, indem Sie erneut einreichen:
curl -X POST https://app.certivant.com/api/v1/kyc/requests/req_01J0.../resubmit \
-H "Authorization: Bearer ck_live_..."
Dies setzt die Anfrage auf PENDING_UPLOAD zurück und entfernt die bisherigen Dokumente. Der Antragsteller kann dann erneut hochladen (oder eine neue URL für die gehostete Sitzung verwenden), und Sie können anschließend erneut einreichen.
Was Sie als Nächstes entwickeln können
- Hängen Sie den Webhook-Handler an Ihre Hintergrund-Job-Warteschlange, damit Sie Ihre eigenen nachgelagerten Schritte bei einem Fehler wiederholen können.
- Speichern Sie die Felder
data.extractedan Ihrem Nutzerdatensatz — Name, Geburtsdatum, Dokumentnummer — und fragen Sie den Nutzer nicht erneut danach. - Ergänzen Sie in Ihrem eigenen Produkt eine Administrationsansicht, die für jede Anfrage, die Ihr Team prüfen muss, auf das Certivant-Dashboard verlinkt.
Die vollständige Endpunkt-Referenz und Sonderfälle finden Sie unter KYC-Anfragen.
Authentifizierung
Authentifizieren Sie jeden Certivant-API-Aufruf mit einem Bearer-API-Schlüssel — behandelt werden die Erstellung von Schlüsseln, Berechtigungsbereiche, das Format des Authorization-Headers, die Rotation ohne Ausfallzeit, den Widerruf und bewährte Sicherheitsverfahren.
Formulare
Die KYC- und KYB-Verifizierungsformulare eines Mandanten über die Certivant-REST-API auflisten — das Formular finden, mit dem Sie eine Verifizierung durchführen, nach Typ filtern und Slug, Status sowie das Kennzeichen „einbettbar“ jedes Formulars auslesen.