> ## 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.

# Vista previa del correo de reenvío de verificación

> Revisa en Didit el destinatario, el remitente, el mensaje localizado y el enlace de verificación antes de solicitar el reenvío.

Previsualizar no modifica la sesión ni envía ningún correo.
Después de revisar la respuesta, confirma con [Actualizar estado de la sesión](https://docs.didit.me/es/sessions-api/update-status.md) y pasa el `preview_token` devuelto como `email_preview_token`.
El comprobante expira a los 15 minutos.
Un comprobante modificado o expirado devuelve `409` antes de que se modifique la sesión o se envíe un correo.
Genera una nueva previsualización después de un conflicto.
Las integraciones de API existentes pueden omitir el comprobante; la consola lo proporciona al confirmar una previsualización.

El remitente y la imagen de marca siguen tu [configuración de marca blanca](https://docs.didit.me/es/console/white-label.md) actual.
El contenido del mensaje proviene de la plantilla de verificación traducida; no se aceptan asuntos, cuerpos de mensaje ni URL de acción arbitrarios como entradas de la plantilla.

## Quién recibe el correo

`email_address` es opcional.
Si no lo indicas, el correo se envía a la dirección de la propia persona: la que verificó en un paso de verificación de correo electrónico del flujo o, en su defecto, la indicada en `contact_details` al crear la sesión.
Una dirección que pases en `email_address` tiene prioridad.

`recipient_source` te indica qué dirección se aplica:

| `recipient_source` | De dónde proviene `recipient` |
| - | - |
| `email_verification` | La dirección que la persona verificó en el flujo |
| `contact_details` | La dirección indicada en `contact_details` al crear la sesión |
| `request` | El `email_address` que pasaste |
| `""` (vacío) | No se conoce ninguna dirección: `recipient` y `preview_token` están vacíos y no se puede enviar ningún correo |

## Si se envía el correo

`will_be_sent` es `true` cuando, al confirmar el reenvío con `send_email: true`, se envía el correo.
Cuando es `false`, `not_sent_reason` indica el motivo:

| `not_sent_reason` | Qué significa |
| - | - |
| `no_user_action` | Todos los pasos seleccionados se ejecutan sin la persona (por ejemplo, AML o Validación de base de datos), por lo que el reenvío finaliza por sí solo y no se envía ningún correo. `requires_user_action` también es `false`. |
| `no_recipient` | No se conoce ninguna dirección de la persona y no pasaste ninguna. |
| `sandbox` | La sesión es una sesión de sandbox y el destinatario no ha dado su consentimiento para recibir correos electrónicos de sandbox, por lo que el correo solo se simula. Consulta [consentimiento para recibir correos electrónicos](https://docs.didit.me/es/integration/sandbox-testing.md#códigos-otp-y-activación-de-correos-electrónicos). |

## Confirmar el reenvío

Invoca [Actualizar estado de la sesión](https://docs.didit.me/es/sessions-api/update-status.md) con estos campos:

| Campo de Actualizar estado de la sesión | Valor |
| - | - |
| `new_status` | `Resubmitted` |
| `nodes_to_resubmit` | La misma selección que previsualizaste (omítela si la omitiste aquí) |
| `send_email` | `true` |
| `email_address` | `recipient` de la previsualización |
| `email_language` | El mismo `email_language` que enviaste a la previsualización |
| `email_preview_token` | `preview_token` de la previsualización |

El `language` de la respuesta es el idioma en el que está redactado el correo: inglés cuando el que solicitaste no está disponible.

## Reenvíos repetidos solo de backend

Cuando todos los pasos para reenviar se ejecutan sin la persona (AML, Validación de base de datos o Análisis de IP), una sesión solo se puede reenviar para ella una vez cada 30 segundos.
Dentro de ese intervalo, la previsualización devuelve `429`, igual que lo haría Actualizar estado de la sesión, con el tiempo de espera en el encabezado `Retry-After`.

## Relacionado

* [Actualizar estado de la sesión](https://docs.didit.me/es/sessions-api/update-status.md): confirma el reenvío de la solicitud.
* [Previsualizar correo electrónico de decisión](https://docs.didit.me/es/sessions-api/preview-decision-email.md): previsualiza en su lugar el correo de aprobación o rechazo.
* [Marca blanca](https://docs.didit.me/es/console/white-label.md): el remitente y la imagen de marca que usa el correo.


## OpenAPI

````yaml es/openapi-25.json POST /v3/session/{sessionId}/resubmission-preview/
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/session/{sessionId}/resubmission-preview/:
    post:
      tags:
        - Sessions
      summary: Vista previa de un correo electrónico de reenvío
      description: >-
        Genera el correo electrónico que acompañaría a un reenvío de KYC o KYB
        sin modificar la sesión, restablecer comprobaciones, ampliar su
        caducidad, ejecutar comprobaciones ni enviar correos. Requiere el
        privilegio `write:sessions` (una clave de API con alcance limitado
        necesita acceso de escritura a decisiones) y una sesión en estado
        `Approved`, `Declined`, `In Review`, `Kyc Expired` o `Abandoned`. El
        servidor valida los pasos seleccionados del flujo de verificación
        (workflow) y genera su plantilla fija traducida con el remitente
        verificado y la imagen de marca blanca que correspondan. La solicitud no
        puede definir un asunto, un cuerpo de mensaje ni una URL de acción.


        `email_address` es opcional. Sin él, el correo se envía a la dirección
        de la propia persona: la que verificó en un paso de verificación de
        correo electrónico del flujo o, en su defecto, la indicada en
        `contact_details` al crear la sesión. Una dirección que pases tiene
        prioridad (`recipient_source: request`). Si no se conoce ninguna
        dirección y no pasas ninguna, `recipient` y `preview_token` son cadenas
        vacías y no se puede enviar ningún correo.


        La respuesta incluye el destinatario y su origen, el remitente, el
        asunto, el HTML, el idioma, los pasos resueltos, si al confirmar se
        envía el correo (`will_be_sent`, `not_sent_reason`) y un `preview_token`
        firmado. `requires_user_action` es `false` cuando todos los pasos
        seleccionados se ejecutan sin la persona: en ese caso, el reenvío
        finaliza por sí solo y no se envía ningún correo (`not_sent_reason:
        no_user_action`).


        Esta vista previa no reserva el estado de la sesión ni autoriza la
        entrega. Después de revisarla, llama a [Actualizar estado de la
        sesión](/es/sessions-api/update-status) con `new_status: Resubmitted`,
        los mismos `nodes_to_resubmit` y `email_language` que previsualizaste,
        `send_email: true`, `email_address` con el valor de `recipient` y
        `email_preview_token` con el valor de `preview_token`. El comprobante
        expira a los 15 minutos. Cuando se proporciona un comprobante, cualquier
        cambio en las entradas, el contenido del mensaje, el remitente o el
        estado de la sesión devuelve `409` antes de cualquier modificación o
        envío. Las integraciones existentes pueden omitir el comprobante. Vuelve
        a generar la vista previa después de un conflicto. Trata la respuesta
        como contenido de verificación sensible; las respuestas usan
        `Cache-Control: no-store`. Muestra el HTML en un marco aislado
        (sandbox), nunca directamente en el DOM de tu aplicación.
      operationId: post_v3_session_resubmission_preview
      parameters:
        - in: path
          name: sessionId
          required: true
          description: >-
            UUID de la sesión de verificación que se va a actualizar. Acepta ID
            de sesión tanto de usuario (KYC) como de empresa (KYB): el servicio
            resuelve el ID en ambos tipos de sesión.
          schema:
            type: string
            format: uuid
            example: 11111111-2222-3333-4444-555555555555
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                nodes_to_resubmit:
                  type: array
                  description: >-
                    Pasos que se previsualizan, con la misma validación,
                    selección y orden del flujo que un reenvío. Omítelo para
                    seleccionar automáticamente los intentos registrados que
                    necesitan reenvío.
                  items:
                    type: object
                    required:
                      - node_id
                      - feature
                    properties:
                      node_id:
                        type: string
                        description: >-
                          Identificador del nodo tal como aparece en la
                          definición del flujo de la sesión (por ejemplo,
                          `feature_ocr`, `feature_liveness`).
                        example: feature_ocr
                      feature:
                        type: string
                        description: >-
                          Tipo de función del nodo. El servidor normaliza los
                          alias `ID_VERIFICATION`, `POA`, `PHONE` y `EMAIL` a
                          `OCR`, `PROOF_OF_ADDRESS`, `PHONE_VERIFICATION` y
                          `EMAIL_VERIFICATION`. `KYB_REGISTRY`, `KYB_KEY_PEOPLE`
                          y `KYB` superan la validación del esquema, pero
                          siempre se rechazan con el `400` de regla de negocio
                          que se muestra en los ejemplos.
                        enum:
                          - OCR
                          - OCR_BACK
                          - NFC
                          - AML
                          - FACE
                          - LIVENESS
                          - FACE_MATCH
                          - IP_ANALYSIS
                          - AGE_ESTIMATION
                          - PROOF_OF_ADDRESS
                          - PHONE_VERIFICATION
                          - EMAIL_VERIFICATION
                          - FACE_SEARCH
                          - DATABASE_VALIDATION
                          - QUESTIONNAIRE
                          - DOCUMENT_AI
                          - KYB_DOCUMENTS
                          - ID_VERIFICATION
                          - POA
                          - PHONE
                          - EMAIL
                          - KYB_REGISTRY
                          - KYB_KEY_PEOPLE
                          - KYB
                          - GEOLOCATION
                        example: OCR
                email_address:
                  type: string
                  format: email
                  description: >-
                    Opcional. Envía el correo electrónico a esta dirección en
                    lugar de a la de la propia persona. Sin él, el destinatario
                    es la dirección que la persona verificó en el flujo o, si
                    no, la indicada en `contact_details`. Esta llamada no envía
                    ningún correo electrónico.
                  example: user@example.com
                email_language:
                  type: string
                  description: >-
                    Idioma del correo electrónico de notificación. El esquema
                    acepta cualquier cadena; los códigos no admitidos pasan a
                    inglés (`en`) sin avisar.
                  default: en
                  example: en
            examples:
              Person's Own Address:
                summary: >-
                  Vista previa de un reenvío de prueba de domicilio para la
                  dirección de la propia persona
                value:
                  nodes_to_resubmit:
                    - node_id: feature_poa_1
                      feature: POA
                  email_language: en
              Named Recipient:
                summary: >-
                  Vista previa del correo electrónico para una dirección que
                  indiques
                value:
                  nodes_to_resubmit:
                    - node_id: feature_ocr
                      feature: OCR
                  email_address: person@example.com
                  email_language: en
      responses:
        '200':
          description: >-
            Solo vista previa. La sesión no cambia y no se envía ningún correo
            electrónico.
          content:
            application/json:
              schema:
                type: object
                required:
                  - recipient
                  - recipient_source
                  - sender
                  - sender_name
                  - sender_email
                  - sender_kind
                  - subject
                  - html
                  - text
                  - language
                  - will_be_sent
                  - not_sent_reason
                  - preview_token
                  - nodes_to_resubmit
                  - requires_user_action
                properties:
                  recipient:
                    type: string
                    description: >-
                      La dirección a la que va el correo electrónico. Es una
                      cadena vacía cuando no se conoce ninguna dirección de la
                      persona: en ese caso no se puede enviar ningún correo y
                      `preview_token` también está vacío. Pásala como
                      `email_address` al confirmar.
                    example: person@example.com
                  recipient_source:
                    type: string
                    enum:
                      - email_verification
                      - contact_details
                      - request
                      - ''
                    description: >-
                      De dónde procede `recipient`. `request`: el
                      `email_address` que enviaste. `email_verification`: la
                      dirección que la persona verificó en un paso de
                      verificación de correo electrónico del flujo.
                      `contact_details`: la dirección indicada en
                      `contact_details` al crear la sesión. Una cadena vacía
                      cuando no hay dirección.
                    example: email_verification
                  sender:
                    type: string
                    description: >-
                      El encabezado `From` con el que se envía el correo
                      electrónico.
                    example: Example App <no-reply@mail.example.com>
                  sender_name:
                    type: string
                    description: La parte del nombre visible de `sender`.
                    example: Example App
                  sender_email:
                    type: string
                    format: email
                    description: La parte de dirección de `sender`.
                    example: no-reply@mail.example.com
                  sender_kind:
                    type: string
                    enum:
                      - customer
                      - didit
                    description: >-
                      `customer`: el correo electrónico se envía desde el
                      dominio de remitente verificado de tu aplicación (marca
                      blanca). `didit`: se envía desde el remitente propio de
                      Didit.
                    example: customer
                  subject:
                    type: string
                    description: La línea de asunto exactamente como se envía.
                    example: 'Action Required: Complete your verification in Example App'
                  html:
                    type: string
                    description: >-
                      El HTML del correo electrónico exactamente como se envía,
                      con su logotipo incrustado como data URL. Renderízalo en
                      un frame aislado (sandbox), nunca directamente en el DOM
                      de tu aplicación.
                    example: <!DOCTYPE html><html><body>...</body></html>
                  text:
                    type: string
                    description: >-
                      El texto del correo electrónico en texto plano, tal como
                      lo conserva el hilo de Mensajes de la persona, para una
                      vista previa compacta (el HTML sigue siendo el correo
                      electrónico que recibe la persona).
                    example: |-
                      Almost there

                      Some steps need to be completed again.
                      Here’s what to fix:

                      https://verify.didit.me/session/abc123
                  language:
                    type: string
                    description: >-
                      El idioma en el que está escrito el correo. Inglés (`en`)
                      cuando el `email_language` que pediste no está disponible.
                    example: en
                  will_be_sent:
                    type: boolean
                    description: >-
                      Indica si confirmar el cambio con `send_email: true` envía
                      este correo electrónico. `false` cuando `not_sent_reason`
                      está definido.
                    example: true
                  not_sent_reason:
                    type: string
                    nullable: true
                    enum:
                      - no_user_action
                      - no_recipient
                      - sandbox
                      - null
                    description: >-
                      Por qué la confirmación no enviaría ningún correo
                      electrónico, o `null` cuando se enviará. `no_user_action`:
                      todos los pasos seleccionados se ejecutan sin la persona,
                      así que el reenvío termina por sí solo y no se envía
                      ningún correo. `no_recipient`: no se conoce ninguna
                      dirección de la persona y no indicaste ninguna. `sandbox`:
                      una sesión de sandbox cuyo destinatario no ha aceptado la
                      entrega de correos en sandbox, así que el envío solo se
                      simula.
                    example: null
                  nodes_to_resubmit:
                    type: array
                    items:
                      type: object
                      required:
                        - node_id
                        - feature
                      properties:
                        node_id:
                          type: string
                          description: >-
                            Identificador del nodo tal como aparece en la
                            definición del flujo de la sesión (por ejemplo,
                            `feature_ocr`, `feature_liveness`).
                          example: feature_ocr
                        feature:
                          type: string
                          description: >-
                            Tipo de función del nodo. El servidor normaliza los
                            alias `ID_VERIFICATION`, `POA`, `PHONE` y `EMAIL` a
                            `OCR`, `PROOF_OF_ADDRESS`, `PHONE_VERIFICATION` y
                            `EMAIL_VERIFICATION`. `KYB_REGISTRY`,
                            `KYB_KEY_PEOPLE` y `KYB` superan la validación del
                            esquema, pero siempre se rechazan con el `400` de
                            regla de negocio que se muestra en los ejemplos.
                          enum:
                            - OCR
                            - OCR_BACK
                            - NFC
                            - AML
                            - FACE
                            - LIVENESS
                            - FACE_MATCH
                            - IP_ANALYSIS
                            - AGE_ESTIMATION
                            - PROOF_OF_ADDRESS
                            - PHONE_VERIFICATION
                            - EMAIL_VERIFICATION
                            - FACE_SEARCH
                            - DATABASE_VALIDATION
                            - QUESTIONNAIRE
                            - DOCUMENT_AI
                            - KYB_DOCUMENTS
                            - ID_VERIFICATION
                            - POA
                            - PHONE
                            - EMAIL
                            - KYB_REGISTRY
                            - KYB_KEY_PEOPLE
                            - KYB
                            - GEOLOCATION
                          example: OCR
                  requires_user_action:
                    type: boolean
                    description: >-
                      Indica si al menos una de las comprobaciones seleccionadas
                      requiere interacción del usuario. No predice el resultado
                      final del flujo de verificación (workflow).
                  preview_token:
                    type: string
                    description: >-
                      Recibo firmado para este correo electrónico exacto, válido
                      durante 15 minutos. Pásalo como `email_preview_token` a
                      [Actualizar el estado de la
                      sesión](/es/sessions-api/update-status). Una cadena vacía
                      cuando no hay destinatario.
                    example: >-
                      eyJkaWdlc3QiOiI0ZjJhIn0:1uExAm:Pl3x4mpleS1gnatureValue000000000000000
              examples:
                Will Be Sent:
                  summary: >-
                    Destinatario predeterminado: la dirección verificada en el
                    flujo
                  value:
                    recipient: person@example.com
                    recipient_source: email_verification
                    sender: Example App <no-reply@mail.example.com>
                    sender_name: Example App
                    sender_email: no-reply@mail.example.com
                    sender_kind: customer
                    subject: 'Action Required: Complete your verification in Example App'
                    html: <!DOCTYPE html><html><body>...</body></html>
                    language: en
                    will_be_sent: true
                    not_sent_reason: null
                    nodes_to_resubmit:
                      - node_id: feature_poa_1
                        feature: PROOF_OF_ADDRESS
                    requires_user_action: true
                    preview_token: >-
                      eyJkaWdlc3QiOiI0ZjJhIn0:1uExAm:Pl3x4mpleS1gnatureValue000000000000000
                No User Action:
                  summary: >-
                    Solo se seleccionan pasos de backend, por lo que no se envía
                    ningún correo electrónico
                  value:
                    recipient: person@example.com
                    recipient_source: contact_details
                    sender: Example App <no-reply@mail.example.com>
                    sender_name: Example App
                    sender_email: no-reply@mail.example.com
                    sender_kind: customer
                    subject: 'Action Required: Complete your verification in Example App'
                    html: <!DOCTYPE html><html><body>...</body></html>
                    language: en
                    will_be_sent: false
                    not_sent_reason: no_user_action
                    nodes_to_resubmit:
                      - node_id: feature_aml
                        feature: AML
                    requires_user_action: false
                    preview_token: >-
                      eyJkaWdlc3QiOiI0ZjJhIn0:1uExAm:Pl3x4mpleS1gnatureValue000000000000000
          headers:
            Cache-Control:
              description: >-
                Siempre `no-store`: la vista previa contiene contenido de
                verificación y no debe almacenarse en caché.
              schema:
                type: string
                example: no-store
        '400':
          description: >-
            La sesión no está en un estado que este endpoint acepte, ya está en
            `Resubmitted`, los pasos seleccionados no se pueden volver a enviar
            o un campo no es válido.
          content:
            application/json:
              examples:
                Wrong Current Status:
                  summary: La sesión no está en un estado que este endpoint acepte
                  value:
                    detail: >-
                      Only sessions with status Approved, Declined, In Review,
                      Kyc Expired, Abandoned, Resubmitted can be updated.
                      Current status: In Progress
                Already Resubmitted:
                  summary: La sesión ya está en Resubmitted
                  value:
                    - The new status is the same as the current status.
                Nothing To Resubmit:
                  summary: >-
                    La selección automática no encontró ningún paso que requiera
                    un nuevo envío
                  value:
                    nodes_to_resubmit: >-
                      No features found that need resubmission. All features are
                      already approved.
                Invalid Email:
                  summary: email_address no es una dirección de correo electrónico
                  value:
                    email_address:
                      - Enter a valid email address.
        '401':
          description: La clave de API con alcance limitado ha expirado.
          content:
            application/json:
              examples:
                Expired API Key:
                  summary: >-
                    Clave de API con alcance limitado con la fecha de caducidad
                    vencida
                  value:
                    detail: This API key has expired.
        '403':
          description: >-
            Faltan las credenciales, quien llama no tiene el privilegio
            `write:sessions`, una clave de API con alcance limitado no tiene el
            acceso que necesita este endpoint, o el `session_id` pertenece a
            otra aplicación.
          content:
            application/json:
              examples:
                Invalid Credentials:
                  summary: x-api-key ausente o no válido
                  value:
                    detail: >-
                      Authentication credentials were not provided or are
                      invalid.
                Missing Privilege:
                  summary: El autor de la llamada no tiene write:sessions
                  value:
                    detail: You do not have permission to perform this action.
                Scoped Key Without Access:
                  summary: Clave de API con alcance limitado sin este acceso
                  value:
                    detail: This API key has no write access to decisions.
        '404':
          description: No existe ninguna sesión KYC o KYB con este `session_id`.
          content:
            application/json:
              examples:
                Not Found:
                  summary: session_id desconocido
                  value:
                    detail: Not found.
        '429':
          description: >-
            Los pasos que se van a reenviar son todos solo de backend (AML,
            DATABASE_VALIDATION, IP_ANALYSIS) y la sesión ya se reenvió para
            pasos solo de backend en los últimos 30 segundos, por lo que Update
            Session Status rechazaría el reenvío. Reintenta después del
            intervalo indicado en `Retry-After`.
          content:
            application/json:
              examples:
                Backend-only resubmit throttled:
                  value:
                    detail: >-
                      This session was already resubmitted for backend-only
                      features within the last 30 seconds; repeating it cannot
                      change the outcome. Wait before resubmitting again.
      security:
        - ApiKeyAuth: []
      x-codeSamples:
        - lang: python
          label: Python
          source: |-
            from didit import Didit

            # Reads DIDIT_API_KEY.
            client = Didit()

            result = client.sessions.preview_resubmission(
                "11111111-2222-3333-4444-555555555555",
                nodes_to_resubmit=[{
                    "node_id": "feature_poa_1",
                    "feature": "POA",
                }],
                email_language="en",
            )
            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.sessions.previewResubmission("11111111-2222-3333-4444-555555555555",
            {
              nodes_to_resubmit: [{
                node_id: "feature_poa_1",
                feature: "POA",
              }],
              email_language: "en",
            });

            console.log(result);
        - lang: go
          label: Go
          source: "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.Sessions.PreviewResubmission(ctx, \"11111111-2222-3333-4444-555555555555\", didit.SessionsPreviewResubmissionParams{\n\tNodesToResubmit: didit.Some([]didit.SessionsPreviewResubmissionParamsNodesToResubmit{{\n\t\tNodeID:  \"feature_poa_1\",\n\t\tFeature: \"POA\",\n\t}}),\n\tEmailLanguage: didit.String(\"en\"),\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.SessionsPreviewResubmissionParams;


            // Reads DIDIT_API_KEY.

            Didit client = new Didit();


            var result =
            client.sessions().previewResubmission("11111111-2222-3333-4444-555555555555",
            SessionsPreviewResubmissionParams.builder()
                    .nodesToResubmit(List.of(SessionsPreviewResubmissionParams.NodesToResubmit.builder()
                            .nodeId("feature_poa_1")
                            .feature(SessionsPreviewResubmissionParams.NodesToResubmit.Feature.of("POA"))
                            .build()))
                    .emailLanguage("en")
                    .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->sessions->previewResubmission('11111111-2222-3333-4444-555555555555',
            [
                'nodes_to_resubmit' => [[
                    'node_id' => 'feature_poa_1',
                    'feature' => 'POA',
                ]],
                'email_language' => 'en',
            ]);

            print_r($result->toArray());
        - lang: ruby
          label: Ruby
          source: |-
            require "didit"

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

            result = didit.sessions.preview_resubmission(
              "11111111-2222-3333-4444-555555555555",
              nodes_to_resubmit: [{
                node_id: "feature_poa_1",
                feature: "POA",
              }],
              email_language: "en"
            )
            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.Sessions.PreviewResubmissionAsync("11111111-2222-3333-4444-555555555555",
            new SessionsPreviewResubmissionParams

            {
                NodesToResubmit = new SessionsPreviewResubmissionParamsNodesToResubmit[]
                {
                    new()
                    {
                        NodeId = "feature_poa_1",
                        Feature = "POA",
                    },
                },
                EmailLanguage = "en",
            });

            Console.WriteLine(JsonSerializer.Serialize(result));
components:
  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.

````

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