{"components":{"schemas":{"Verification":{"properties":{"attack_detected":{"type":"boolean"},"attack_type":{"nullable":true,"type":"string"},"completed_at":{"format":"date-time","nullable":true,"type":"string"},"confidence_score":{"nullable":true,"type":"number"},"created_at":{"format":"date-time","type":"string"},"liveness_score":{"nullable":true,"type":"number"},"processing_time_ms":{"nullable":true,"type":"integer"},"reasons":{"items":{"properties":{"code":{"type":"string"},"message":{"type":"string"}},"type":"object"},"type":"array"},"reference":{"nullable":true,"type":"string"},"risk_level":{"nullable":true,"type":"string"},"session_id":{"type":"string"},"similarity_score":{"nullable":true,"type":"number"},"status":{"enum":["pending","verified","failed","suspicious","review"],"type":"string"},"type":{"type":"string"}},"type":"object"}},"securitySchemes":{"ApiKey":{"in":"header","name":"X-API-Key","type":"apiKey"}}},"info":{"description":"Identity verification: face match, liveness, document reading, sanctions screening. Authenticate with the X-API-Key header. Sandbox keys (sk_test_) use the sandbox server and return scripted results. Every response carries X-Request-Id.","title":"VerifyID API","version":"1.0.0"},"openapi":"3.0.3","paths":{"/screen":{"post":{"description":"Requires the `screen` scope (keys created without scopes have all of them).","parameters":[{"description":"Any unique string. A repeat of the same request within 24 hours returns the first response instead of running again.","in":"header","name":"Idempotency-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"birth_date":"1990-04-12","full_name":"Jean Paul Mbarga"},"schema":{"properties":{"birth_date":{"example":"1990-04-12","type":"string"},"full_name":{"type":"string"}},"required":["full_name"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"OK"},"401":{"description":"Missing, invalid or expired API key"},"403":{"description":"Key lacks the scope, or the IP is not on the allow list"},"429":{"description":"Rate limit exceeded"}},"summary":"Screen a name against OFAC and UN sanctions lists","tags":["screen"]}},"/verifications":{"get":{"description":"Requires the `read` scope (keys created without scopes have all of them).","parameters":[{"in":"query","name":"page","schema":{"default":1,"type":"integer"}},{"in":"query","name":"per_page","schema":{"default":20,"maximum":100,"type":"integer"}},{"in":"query","name":"status","schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"OK"},"401":{"description":"Missing, invalid or expired API key"},"403":{"description":"Key lacks the scope, or the IP is not on the allow list"},"429":{"description":"Rate limit exceeded"}},"summary":"List verifications","tags":["read"]}},"/verifications/{session_id}":{"get":{"description":"Requires the `read` scope (keys created without scopes have all of them).","parameters":[{"in":"path","name":"session_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Verification"}}},"description":"OK"},"401":{"description":"Missing, invalid or expired API key"},"403":{"description":"Key lacks the scope, or the IP is not on the allow list"},"429":{"description":"Rate limit exceeded"}},"summary":"Get one verification","tags":["read"]}},"/verify/face-match":{"post":{"description":"Requires the `verify` scope (keys created without scopes have all of them).","parameters":[{"description":"Any unique string. A repeat of the same request within 24 hours returns the first response instead of running again.","in":"header","name":"Idempotency-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"country":"CM","id_image":"<base64>","id_type":"national_id","selfie_image":"<base64>"},"schema":{"properties":{"country":{"example":"CM","type":"string"},"end_user_agent":{"description":"Their browser user agent (optional)","type":"string"},"end_user_ip":{"description":"IP address of the person being verified (optional)","type":"string"},"id_back_image":{"description":"Image as base64 (JSON) or a file (multipart/form-data)","type":"string"},"id_image":{"description":"Image as base64 (JSON) or a file (multipart/form-data)","type":"string"},"id_type":{"enum":["national_id","passport","drivers_license","residence_permit"],"type":"string"},"selfie_image":{"description":"Image as base64 (JSON) or a file (multipart/form-data)","type":"string"}},"required":["id_image","selfie_image"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"OK"},"401":{"description":"Missing, invalid or expired API key"},"403":{"description":"Key lacks the scope, or the IP is not on the allow list"},"429":{"description":"Rate limit exceeded"}},"summary":"Compare an ID photo with a selfie","tags":["verify"]}},"/verify/kyc":{"post":{"description":"Requires the `verify` scope (keys created without scopes have all of them).","parameters":[{"description":"Any unique string. A repeat of the same request within 24 hours returns the first response instead of running again.","in":"header","name":"Idempotency-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"country":"CM","frames":["<base64>","<base64>","<base64>"],"id_image":"<base64>"},"schema":{"properties":{"challenge":{"type":"boolean"},"country":{"example":"CM","type":"string"},"end_user_agent":{"description":"Their browser user agent (optional)","type":"string"},"end_user_ip":{"description":"IP address of the person being verified (optional)","type":"string"},"frames":{"description":"Selfie video frames, base64. Multipart: repeat frames[]","items":{"type":"string"},"minItems":3,"type":"array"},"id_back_image":{"description":"Image as base64 (JSON) or a file (multipart/form-data)","type":"string"},"id_image":{"description":"Image as base64 (JSON) or a file (multipart/form-data)","type":"string"},"id_type":{"enum":["national_id","passport","drivers_license","residence_permit"],"type":"string"}},"required":["id_image","frames"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"OK"},"401":{"description":"Missing, invalid or expired API key"},"403":{"description":"Key lacks the scope, or the IP is not on the allow list"},"429":{"description":"Rate limit exceeded"}},"summary":"Full KYC: document, face match and liveness","tags":["verify"]}},"/verify/kyc/generate":{"post":{"description":"Requires the `verify` scope (keys created without scopes have all of them).","parameters":[{"description":"Any unique string. A repeat of the same request within 24 hours returns the first response instead of running again.","in":"header","name":"Idempotency-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"expires_in_minutes":60,"redirect_url":"https://example.com/verification/done","reference":"business-42","verification_type":"full_kyc"},"schema":{"properties":{"expires_in_minutes":{"default":60,"maximum":10080,"minimum":5,"type":"integer"},"redirect_url":{"description":"Where to send the person when they finish. We add session_id, status and reference as query parameters.","format":"uri","type":"string"},"reference":{"description":"Your own id for the person being verified. Returned in the result and in webhooks.","maxLength":120,"type":"string"},"verification_type":{"enum":["full_kyc","face_match","liveness"],"type":"string"}},"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"OK"},"401":{"description":"Missing, invalid or expired API key"},"403":{"description":"Key lacks the scope, or the IP is not on the allow list"},"429":{"description":"Rate limit exceeded"}},"summary":"Create a hosted verification link","tags":["verify"]}},"/verify/liveness":{"post":{"description":"Requires the `verify` scope (keys created without scopes have all of them).","parameters":[{"description":"Any unique string. A repeat of the same request within 24 hours returns the first response instead of running again.","in":"header","name":"Idempotency-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"challenge":true,"frames":["<base64>","<base64>","<base64>"]},"schema":{"properties":{"challenge":{"description":"true if the capture used the guided head turn","type":"boolean"},"frames":{"description":"Selfie video frames, base64. Multipart: repeat frames[]","items":{"type":"string"},"minItems":3,"type":"array"}},"required":["frames"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"OK"},"401":{"description":"Missing, invalid or expired API key"},"403":{"description":"Key lacks the scope, or the IP is not on the allow list"},"429":{"description":"Rate limit exceeded"}},"summary":"Check that a capture is a live person","tags":["verify"]}},"/verify/niu-lookup":{"post":{"description":"Requires the `niu` scope (keys created without scopes have all of them).","parameters":[{"description":"Any unique string. A repeat of the same request within 24 hours returns the first response instead of running again.","in":"header","name":"Idempotency-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"birth_date":"12/04/1990","full_name":"Jean Paul Mbarga"},"schema":{"properties":{"birth_date":{"example":"27/03/1996","type":"string"},"full_name":{"type":"string"}},"required":["full_name","birth_date"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"OK"},"401":{"description":"Missing, invalid or expired API key"},"403":{"description":"Key lacks the scope, or the IP is not on the allow list"},"429":{"description":"Rate limit exceeded"}},"summary":"Look up a Cameroonian taxpayer number (NIU)","tags":["niu"]}},"/webhooks":{"get":{"description":"Requires the `webhooks` scope (keys created without scopes have all of them).","responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"OK"},"401":{"description":"Missing, invalid or expired API key"},"403":{"description":"Key lacks the scope, or the IP is not on the allow list"},"429":{"description":"Rate limit exceeded"}},"summary":"List webhooks","tags":["webhooks"]},"post":{"description":"Requires the `webhooks` scope (keys created without scopes have all of them).","parameters":[{"description":"Any unique string. A repeat of the same request within 24 hours returns the first response instead of running again.","in":"header","name":"Idempotency-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"events":["verification.completed"],"url":"https://example.com/hooks/verifyid"},"schema":{"properties":{"events":{"default":["verification.completed"],"items":{"type":"string"},"type":"array"},"secret":{"type":"string"},"url":{"format":"uri","type":"string"}},"required":["url"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"OK"},"401":{"description":"Missing, invalid or expired API key"},"403":{"description":"Key lacks the scope, or the IP is not on the allow list"},"429":{"description":"Rate limit exceeded"}},"summary":"Create a webhook","tags":["webhooks"]}},"/webhooks/{wh_id}":{"delete":{"description":"Requires the `webhooks` scope (keys created without scopes have all of them).","parameters":[{"in":"path","name":"wh_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"OK"},"401":{"description":"Missing, invalid or expired API key"},"403":{"description":"Key lacks the scope, or the IP is not on the allow list"},"429":{"description":"Rate limit exceeded"}},"summary":"Delete a webhook","tags":["webhooks"]}}},"security":[{"ApiKey":[]}],"servers":[{"description":"Live","url":"https://verifyid.vyloxi.com/api/v1"},{"description":"Sandbox","url":"https://verifyid.vyloxi.com/api/sandbox/v1"}]}
