> ## Documentation Index
> Fetch the complete documentation index at: https://docs.didit.me/llms.txt
> Use this file to discover all available pages before exploring further.

# API de detección de fraude: Fraud Check

> La API Fraud Check de Didit planifica y ejecuta en una solicitud las comprobaciones elegidas de identidad, riesgo de contacto, enriquecimiento y red.

Envía identificadores introducidos manualmente y atributos de identidad declarados, selecciona las comprobaciones que quieres ejecutar y revisa cada resultado por separado.
Usa primero [Planificar una comprobación de fraude](https://docs.didit.me/es/standalone-apis/fraud-check-plan.md) para revisar los requisitos de entrada y los cargos estimados.

## Elige un perfil

Fija `profile_version` para que los valores predeterminados seleccionados y la política de decisión sean explícitos.
El perfil predeterminado es `standard`, versión `2026-08-27`.
La versión `2026-09-14` añade el enriquecimiento social opcional de correo electrónico y teléfono, y registra cada comprobación completada como una sesión nativa de Verificación de usuarios.
En esa versión, los complementos de pago son opcionales y debes activarlos expresamente.
La versión `2026-09-14.1` también habilita las consultas de identificadores en la red global de fraude para las organizaciones con el plan Enterprise que comparten datos a nivel global.
La versión `2026-09-14.2` añade una comprobación opcional de selfie con una referencia de CPF para Brasil.
Las versiones anteriores mantienen su comportamiento original.

Los perfiles actuales admiten riesgo de correo electrónico, riesgo de teléfono, riesgo de IP, validación de bases de datos aptas y el historial de la red privada de tu aplicación.
La vinculación de identidad basada en selfie requiere la versión `2026-09-14.2`.
Si la seleccionas en versiones anteriores, se devuelve `not_available_in_profile_version`.

## Identidad declarada y contexto

Coloca el correo electrónico, el teléfono y los identificadores gubernamentales en `subject.identifiers`.
Los identificadores gubernamentales requieren su país emisor; también puede ser necesario indicar un emisor cuando los números solo son únicos dentro de una región.
Coloca los nombres, la fecha de nacimiento, la nacionalidad y la dirección en `subject.attributes`.
Son declaraciones que se comparan cuando una fuente seleccionada lo admite, no hechos verificados por el simple hecho de haberse enviado.

Usa `context` para la dirección IP, el agente de usuario, la finalidad, el país del intento y cualquier declaración de consentimiento requerida.
Así se separa la información sobre el intento de verificación de la información sobre la persona.
Para las comprobaciones biométricas compatibles, proporciona `subject.selfie` como JPEG, PNG o WebP codificado en base64, de hasta 6 MB.
También se acepta un URI de datos de la misma imagen.
No envíes una imagen de referencia, una URL remota ni una clave de almacenamiento.

## Selfie e identificador declarado

Selecciona `biometric_identity`, envía un identificador brasileño `tax_number` y una selfie, y confirma `context.consent_obtained`.
La referencia comprueba si esa selfie pertenece al titular del CPF declarado.
Si falta el consentimiento, se devuelve `consent_required`, y los países no admitidos devuelven `unsupported_region`.
El módulo tiene un precio por comprobación basado en la tarifa de validación de base de datos de tu organización; revisa el plan antes de ejecutarlo.

Cuando la referencia responde, `identity_relationship.result` es `match`, `mismatch` o `inconclusive`.
Una respuesta no concluyente requiere revisión y nunca se trata como una falta de coincidencia.
El resultado solo establece la relación entre la selfie y el CPF.
No valida un nombre ni una fecha de nacimiento enviados, no realiza una prueba de vida ni busca un rostro en internet ni en la red global de fraude.
Los nombres y la fecha de nacimiento siguen siendo declaraciones, salvo que otra fuente seleccionada aporte evidencia para esos campos.
Los tiempos de espera agotados y los errores de la fuente son resultados no disponibles y no se facturan.
Las respuestas no concluyentes completadas se facturan con la misma tarifa de comprobación de referencia.
Esta comprobación no incluye la selfie en el resultado ni la almacena como contenido multimedia de la sesión.

## Selecciona las comprobaciones

`checks.include` selecciona módulos, y `checks.exclude` tiene prioridad.
Una lista `include` explícitamente vacía desactiva todo el trabajo opcional; la normalización se sigue ejecutando.
Si omites `include`, se usan los valores predeterminados del perfil fijado.
El enriquecimiento social de correo electrónico y de teléfono se selecciona por separado con `email_social` y `phone_social`.
Requieren un identificador válido correspondiente y no envían un OTP.

```json theme={null}
{
  "profile_version": "2026-09-14.1",
  "client_reference": "review-attempt-001",
  "subject": {
    "identifiers": [
      { "type": "email", "value": "applicant@example.com" }
    ],
    "attributes": { "first_name": "Alex", "last_name": "Example" }
  },
  "checks": { "include": ["networks_same_org", "networks_cross_org", "email_risk"] }
}
```

## Interpreta los resultados sin mezclarlos

Cada módulo informa de su estado de ejecución, su motivo y sus unidades facturables.
`not_requested`, `excluded_by_caller`, `missing_required_input` y `source_unavailable` describen resultados distintos.
Una fuente ausente no es una falta de coincidencia de identidad ni un resultado de riesgo cero.

`attribute_evidence` describe la evidencia a nivel de campo, mientras que `risk` mantiene separadas las dimensiones de identidad, contacto, dispositivo, comportamiento y red de fraude.
Un correo electrónico, un dispositivo u otro identificador compartido es una conexión observada, no una prueba de que dos cuentas pertenezcan a la misma persona ni de que hayan cometido fraude.
`recommendation` es la recomendación de la comprobación; no cambia el estado de ningún otro registro.
Los resultados del enriquecimiento social aparecen en `enrichment`, y los resultados no disponibles se distinguen de los completados.

## Red global de fraude

Selecciona `networks_cross_org` para consultar en la red compartida los identificadores admitidos: correos electrónicos, teléfonos e identificadores de documento con el espacio de nombres correcto.
La consulta requiere el plan Enterprise y que el modo de compartición de tu organización esté configurado en `global`.
Si no se cumplen estos requisitos, el plan informa del módulo con `available: false` y `availability_reason: "entitlement_required"`, y una comprobación que lo seleccione lo omite con el estado `skipped` y el motivo `entitlement_required`.
El mismo motivo se aplica cuando Networks no está habilitado para tu organización.
Las aplicaciones de sandbox no están limitadas por el plan ni por el modo de compartición: con un identificador admitido, el módulo se ejecuta y devuelve un resultado de ejemplo vacío.
La consulta usa el presupuesto de lecturas existente de la organización y registra una auditoría de la lectura.
No tiene ningún cargo por consulta.
Planificar una comprobación no consulta el índice compartido ni consume su presupuesto de lecturas.

`network.cross_organization` contiene `signals_checked` y los `insights` agregados divulgados cuando la comprobación se completa.
Cada insight contiene el tipo de señal, las clases de resultado, el número de contribuyentes, la categoría de antigüedad y, solo cuando la divulgación está habilitada, las categorías de sector.
Nunca identifica a otra organización, cuenta, persona o verificación.
Los resultados por debajo del umbral de divulgación se omiten; una lista vacía no demuestra la ausencia de historial de fraude.
Una señal compartida divulgada genera una recomendación de revisión, nunca un rechazo automático ni una coincidencia de identidad.

Una consulta no disponible informa de su motivo por separado de una consulta completada sin resultados.
Si más adelante tu organización pierde el acceso entre organizaciones, por ejemplo tras un cambio de plan o cuando la compartición deja de estar en `global`, la recuperación de resultados, los reintentos y los detalles de la sesión ocultan los agregados compartidos y la evidencia de riesgo derivada de ellos.
La recomendación original se mantiene como decisión histórica; las lecturas no cambian el estado de la verificación.

## Sesiones, reintentos y cargos

`check_id` recupera el resultado almacenado mediante [Get a Fraud Check](https://docs.didit.me/es/standalone-apis/fraud-check-result.md).
Cuando está presente, `request_id` identifica su sesión de verificación nativa.
Las versiones `2026-09-14`, `2026-09-14.1` y `2026-09-14.2` siempre crean esa sesión, incluso cuando solo se selecciona el historial de la red privada.

Reutilizar `client_reference` con el mismo cuerpo de solicitud devuelve el resultado original sin otra ejecución ni otro cargo mientras exista esa comprobación.
Un cuerpo distinto con la misma referencia devuelve `409`.
Si la ejecución sigue en curso, reintenta la misma solicitud tras el intervalo indicado en `Retry-After` de la respuesta.
Eliminar la verificación asociada también elimina el resultado de Fraud Check; a partir de entonces, la recuperación devuelve `404`.
Una comprobación eliminada durante la ejecución no puede publicar un resultado completado.

Los precios proceden de las tarifas prepago o contractuales vigentes de tu organización.
Los módulos no disponibles y omitidos no se facturan, y el historial de la red privada no tiene cargo por comprobación.
Las comprobaciones en sandbox usan respuestas de ejemplo, sin llamadas a proveedores que generen cargos ni cargos.


## OpenAPI

````yaml es/openapi-25.json POST /v3/fraud/checks/
openapi: 3.0.0
info:
  version: 3.0.0
  title: Didit Verification API
  description: API de verificación de identidad. Autentícate con el encabezado x-api-key.
servers:
  - url: https://verification.didit.me
security: []
tags: []
paths:
  /v3/fraud/checks/:
    post:
      tags:
        - Fraud Check
      summary: Ejecutar una comprobación de fraude
      description: >-
        Envía uno o varios identificadores tipados y recibe en una sola
        respuesta la normalización, un enriquecimiento actualizado, la
        validación con fuentes oficiales cuando el país y el tipo de
        identificador están cubiertos, dimensiones de riesgo independientes y
        una recomendación.


        Estos perfiles admiten comprobaciones de identificadores. La vinculación
        de identidad basada en selfie (`biometric_identity`) requiere la versión
        de perfil `2026-09-14.2` y un CPF brasileño; solo se ejecuta con el
        consentimiento del usuario y cuando tu organización tiene derecho a
        ella. Las versiones anteriores la notifican como
        `not_available_in_profile_version`. Los módulos que no pueden ejecutarse
        se notifican como omitidos con un motivo determinista; una fuente que no
        pudo responder nunca se notifica como una discrepancia de identidad.
      operationId: create_fraud_check
      requestBody:
        content:
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/FraudCheckRequestRequest'
          application/json:
            schema:
              $ref: '#/components/schemas/FraudCheckRequestRequest'
            example:
              client_reference: review-attempt-001
              subject:
                identifiers:
                  - type: email
                    value: applicant@example.com
                attributes:
                  first_name: Alex
                  last_name: Example
              checks:
                include:
                  - networks_same_org
                  - networks_cross_org
                  - email_risk
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/FraudCheckRequestRequest'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FraudCheckResponse'
          description: ''
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FraudClientCredentialsErrorMessage'
          description: ''
        '403':
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/FraudClientCredentialsForbiddenErrorMessage
          description: ''
        '409':
          description: >-
            Conflicto, devuelto sin cargo: el `client_reference` ya se usó con
            un cuerpo de solicitud diferente; todavía hay en curso una
            comprobación con el mismo `client_reference` (vuelve a intentarlo
            tras `Retry-After` segundos con la misma referencia); o la
            verificación en la que se registra esta comprobación se eliminó
            antes de que la comprobación terminara.
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                required:
                  - error
              examples:
                different_body:
                  summary: Referencia reutilizada con un cuerpo distinto
                  value:
                    error: >-
                      client_reference has already been used with a different
                      request body.
                still_running:
                  summary: >-
                    Todavía se está ejecutando una comprobación con esta
                    referencia
                  value:
                    error: >-
                      A check with this client_reference is already running.
                      Retry with the same reference later.
                verification_deleted:
                  summary: >-
                    La verificación se eliminó antes de que se completara la
                    comprobación
                  value:
                    error: This verification was deleted before the check completed.
          headers:
            Retry-After:
              description: >-
                Segundos que hay que esperar antes de reintentar; se envía
                cuando una comprobación con el mismo `client_reference` aún está
                en curso.
              schema:
                type: integer
      security:
        - ApiKeyAuth: []
        - BearerAuth: []
      x-codeSamples:
        - lang: python
          label: Python
          source: |-
            from didit import Didit

            # Reads DIDIT_API_KEY.
            client = Didit()

            result = client.fraud_checks.create(
                client_reference="review-attempt-001",
                subject={
                    "identifiers": [{
                        "type": "email",
                        "value": "applicant@example.com",
                    }],
                    "attributes": {
                        "first_name": "Alex",
                        "last_name": "Example",
                    },
                },
                checks={
                    "include": ["networks_same_org", "networks_cross_org", "email_risk"],
                },
            )
            print(result)
        - lang: javascript
          label: Node.js
          source: |-
            import Didit from "@didit-protocol/sdk-node";

            // Reads DIDIT_API_KEY.
            const didit = new Didit();

            const result = await didit.fraudChecks.create({
              client_reference: "review-attempt-001",
              subject: {
                identifiers: [{
                  type: "email",
                  value: "applicant@example.com",
                }],
                attributes: {
                  first_name: "Alex",
                  last_name: "Example",
                },
              },
              checks: {
                include: ["networks_same_org", "networks_cross_org", "email_risk"],
              },
            });
            console.log(result);
        - lang: go
          label: Go
          source: "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.FraudChecks.Create(ctx, didit.FraudCheckRequestRequest{\n\tClientReference: didit.String(\"review-attempt-001\"),\n\tSubject: didit.FraudCheckSubjectRequest{\n\t\tIdentifiers: []didit.FraudCheckIdentifierRequest{{\n\t\t\tType:  didit.FraudTypeEnum(\"email\"),\n\t\t\tValue: \"applicant@example.com\",\n\t\t}},\n\t\tAttributes: didit.Some(didit.FraudCheckAttributesRequest{\n\t\t\tFirstName: didit.String(\"Alex\"),\n\t\t\tLastName:  didit.String(\"Example\"),\n\t\t}),\n\t},\n\tChecks: didit.Some(didit.FraudCheckModuleSelectionRequest{\n\t\tInclude: didit.Some([]didit.FraudExcludeEnum{didit.FraudExcludeEnum(\"networks_same_org\"), didit.FraudExcludeEnum(\"networks_cross_org\"), didit.FraudExcludeEnum(\"email_risk\")}),\n\t}),\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
        - lang: java
          label: Java
          source: >-
            import java.util.List;

            import me.didit.Didit;

            import me.didit.types.FraudCheckAttributesRequest;

            import me.didit.types.FraudCheckIdentifierRequest;

            import me.didit.types.FraudCheckModuleSelectionRequest;

            import me.didit.types.FraudCheckRequestRequest;

            import me.didit.types.FraudCheckSubjectRequest;

            import me.didit.types.FraudExcludeEnum;

            import me.didit.types.FraudTypeEnum;


            // Reads DIDIT_API_KEY.

            Didit client = new Didit();


            var result =
            client.fraudChecks().create(FraudCheckRequestRequest.builder()
                    .clientReference("review-attempt-001")
                    .subject(FraudCheckSubjectRequest.builder()
                            .identifiers(List.of(FraudCheckIdentifierRequest.builder()
                                    .type(FraudTypeEnum.of("email"))
                                    .value("applicant@example.com")
                                    .build()))
                            .attributes(FraudCheckAttributesRequest.builder()
                                    .firstName("Alex")
                                    .lastName("Example")
                                    .build())
                            .build())
                    .checks(FraudCheckModuleSelectionRequest.builder()
                            .include(List.of(FraudExcludeEnum.of("networks_same_org"), FraudExcludeEnum.of("networks_cross_org"), FraudExcludeEnum.of("email_risk")))
                            .build())
                    .build());
            System.out.println(result);
        - lang: php
          label: PHP
          source: |-
            <?php

            require 'vendor/autoload.php';

            use Didit\DiditClient;

            // Reads DIDIT_API_KEY.
            $didit = new DiditClient();

            $result = $didit->fraudChecks->create([
                'client_reference' => 'review-attempt-001',
                'subject' => [
                    'identifiers' => [[
                        'type' => 'email',
                        'value' => 'applicant@example.com',
                    ]],
                    'attributes' => [
                        'first_name' => 'Alex',
                        'last_name' => 'Example',
                    ],
                ],
                'checks' => [
                    'include' => ['networks_same_org', 'networks_cross_org', 'email_risk'],
                ],
            ]);
            print_r($result->toArray());
        - lang: ruby
          label: Ruby
          source: |-
            require "didit"

            # Reads DIDIT_API_KEY.
            didit = Didit::Client.new

            result = didit.fraud_checks.create(
              client_reference: "review-attempt-001",
              subject: {
                identifiers: [{
                  type: "email",
                  value: "applicant@example.com",
                }],
                attributes: {
                  first_name: "Alex",
                  last_name: "Example",
                },
              },
              checks: {
                include: ["networks_same_org", "networks_cross_org", "email_risk"],
              }
            )
            puts result.to_h
        - lang: csharp
          label: .NET
          source: >-
            using System;

            using System.Text.Json;

            using Didit;


            // Reads DIDIT_API_KEY.

            using var client = new DiditClient();


            var result = await client.FraudChecks.CreateAsync(new
            FraudCheckRequestRequest

            {
                ClientReference = "review-attempt-001",
                Subject = new()
                {
                    Identifiers = new FraudCheckIdentifierRequest[]
                    {
                        new()
                        {
                            Type = "email",
                            Value = "applicant@example.com",
                        },
                    },
                    Attributes = new FraudCheckAttributesRequest
                    {
                        FirstName = "Alex",
                        LastName = "Example",
                    },
                },
                Checks = new FraudCheckModuleSelectionRequest
                {
                    Include = new FraudExcludeEnum[] { "networks_same_org", "networks_cross_org", "email_risk" },
                },
            });

            Console.WriteLine(JsonSerializer.Serialize(result));
components:
  schemas:
    FraudCheckRequestRequest:
      type: object
      properties:
        client_reference:
          type: string
          minLength: 1
          description: >-
            Tu propia referencia para esta comprobación. También sirve como
            clave de idempotencia: reutilizarla con el mismo cuerpo devuelve la
            comprobación original sin volver a ejecutar ni facturar los módulos;
            reutilizarla con un cuerpo distinto devuelve 409.
          maxLength: 255
        profile:
          type: string
          minLength: 1
          default: standard
          description: >-
            ID del perfil de orquestación. Por defecto, el perfil `standard` de
            Didit.
          maxLength: 64
        profile_version:
          type: string
          minLength: 1
          description: >-
            Fija una versión congelada del perfil. De forma predeterminada, se
            usa la versión actual del perfil.
          maxLength: 32
        subject:
          $ref: '#/components/schemas/FraudCheckSubjectRequest'
        context:
          $ref: '#/components/schemas/FraudCheckContextRequest'
        checks:
          $ref: '#/components/schemas/FraudCheckModuleSelectionRequest'
        vendor_data:
          type: string
          maxLength: 1000
        metadata: {}
      required:
        - subject
    FraudCheckResponse:
      type: object
      properties:
        check_id:
          type: string
          format: uuid
        request_id:
          type: string
          format: uuid
          description: Sesión de verificación nativa creada para esta comprobación.
        client_reference:
          type: string
          nullable: true
        processing_status:
          $ref: '#/components/schemas/FraudProcessingStatusEnum'
        profile_id:
          type: string
        profile_version:
          type: string
        created_at:
          type: string
          format: date-time
        completed_at:
          type: string
          format: date-time
          nullable: true
        inputs:
          type: array
          items:
            $ref: '#/components/schemas/FraudCheckInput'
        modules:
          type: array
          items:
            $ref: '#/components/schemas/FraudCheckModuleReport'
        attribute_evidence:
          type: array
          items:
            type: object
            additionalProperties: {}
        compound_evidence:
          type: array
          items:
            type: object
            additionalProperties: {}
        risk:
          type: array
          items:
            $ref: '#/components/schemas/FraudCheckRisk'
        network:
          type: object
          additionalProperties: {}
        enrichment:
          type: object
          additionalProperties: {}
        identity_relationship:
          allOf:
            - $ref: '#/components/schemas/FraudCheckIdentityRelationship'
          nullable: true
        recommendation:
          $ref: '#/components/schemas/FraudRecommendationEnum'
        next_action:
          $ref: '#/components/schemas/FraudNextActionEnum'
        decision_reasons:
          type: array
          items:
            type: string
        coverage:
          type: object
          additionalProperties: {}
        usage:
          type: array
          items:
            type: object
            additionalProperties: {}
        vendor_data:
          type: string
          nullable: true
        metadata:
          nullable: true
      required:
        - attribute_evidence
        - check_id
        - client_reference
        - completed_at
        - compound_evidence
        - coverage
        - created_at
        - decision_reasons
        - inputs
        - modules
        - network
        - next_action
        - processing_status
        - profile_id
        - profile_version
        - recommendation
        - risk
        - usage
    FraudClientCredentialsErrorMessage:
      type: object
      properties:
        detail:
          type: string
          default: 'Authentication failed: Invalid client access token.'
    FraudClientCredentialsForbiddenErrorMessage:
      type: object
      properties:
        detail:
          type: string
          default: Forbidden - User doesn't have permission
    FraudCheckSubjectRequest:
      type: object
      properties:
        selfie:
          type: string
          minLength: 1
          description: >-
            Selfie en JPEG, PNG o WebP codificada en base64, de hasta 6 MB. Sin
            imagen de referencia ni URL.
          maxLength: 8388672
        identifiers:
          type: array
          items:
            $ref: '#/components/schemas/FraudCheckIdentifierRequest'
          description: Uno o más identificadores tipados. Basta con uno.
          maxItems: 10
          minItems: 1
        attributes:
          $ref: '#/components/schemas/FraudCheckAttributesRequest'
      required:
        - identifiers
    FraudCheckContextRequest:
      type: object
      properties:
        ip_address:
          type: string
          minLength: 1
        user_agent:
          type: string
          maxLength: 512
        country:
          type: string
          description: >-
            País en el que el sujeto afirma encontrarse. Solo aporta contexto;
            nunca es prueba de la titularidad de la identidad.
          maxLength: 3
        purpose:
          type: string
          maxLength: 128
        consent_obtained:
          type: boolean
    FraudCheckModuleSelectionRequest:
      type: object
      properties:
        include:
          type: array
          items:
            $ref: '#/components/schemas/FraudExcludeEnum'
        exclude:
          type: array
          items:
            $ref: '#/components/schemas/FraudExcludeEnum'
    FraudProcessingStatusEnum:
      enum:
        - pending
        - running
        - completed
        - failed
      type: string
      description: |-
        * `pending` - Pendiente
        * `running` - En ejecución
        * `completed` - Completado
        * `failed` - Fallido
    FraudCheckInput:
      type: object
      properties:
        reference:
          type: string
          description: Identificador ofuscado del dato enviado.
        type:
          $ref: '#/components/schemas/FraudTypeEnum'
        namespace:
          type: object
          additionalProperties: {}
        quality:
          type: string
        normalization:
          type: object
          additionalProperties: {}
        availability:
          $ref: '#/components/schemas/FraudAvailabilityEnum'
      required:
        - availability
        - namespace
        - normalization
        - quality
        - reference
        - type
    FraudCheckModuleReport:
      type: object
      properties:
        module:
          $ref: '#/components/schemas/FraudExcludeEnum'
        status:
          $ref: '#/components/schemas/FraudStatusEnum'
        reason:
          type: string
          nullable: true
        latency_ms:
          type: integer
        freshness:
          type: string
          nullable: true
        billable_units:
          type: integer
      required:
        - billable_units
        - freshness
        - latency_ms
        - module
        - reason
        - status
    FraudCheckRisk:
      type: object
      properties:
        dimension:
          $ref: '#/components/schemas/FraudDimensionEnum'
        score:
          type: integer
          nullable: true
        band:
          $ref: '#/components/schemas/FraudBandEnum'
        availability:
          $ref: '#/components/schemas/FraudAvailabilityEnum'
        requested_but_unavailable:
          type: boolean
          description: >-
            True cuando la solicitud aportó todo lo que esta dimensión
            necesitaba y aun así la plataforma no pudo responderla. Una
            comprobación así nunca se recomienda para aprobación basándose en
            las dimensiones que sí respondieron.
        reason_codes:
          type: array
          items:
            type: string
        evidence_indexes:
          type: array
          items:
            type: integer
      required:
        - availability
        - band
        - dimension
        - evidence_indexes
        - reason_codes
        - requested_but_unavailable
        - score
    FraudCheckIdentityRelationship:
      type: object
      properties:
        result:
          $ref: '#/components/schemas/FraudResultEnum'
        reference_type:
          type: string
        country:
          type: string
        availability:
          $ref: '#/components/schemas/FraudAvailabilityEnum'
        reason_codes:
          type: array
          items:
            type: string
      required:
        - availability
        - country
        - reason_codes
        - reference_type
        - result
    FraudRecommendationEnum:
      enum:
        - approve
        - review
        - reject
      type: string
      description: |-
        * `approve` - Aprobar
        * `review` - Revisar
        * `reject` - Rechazar
    FraudNextActionEnum:
      enum:
        - none
        - manual_review
        - step_up
        - resubmit_capture
      type: string
      description: |-
        * `none` - Ninguna
        * `manual_review` - Revisión manual
        * `step_up` - Verificación adicional
        * `resubmit_capture` - Repetir captura
    FraudCheckIdentifierRequest:
      type: object
      properties:
        type:
          allOf:
            - $ref: '#/components/schemas/FraudTypeEnum'
          description: >-
            Tipo de identificador. Determina qué campos del espacio de nombres
            son obligatorios.


            * `email` - Correo electrónico

            * `phone` - Teléfono

            * `national_id` - Documento nacional de identidad

            * `tax_number` - Número de identificación fiscal

            * `passport_number` - Número de pasaporte

            * `driving_licence_number` - Número de licencia de conducir

            * `residence_permit_number` - Número de permiso de residencia

            * `voter_id` - ID de votante

            * `external_id` - ID externo
        value:
          type: string
          minLength: 1
          description: El valor del identificador, en cualquier formato habitual.
          maxLength: 255
        country:
          type: string
          description: >-
            País emisor ISO-3166 alfa-2 o alfa-3. Obligatorio para los tipos de
            identificadores gubernamentales: los mismos dígitos corresponden a
            personas distintas en países distintos.
          maxLength: 3
        issuer:
          type: string
          description: >-
            Autoridad emisora o emisor subnacional opcional, cuando el país por
            sí solo no es único.
          maxLength: 128
      required:
        - type
        - value
    FraudCheckAttributesRequest:
      type: object
      description: >-
        Atributos de corroboración. Todos son opcionales y amplían la cobertura
        de los módulos.
      properties:
        first_name:
          type: string
          maxLength: 128
        last_name:
          type: string
          maxLength: 128
        full_name:
          type: string
          maxLength: 256
        date_of_birth:
          type: string
          format: date
        nationality:
          type: string
          maxLength: 3
        gender:
          type: string
          maxLength: 16
        address:
          type: string
          maxLength: 512
        city:
          type: string
          maxLength: 128
        state:
          type: string
          maxLength: 128
        postal_code:
          type: string
          maxLength: 32
    FraudExcludeEnum:
      enum:
        - normalization
        - email_risk
        - email_social
        - phone_social
        - phone_risk
        - ip_risk
        - database_validation
        - networks_same_org
        - networks_cross_org
        - biometric_identity
      type: string
      description: |-
        * `normalization` - Normalización
        * `email_risk` - Riesgo del correo electrónico
        * `email_social` - Presencia social del correo electrónico
        * `phone_social` - Presencia social del teléfono
        * `phone_risk` - Riesgo del teléfono
        * `ip_risk` - Riesgo de IP
        * `database_validation` - Validación de base de datos
        * `networks_same_org` - Redes de la misma organización
        * `networks_cross_org` - Redes entre organizaciones
        * `biometric_identity` - Identidad biométrica
    FraudTypeEnum:
      enum:
        - email
        - phone
        - national_id
        - tax_number
        - passport_number
        - driving_licence_number
        - residence_permit_number
        - voter_id
        - external_id
      type: string
      description: |-
        * `email` - Correo electrónico
        * `phone` - Teléfono
        * `national_id` - Documento nacional de identidad
        * `tax_number` - Número de identificación fiscal
        * `passport_number` - Número de pasaporte
        * `driving_licence_number` - Número de licencia de conducir
        * `residence_permit_number` - Número de permiso de residencia
        * `voter_id` - Credencial de elector
        * `external_id` - ID externo
    FraudAvailabilityEnum:
      enum:
        - available
        - not_requested
        - no_reference
        - insufficient_history
        - unsupported_region
        - source_unavailable
      type: string
      description: |-
        * `available` - Disponible
        * `not_requested` - No solicitado
        * `no_reference` - Sin referencia
        * `insufficient_history` - Historial insuficiente
        * `unsupported_region` - Región no compatible
        * `source_unavailable` - Fuente no disponible
    FraudStatusEnum:
      enum:
        - planned
        - completed
        - skipped
        - failed
      type: string
      description: |-
        * `planned` - Planificado
        * `completed` - Completado
        * `skipped` - Omitido
        * `failed` - Fallido
    FraudDimensionEnum:
      enum:
        - identity
        - contact
        - device_network
        - behavioral
        - fraud_network
      type: string
      description: |-
        * `identity` - Identidad
        * `contact` - Contacto
        * `device_network` - Red de dispositivos
        * `behavioral` - Comportamiento
        * `fraud_network` - Red de fraude
    FraudBandEnum:
      enum:
        - low
        - medium
        - high
        - unknown
      type: string
      description: |-
        * `low` - Bajo
        * `medium` - Medio
        * `high` - Alto
        * `unknown` - Desconocido
    FraudResultEnum:
      enum:
        - match
        - mismatch
        - inconclusive
        - no_reference
      type: string
      description: |-
        * `match` - Coincidencia
        * `mismatch` - Discrepancia
        * `inconclusive` - No concluyente
        * `no_reference` - Sin referencia
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: x-api-key
      description: >-
        La clave de API de tu aplicación, que encontrarás en Developers -> API
        keys en la Business Console. La clave principal tiene acceso completo.
        Una clave con nombre puede tener un alcance limitado: ninguno, lectura o
        escritura por recurso, limitada a algunos flujos o a sesiones aprobadas,
        a una lista de direcciones IP y a una fecha de caducidad. 401 significa
        que la clave es incorrecta, se revocó o expiró; 403 significa que no se
        envió ninguna clave, que la clave no tiene acceso a este recurso o
        acción, o que la solicitud provino de una dirección fuera de su lista de
        IP; 404 en una ruta de sesión significa que la sesión está fuera de los
        flujos o estados de la clave. Una clave sin acceso a contenido
        multimedia recibe las URL de imágenes, videos y PDF como null, y una
        clave sin permiso de escritura en sesiones recibe los enlaces y tokens
        de sesión como null. Consulta https://docs.didit.me/console/api-keys.
    BearerAuth:
      type: http
      scheme: bearer
      description: El token de acceso de credenciales de cliente de la aplicación.

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.