Initiate a KYC verification session for a person entity
Documentation Index
Fetch the complete documentation index at: https://docs.gu1.ai/llms.txt
Use this file to discover all available pages before exploring further.
Key Points in the Flow
POST /api/entities (with countryCode). If the taxId already exists in the organization, the API returns 409 and does not create a duplicate; use the existing entity’s ID.entityId to create a KYC validation.global_gueno_validation_kyc is the standard code for full KYC verification and works in sandbox with no extra setup.providerSessionUrl. Send that URL to your user; they complete the flow on the provider’s hosted page (document + selfie). The URL is valid until expiresAt.pending status and moments later updates the validation and sends webhooks (e.g. kyc.validation_approved or kyc.validation_rejected) with no user step. Important: You must have a webhook endpoint configured to receive the responses - see Sandbox mock data.kyc.validation_approved, kyc.validation_rejected, kyc.validation_abandoned, kyc.validation_expired, kyc.validation_cancelled (not a single “completed” event). The payload is the full validation object.GET /api/kyc/validations/:id for status updates.global_gueno_validation_kyc)taxId) matches one of our test values, the API returns an immediate mock result (e.g. approved, rejected, cancelled) and sends the corresponding webhooks—no real verification is run. Document format does not matter (e.g. 99.990.001 and 99990001 both work).
For the full list of test document numbers by format (Argentina DNI/CUIT, Brazil CPF/CNPJ), expected outcomes, and example responses, see Sandbox mock data.
isCurrent: truetrue, enables RENAPER double-check for Argentina entities. After the KYC provider approves, the API validates the document against the official Argentine registry (RENAPER). If the check fails, the validation is set to rejected and the reason is stored as a code in metadata.warnings and in metadata.responseDoubleChecks.renaper.errorCode.Type: boolean (e.g. ?doubleCheckRenaper=true)Requirements: Entity must be from Argentina (countryCode === 'AR'), and the organization must have RENAPER credentials configured in System Settings → Organizations → Config. If credentials are missing, the creation may fail or the double-check will be skipped depending on configuration.string (uuid)global_gueno_validation_kyc (recommended for most use cases)Type: string (min length: 1)integrationCode identifies which KYC provider integration to use for verification. Think of it as selecting the verification service.Available Integration Codes:global_gueno_validation_kyc - Recommended - Full KYC with document + selfie + face match + livenessglobal_gueno_validation_kyc works immediately with no configuration.doubleCheckRenaper. When true, enables RENAPER double-check for Argentina. Can be sent in the body or as ?doubleCheckRenaper=true. If both are present, the query param takes precedence.metadata.omitWarnings. After the session completes, if the validation would be in_review, warnings is non-empty, and every code in warnings appears in this list, the API sets status to approved and keeps all warnings for display and audit. If any warning is not in omitWarnings, status stays in_review. If warnings is empty while status is in_review, this rule does not auto-approve. Invalid or unknown codes in the request body return 400. When the rule applies, metadata.kycOmitWarningsApplied records the decision timestamp and matched warnings.Type: string[] (each element must be an allowlisted code; duplicates are ignored)metadata.doubleChecks.renaper is set to true at creation. After the KYC provider approves and the double-check runs, metadata.responseDoubleChecks.renaper is populated (see RENAPER double-check below).
pending - Validation created, waiting for customer to startin_progress - Customer is completing verification (filling out form)in_review - Verification completed, requires manual review from compliance teamapproved - Verification successfulrejected - Verification failedexpired - Verification session expired (e.g. after 7 days)abandoned - Customer started but didn’t completecancelled - Validation manually cancelleddoubleChecks: { renaper: true }. After approval and double-check execution, may include responseDoubleChecks.renaper (see RENAPER double-check section).decision. To download files (images, video), use GET /api/kyc/validations/:id/media?key=... with Authorization: Bearer. Full details: Get KYC validation media.doubleCheckRenaper is true and the entity is from Argentina, after the KYC provider approves the validation, the API runs a cross-check against the official Argentine registry (RENAPER). If this check fails, the validation is set to rejected and the reason is stored in metadata.
{ "entityId": "...", "integrationCode": "...", "doubleCheckRenaper": true }POST /api/kyc/validations?doubleCheckRenaper=true with the same body (without the field). Query param overrides body if both are present.metadata.doubleChecks.renaper: true.personal_number from KYC) vs id_tramite_principal from RENAPER.metadata.responseDoubleChecks.renaper (and when the check fails, a code is also added to metadata.warnings for display).
Shape of metadata.responseDoubleChecks.renaper:
| Field | Type | Description |
|---|---|---|
verified | boolean | true if the double-check passed. |
matchResult | string | "match" | "mismatch" | "error". |
verifiedAt | string | ISO timestamp when the check was run. |
personalNumber | string | Transaction number from KYC (normalized). |
idTramitePrincipal | string | Transaction number from RENAPER. |
renaperData | object | Raw RENAPER API response (for debugging). |
errorCode | string | Present when failed; see error codes below. |
error | string | Optional legacy message; prefer using errorCode and translating in your UI. |
metadata.warnings contains one of the following codes (and metadata.responseDoubleChecks.renaper.errorCode is set to the same value). Your UI should translate these codes into user-facing messages.
| Code | Meaning |
|---|---|
RENAPER_DNI_MISSING | No document number (DNI) was obtained from the KYC verification. |
RENAPER_GENDER_MISSING | Gender (M/F) is required to call RENAPER and was not available. |
RENAPER_VERIFICATION_UNAVAILABLE | Could not complete the cross-check with the registry (e.g. network/API error). Retry later. |
RENAPER_DNI_NOT_MATCH | The document number from the verification does not match the official registry. |
RENAPER_TRAMITE_DATA_MISSING | Transaction number could not be compared (missing from KYC or RENAPER response). |
RENAPER_TRAMITE_ID_NOT_MATCH | The document transaction number does not match the registry. Common when the person used an older copy of the ID, the document is expired, or it was reissued; they should verify again with their current, valid ID. |
rejected. The reason is not a free-text message in the API response; it is the code in metadata.warnings and metadata.responseDoubleChecks.renaper.errorCode. Use the table above to map codes to your own copy or use the translation keys in the dashboard (e.g. kyc.rejectionReasonCodes.*).
providerSessionUrldecision and download files — see Get KYC validation media