Gina da Zoi ID
API biyu a kan uwar garke ɗaya, client masu nau'i a harsuna shida, tafiya da muke ɗaukar nauyi da sandbox. Cikakken jagora a buɗe yake don karantawa, kuma makullan sandbox suna zuwa tare da shiga da wuri.
URL na tushehttps://kyc.zoi.network
Farawa da sauri
- 1
Ƙirƙiri zama
Backend ɗinku yana kiran
POST /v1/partner/sessionsda makullin abokin hulɗa. - 2
Gudanar da tafiya
Miƙa alamar abokin ciniki ga SDK, ko buɗe
verificationUrla burauza. - 3
Karɓi sakamako
Duba sa hannun webhook, sannan ajiye lambar shaida da matsayinta.
curl https://kyc.zoi.network/v1/partner/sessions \
-H "Authorization: Bearer $ZOI_ID_PARTNER_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: signup-user_42" \
-d '{ "externalUserId": "user_42", "level": "standard", "appId": "com.example.app" }'API biyu
API na abokan hulɗa
Daga sabar zuwa sabar, ƙarƙashin /v1/partner. Aika makullin abokin hulɗa a matsayin alamar Bearer. Kada ku taɓa saka shi a cikin manhaja.
API na abokin ciniki
SDK ce ke amfani da shi, ƙarƙashin /v1/client. Tana aika alamar abokin ciniki da ke aiki ga zama ɗaya na minti 60.
Ƙa'idoji
- Lokaci yana cikin milisakan epoch, a filayen da sunansu ya ƙare da
At. - Kwanan wata yana cikin tsarin
YYYY-MM-DD. Sassan da ba a sani ba su neXX, misali1990-XX-XX. - Buƙatun POST da ke ƙirƙira ko yanke hukunci suna karɓar kan saƙo
Idempotency-Key. Ana ajiye makullan na awa 24. - Canje-canje a zama suna aika bugun da ake tsammani. Idan ya canza, kuna samun
revision_conflict.
Tafiyar zama
Sabar ku tana ƙirƙirar zama. SDK tana gudanar da matakai. Sabar tana duba tsari kuma tana amsa step_not_allowed idan mataki ya zo da wuri.
1. Ƙirƙiri zama daga sabar ku
Idan aka sake kira don mai amfani ɗaya, zaman da ke buɗe yana ci gaba kuma ana ba da sabuwar alamar abokin ciniki.
POST /v1/partner/sessions
Authorization: Bearer <partner key>
Content-Type: application/json
Idempotency-Key: 6f1c2a9e-signup-42
{
"externalUserId": "user_42",
"level": "standard",
"locale": "en",
"appId": "com.example.app"
}
200 OK
{
"sessionId": "ses_...",
"clientToken": "...",
"clientTokenExpiresAt": 1767225600000,
"status": "created",
"apiBaseUrl": "https://kyc.zoi.network",
"resumed": false
}2. Matakan da SDK ke gudanarwa
- 01
Karanta zama da matakan da har yanzu ake buƙata.
GET /v1/client/session
- 02
Rubuta amincewa, tare da zaɓi daban na son rai game da kwatanta fuska.
POST /v1/client/consent
- 03
Duba manhaja da na'ura. Sakamakon yana cikin hukuncin.
POST /v1/client/attestation/challenge, POST /v1/client/attestation
- 04
Aika takarda: karanta chip bayan an ɗauki hoton MRZ, ko aika hotuna.
POST /v1/client/document/mrz-scan, POST /v1/client/document/chip/challenge, POST /v1/client/document/chip or POST /v1/client/document/photos
- 05
Ɗauki gajeren bidiyo ɗaya da kyamarar gaba yayin da manhaja ke nuna motsin kai.
POST /v1/client/liveness/challenge, POST /v1/client/liveness
- 06
Aika ƙasar zama, da adireshi a mataki ingantacce.
POST /v1/client/profile
- 07
Sai da buƙatar adireshi kawai: ɗora takarda, sannan ku tabbatar da adireshin. Ana tsallake shi idan takardar shaida ta riga ta ba da shi.
POST /v1/client/address/document, POST /v1/client/address/confirm
- 08
Sai da buƙatar kuɗi kawai: ajiye amsoshi, ƙara takardu idan manufar ta buƙace su, sannan ku kammala matakin.
POST /v1/client/funds/answers, POST /v1/client/funds/document, POST /v1/client/funds/remove, POST /v1/client/funds/complete
- 09
Amsa tambayoyi biyu: ko mutum ne mai muƙamin siyasa, da ko yana aiki a madadin kansa.
POST /v1/client/declarations
- 10
Miƙa da bugun yanzu.
POST /v1/client/submit
Mai amfani kuma zai iya neman mutum ya sake duba sakamakon atomatik (POST /review-request) ko ya janye amincewa, wanda ke soke zaman kuma ya goge fayilolinsa nan take (POST /withdraw).
Tabbacin adireshi da tushen kuɗi
Ƙara requirements a POST /v1/partner/sessions don tabbatar da fiye da shaida. address yana neman tabbacin adireshi. source_of_funds yana tambayar inda kuɗin ke fitowa, kuma source_of_wealth yana ƙara tambayar jimillar dukiya da yadda aka tara ta. Ƙimomin kuɗi biyun tare mataki ɗaya ne, kuma duka biyun suna haɗuwa da address.
POST /v1/partner/sessions
Authorization: Bearer <partner key>
Content-Type: application/json
{
"externalUserId": "user_42",
"level": "standard",
"appId": "com.example.app",
"requirements": ["address", "source_of_funds"],
// Optional. Without them your partner default applies, else ours.
"addressPolicy": { "maxAgeDays": 90, "signedOnly": false },
"fundsPolicy": { "evidence": "optional", "currency": "EUR" }
}Manufofi na son rai
Idan babu manufa, saitin tsoho naku na abokin hulɗa ne ke aiki, in ba haka ba namu. Ana kwafa manufar a kan zaman lokacin da aka ƙirƙira shi.
addressPolicy:maxAgeDays(tsoho 90, 1 zuwa 366),acceptedTypes(tsoho: takardun ayyuka, waya da banki, takardun haraji, wasiƙun gwamnati da takaddun shaidar zama) dasignedOnly(tsoho false).fundsPolicy:questions,evidence(none,optionalkorequired, tsohonone),acceptedTypes,maxAgeDays(tsoho 180),currency(ISO 4217, tsoho USD) dabracketsdon rukunan kuɗi.- Zama a buɗe mai wasu buƙatu da ba a miƙa ba tukuna ana soke shi kuma sabo ya fara, kamar canjin mataki.
- Gwada kowane sakamako da yanayin gwaji na sandbox kamar
address_signed_pdf,address_document_review,funds_signed_documentsdafunds_review.
Zaman bibiya
Tabbatar da buƙatun kawai ga mai amfani da shaidarsa ke aiki a wurinku. Aika reuseIdentity: true tare da requirements.
- Mai amfani yana ba da amincewa kuma yana kammala sababbin matakai kawai. Ba a sake neman takarda, selfie ko bayanan kai ba.
- Idan aka amince, shaidar tana riƙe lambarta, ranar tabbatarwa da wa'adin aiki, kuma tana samun sabon sakamakon. Kuna karɓar
session.approveddaidentity.updated. - Idan babu shaida mai aiki, kiran yana amsawa da 409
step_not_allowed. - Ku fara shi daga ƙa'idodin haɗarinku, kamar babban ajiya, alamar PEP ko ƙasa mai haɗari. Ƙa'idodinku suna zama a backend ɗinku, a wuri ɗaya.
POST /v1/partner/sessions
Authorization: Bearer <partner key>
Content-Type: application/json
Idempotency-Key: edd-user_42-2026-11
{
"externalUserId": "user_42",
"appId": "com.example.app",
"requirements": ["source_of_funds", "source_of_wealth"],
"reuseIdentity": true,
"fundsPolicy": { "evidence": "required" }
}
// No active identity for user_42:
409 { "error": { "code": "step_not_allowed", ... } }Sakamako da izini
Zaman da aka amince suna ɗauke da address da funds, kuma shaidar tana riƙe na baya-bayan nan na kowanne. Filayen taƙaitawa suna zuwa da kowane izini. Cikakkun bayanai suna buƙatar izini.
- Izini
address: layukan adireshi. Ba tare da shi ba kuna samunverified,method,evidenceLevel,documentType,documentDate,verifiedAtdacountry. - Izini
financial_data:answers,documentsdafindings. Ba tare da shi ba kuna samunkinds,evidenceLevel,reviewed,documentCountdaverifiedAt. Ba ya taɓa zama ɓangare naeligibility. evidenceLevelshi nehigh,medium,lowkonone. Hanyoyin adireshi, daga mafi ƙarfi:wallet,id_document,signed_pdf,official_code,document_reviewdadeclared.- Ba a aika takardu ta API. Membobi masu matsayin bin ƙa'idoji za su iya ganin shafukan takardun tushen kuɗi a dashboard idan muhallin yana da izinin
financial_data. Ana rubuta kowane kallo.
"session": {
"id": "ses_...",
"status": "approved",
"requirements": ["address", "source_of_funds"],
"reusesIdentity": false,
"address": {
"verified": true,
"method": "signed_pdf",
"evidenceLevel": "high",
"documentType": "bank_statement",
"documentDate": "2026-10-14",
"verifiedAt": 1767225600000,
"country": "DE",
// scope "address"
"address": { "line1": "Musterstrasse 12", "city": "Berlin", "postalCode": "10115", "country": "DE" }
},
"funds": {
"kinds": ["source_of_funds"],
"evidenceLevel": "medium",
"reviewed": true,
"documentCount": 2,
"verifiedAt": 1767225600000,
// scope "financial_data"
"answers": {
"employmentStatus": "employed",
"income": { "min": 50000, "max": 100000, "currency": "EUR" },
"sources": ["salary", "savings"],
...
},
"documents": [
{ "documentType": "payslip", "documentDate": "2026-10-31", "amount": 5200, "currency": "EUR",
"signature": "valid", "signedByKnownIssuer": true, "nameMatch": "match", "findings": [], ... },
...
],
"findings": []
}
}Tsarin yanar gizo
Ba ku da SDK? Ku tura mai amfani zuwa shafinmu da muke ɗaukar nauyinsa. Yana amfani da API ɗaya, bincike ɗaya da layin bita ɗaya.
1. Samo mahaɗin
POST /v1/partner/sessions yana dawo da verificationUrl. Ku aika redirectUrl don mayar da mai amfani gare ku idan ya gama. Dole ne ya fara da ɗaya daga cikin asalin juyawa da kuka yi rajista.
POST /v1/partner/sessions
Authorization: Bearer <partner key>
Content-Type: application/json
{
"externalUserId": "user_42",
"level": "standard",
"locale": "en",
"appId": "com.example.app",
"redirectUrl": "https://example.com/kyc/done"
}
200 OK
{
"sessionId": "ses_...",
"clientToken": "...",
"verificationUrl": "https://kyc.zoi.network/verify/#token=...&lang=en",
...
}- Tokin abokin ciniki yana cikin ɓangaren fragment na URL, bayan
#. Burauzoji ba sa taɓa aika fragment zuwa sabar, don haka tokin ba ya cikin bayanan log ko kanReferer. Shafin yana karanta shi, yana cire shi daga sandar adireshi kuma yana ajiye shi a ƙwaƙwalwa kawai. - Ku ƙara
langa fragment don zaɓar ɗaya daga cikin harsuna 19. Idan babu, shafin yana amfani da harshen burauza. - Sake loda shafi yana rasa tokin. Ku ƙirƙiri sabon mahaɗi don zama ɗaya daga backend ɗinku.
- Shafin yana aika
channel: "web"tare da izini. Burauzoji ba za su iya karanta chip na takardun shaida ba, don haka zaman yanar gizo yana amfani da hotunan takarda ko wallet na shaidar dijital. Suna tsallake binciken na'ura, kuma mai bita da aka horar ne koyaushe ke yanke hukunci kan hotunan takarda daga yanar gizo. - A kwamfuta, shafin yana nuna lambar QR don mai amfani ya ci gaba a waya.
2. Idan mai amfani ya gama
Idan tsarin ya ƙare (an aika, an soke ko matsayi na ƙarshe), shafin yana aika wannan saƙon ga kowanne daga cikin waɗannan da ke akwai: window.ReactNativeWebView, window.webkit.messageHandlers.zoiId, window.ZoiIdAndroid da window.opener. Sannan yana buɗe redirectUrl tare da zoiIdSession da zoiIdStatus.
Kada ku taɓa amincewa da saƙon ko sigogin juyawa. Ku amince da webhook ɗinku ko GET /v1/partner/sessions/:id kawai.
// Sent to each bridge that exists:
// window.ReactNativeWebView.postMessage(JSON string)
// window.webkit.messageHandlers.zoiId.postMessage(object)
// window.ZoiIdAndroid.postMessage(JSON string)
// window.opener.postMessage(object, "<origin of your redirectUrl>")
// (popups only, and only when the session has a redirectUrl)
{
"source": "zoi-id",
"type": "finished", // or "cancelled"
"sessionId": "ses_...",
"status": "processing" // the session status at that moment
}
// Then, if redirectUrl was set (the page uses the one stored with the
// session, never one from the address bar):
https://example.com/kyc/done?zoiIdSession=ses_...&zoiIdStatus=processing3. Saitunan webview
Android WebView
Ku kunna javaScriptEnabled da domStorageEnabled, kuma ku saita mediaPlaybackRequiresUserGesture zuwa false. A cikin WebChromeClient, ku ba da onPermissionRequest don RESOURCE_VIDEO_CAPTURE bayan manhajarku ta sami izinin CAMERA. Ku ƙara mai zaɓar fayil don hanyar madadin ta hoto.
webView.settings.javaScriptEnabled = true
webView.settings.domStorageEnabled = true
webView.settings.mediaPlaybackRequiresUserGesture = false
webView.webChromeClient = object : WebChromeClient() {
override fun onPermissionRequest(request: PermissionRequest) {
// Only after your app holds Manifest.permission.CAMERA.
if (request.resources.contains(PermissionRequest.RESOURCE_VIDEO_CAPTURE)) {
request.grant(arrayOf(PermissionRequest.RESOURCE_VIDEO_CAPTURE))
} else {
request.deny()
}
}
override fun onShowFileChooser(
view: WebView, callback: ValueCallback<Array<Uri>>, params: FileChooserParams,
): Boolean {
// Open a picker and pass the result to callback (photo fallback).
return true
}
}iOS WKWebView
iOS 14.3 ko sabo. Ku saita allowsInlineMediaPlayback zuwa true kuma ku ƙara NSCameraUsageDescription a manhajarku. A iOS 15 zuwa sama za ku iya yanke shawarar izinin kyamara a cikin UI delegate.
let config = WKWebViewConfiguration()
config.allowsInlineMediaPlayback = true
let webView = WKWebView(frame: .zero, configuration: config)
webView.uiDelegate = self // iOS 15+: decide camera access below
func webView(_ webView: WKWebView,
requestMediaCapturePermissionFor origin: WKSecurityOrigin,
initiatedByFrame frame: WKFrameInfo,
type: WKMediaCaptureType,
decisionHandler: @escaping (WKPermissionDecision) -> Void) {
decisionHandler(origin.host == "kyc.zoi.network" ? .grant : .deny)
}
// Info.plist: NSCameraUsageDescriptionReact Native WebView
Ku saita mediaCapturePermissionGrantType="grant", allowsInlineMediaPlayback da javaScriptEnabled. Manhajarku tana buƙatar izinin kyamara.
<WebView
source={{ uri: verificationUrl }}
javaScriptEnabled
allowsInlineMediaPlayback
mediaCapturePermissionGrantType="grant"
onMessage={(event) => {
const message = JSON.parse(event.nativeEvent.data);
if (message.source === "zoi-id") {
// Close the webview, then ask your backend for the real status.
}
}}
/>Ba a goyon bayan iframe, saboda izinin kyamara da clickjacking. Ku yi amfani da shafin burauza, taga mai tashi ko webview.
Matsayi
Zama
created- Zaman yana nan, ba a ɗora komai ba tukuna.
in_progress- An ba da amincewa, ana ɗora matakai.
processing- An miƙa, bincike yana gudana.
review- Yana jiran mai bincike da aka horar.
approved- Ƙarshe. An tabbatar da shaidar.
rejected- Ƙarshe. Duba lambobin dalili.
resubmit- Dole mai amfani ya sake yin matakan da ke cikin requiredSteps.
expired- Ba a yanke hukunci na ƙarshe a kan lokaci ba.
cancelled- Abokin hulɗa, mai amfani ko gogewa ne ya soke shi.
Shaida
active- Ana iya amfani da ita.
suspended- An dakatar, misali bayan sabon wanda ake zargi da takunkumi.
expired- Takarda ko lokacin tabbatarwa ya ƙare. Sabon zama zai sake tabbatarwa.
revoked- Ƙarshe.
SDK
SDK na React Native (Expo) tana ba ku client na API mai nau'i, karanta chip ta NFC da binciken na'ura. Ba ta da allo (headless), don haka manhajarku tana da cikakken iko kan fuskokinta da kyamararta. Don sabobinku, ku yi amfani da client masu nau'i don TypeScript, Python, Go, PHP, Java da Ruby.
import { ZoiIdClient, nextStep } from "@zoi/id-sdk";
// clientToken and apiBaseUrl come from your backend (POST /v1/partner/sessions).
const client = new ZoiIdClient({ baseUrl: apiBaseUrl, clientToken });
const session = await client.getSession();
switch (nextStep(session)) {
case "consent": /* show the notice and the biometric choice */ break;
case "document": /* chip read or photos */ break;
case "liveness": /* record the video */ break;
case "address": /* upload a document, then confirm the address */ break;
case "funds": /* answers, then documents when the policy asks */ break;
case "submit": await client.submit(session.revision); break;
case "done": /* wait for your backend to get the webhook */ break;
}Webhook
Muna aika webhook idan zama ko shaida ta canza. Koyaushe ku duba sa hannun kafin ku amince da abin da ke ciki.
- Kowane webhook yana da kan saƙo
Zoi-Id-Signature:t=unix seconds,v1=hex. v1shi ne HMAC-SHA256 na rubutunt.raw bodyda sirrin webhook ɗinku. Yi amfani da jikin saƙo kamar yadda yake, kafin karanta JSON.- Yayin da ake canza sirri, kan saƙon yana da
v1ɗaya ga kowane sirri mai aiki. Karɓi webhook idan ɗaya daga cikinsu ya dace. - Ƙi shi idan
tya yi nisa da yanzu fiye da daƙiƙa 300. - Ana sake gwada isarwar da ta kasa har na awa 72. Kowane sake gwadawa ana sake sa masa hannu da sabon
t. - Shaidu suna da
revision. Yi amfani da abin da ya faru ne kawai idan bugunsa ya fi wanda kuka ajiye sabo.
POST <your webhook URL>
Zoi-Id-Signature: t=1767225600,v1=5f2b...e9
{
"v": 1,
"eventId": "evt_...",
"type": "identity.suspended",
"createdAt": 1767225600000,
"object": "identity",
"externalUserId": "user_42",
"identity": {
"identityId": "idn_...",
"revision": 7,
"status": "suspended",
"level": "standard",
"verifiedAt": 1764547200000,
"validUntil": 1859155200000,
"ageOver18": true,
"captureMethod": "nfc"
}
}Nau'ukan abubuwan da suka faru
session.processingsession.reviewsession.approvedsession.rejectedsession.resubmitsession.expiredsession.cancelledidentity.updatedidentity.suspendedidentity.reinstatedidentity.expiredidentity.revoked
Duba sa hannu a TypeScript
import { createHmac, timingSafeEqual } from "node:crypto";
const TOLERANCE_SECONDS = 300;
export function verifyZoiIdSignature(
rawBody: string,
header: string | null,
secret: string,
nowSeconds = Math.floor(Date.now() / 1000),
): boolean {
if (!header) return false;
let t: string | undefined;
const signatures: Buffer[] = [];
for (const part of header.split(",")) {
const [key, value] = part.trim().split("=");
if (!value) continue;
if (key === "t") t = value;
if (key === "v1" && /^[0-9a-f]+$/i.test(value)) signatures.push(Buffer.from(value, "hex"));
}
if (!t || !/^\d+$/.test(t) || signatures.length === 0) return false;
if (Math.abs(nowSeconds - Number(t)) > TOLERANCE_SECONDS) return false;
const expected = createHmac("sha256", secret).update(`${t}.${rawBody}`).digest();
return signatures.some((sig) => sig.length === expected.length && timingSafeEqual(sig, expected));
}
// Example handler: read the raw body first, parse JSON only after the check.
export async function POST(request: Request) {
const rawBody = await request.text();
const ok = verifyZoiIdSignature(rawBody, request.headers.get("Zoi-Id-Signature"), process.env.ZOI_ID_WEBHOOK_SECRET!);
if (!ok) return new Response("bad signature", { status: 400 });
const event = JSON.parse(rawBody);
// Store event.eventId to skip duplicates, then apply it if the revision is newer.
return new Response(null, { status: 204 });
}Duba sa hannu a Go
package zoiid
import (
"crypto/hmac"
"crypto/sha256"
"encoding/hex"
"strconv"
"strings"
"time"
)
const toleranceSeconds = 300
// VerifySignature checks the Zoi-Id-Signature header against the raw body.
func VerifySignature(rawBody []byte, header, secret string, now time.Time) bool {
var t string
var sigs [][]byte
for _, part := range strings.Split(header, ",") {
key, value, ok := strings.Cut(strings.TrimSpace(part), "=")
if !ok || value == "" {
continue
}
switch key {
case "t":
t = value
case "v1":
if b, err := hex.DecodeString(value); err == nil {
sigs = append(sigs, b)
}
}
}
ts, err := strconv.ParseInt(t, 10, 64)
if err != nil || len(sigs) == 0 {
return false
}
if d := now.Unix() - ts; d > toleranceSeconds || d < -toleranceSeconds {
return false
}
mac := hmac.New(sha256.New, []byte(secret))
mac.Write([]byte(t + "."))
mac.Write(rawBody)
expected := mac.Sum(nil)
for _, sig := range sigs {
if hmac.Equal(sig, expected) {
return true
}
}
return false
}Jerin abubuwan da suka faru
GET /v1/partner/events yana dawo da duk abubuwan da suka faru a kwana 30 da suka wuce, daga mafi tsufa. Aika after tare da nextCursor na ƙarshe don karanta shafi na gaba. Yi amfani da shi bayan dogon katsewa, ko don tabbatar babu abin da ya wuce ku.
GET /v1/partner/events?after=<nextCursor>&limit=100
Authorization: Bearer <partner key>
200 OK
{
"items": [ /* webhook payloads, oldest first */ ],
"nextCursor": "..." // null when there is nothing more
}Rahoton zamba
Ku sanar da mu idan zaman da aka yanke hukunci ya zama zamba, misali bayan chargeback. Rahotanni suna taimaka mana auna amincewar da ba daidai ba. Ba sa canza zaman, shaidar ko sakamakon mai amfani.
- Izini
sessions:write. Ga zaman da aka yanke hukunci kawai (an amince ko an ƙi). Kafin hukunci, kiran yana amsawa da 409. - Jikin saƙo maras komai yana ba da rahoton
confirmed_fraudda rukuniother.statuskuma zai iya zamasuspected_fraud, kocleareddon janye rahotonku. - Rukunai:
forged_document,impostor,deepfake_or_replay,synthetic_identity,account_takeoverdaother. Babu rukuni tare dacleared. noterubutu ne na kyauta ga manazartanmu, haruffa 1000 a mafi yawa. Kada ku taɓa saka sunaye, lambobin takardu ko wasu bayanan sirri a ciki.- Sabon rahoto yana amsawa da 201. Idan aka sake aika rahoto iri ɗaya, yana dawo da wanda aka ajiye da 200. Aika
Idempotency-Keydon sake gwadawa lafiya. Rahotanni 20 a mafi yawa a kowane zama. - Rahoto iri ɗaya yana nan da danna ɗaya a shafin zama na dashboard.
POST /v1/partner/sessions/ses_.../fraud-reports
Authorization: Bearer <partner key>
Content-Type: application/json
Idempotency-Key: chargeback-8812
{
"status": "confirmed_fraud",
"category": "impostor",
"note": "Chargeback on the first deposit"
}
201 Created
{
"id": "flb_...",
"sessionId": "ses_...",
"status": "confirmed_fraud",
"category": "impostor",
"noteKept": true,
"createdAt": 1767225600000
}Gogewa
DELETE /v1/partner/users/:externalUserId yana goge bayanan mai amfani idan ya rufe asusunsa ko ya nemi a goge. Amsar tana lissafa abin da aka goge yanzu, da abin da aka ajiye, dalili da kuma har zuwa yaushe.
DELETE /v1/partner/users/user_42
Authorization: Bearer <partner key>
200 OK
{
"deleted": ["images", "chip_files", "video", "personal_data", "address"],
"retained": [
{ "category": "dedup_keys", "reason": "fraud_prevention", "until": 1924992000000 },
{ "category": "sanctions_screening_records", "reason": "legal_obligation", "until": 2082758400000 }
],
"backupsPurgedWithinDays": 30
}Kurakurai
Kowane kuskure yana da tsari ɗaya da matsayin HTTP tsayayye ga kowace lamba.
{
"error": {
"code": "step_not_allowed",
"message": "This step is not allowed now.",
"requestId": "req_..."
}
}| Lamba | HTTP | Ma'ana |
|---|---|---|
bad_request | 400 | Buƙatar ba ta dace da yarjejeniya ba. |
unauthorized | 401 | Makulli ko alama babu ko ba daidai ba. |
token_expired | 401 | Alamar abokin ciniki ta ƙare. Ƙirƙiri sabuwa daga sabar ku. |
forbidden | 403 | Wannan makullin ba shi da izinin yin wannan. |
not_found | 404 | Babu irin wannan zama ko mai amfani. |
session_closed | 409 | Zaman ya ƙare. Ba za a ƙara ɗorawa ba. |
step_not_allowed | 409 | Tsari ba daidai ba, ko ba a buƙatar matakin yanzu. |
revision_conflict | 409 | Bugun zaman ya canza. Sake karanta shi. |
idempotency_conflict | 409 | An yi amfani da Idempotency-Key ɗaya da wata buƙata daban. |
challenge_expired | 410 | Ƙalubalen ya ƙare ko an riga an yi amfani da shi. Nemi sabo. |
payload_too_large | 413 | Abin da aka ɗora ya yi girma sosai. |
unsupported_media_type | 415 | Ba a karɓar irin wannan fayil. |
rate_limited | 429 | Buƙatu sun yi yawa. Sake gwadawa daga baya. |
internal | 500 | Wani abu ya lalace a ɓangarenmu. |
dependency_unavailable | 503 | Wani sabis da muke buƙata ba ya aiki. Sake gwadawa daga baya. |
Lambobin dalili
Zama suna ɗauke da reasonCodes idan suna buƙatar sake miƙawa ko an ƙi su. Nuna saƙonku da aka fassara ga kowace lamba. Kada ku taɓa nuna wa masu amfani lambar kamar yadda take.
consent_missingconsent_withdrawnattestation_faileddocument_expireddocument_unreadabledocument_not_supporteddocument_suspected_tamperingdocument_number_visiblechip_verification_failedchip_proof_missingchip_data_mismatchmrz_invalidphoto_qualityface_not_foundface_mismatchliveness_failedunderagelocation_not_supportedresidence_not_supportedsanctions_matchpep_reviewduplicate_identitypossible_duplicatedeclaration_requires_reviewuser_requested_reviewreviewer_otheraddress_unreadableaddress_document_too_oldaddress_document_not_acceptedaddress_name_mismatchaddress_signature_requiredfunds_document_unreadablefunds_document_too_oldfunds_document_not_acceptedfunds_more_evidencefunds_evidence_rejected