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

# Confirmar la carga o reemplazar el archivo de un documento

> Después de subir el archivo mediante PUT a `item_options.upload_url`, confirma la carga
con `options.uploaded_file: true`. También puedes enviar `options.file_url` para
reemplazar el archivo o reintentar su procesamiento desde una URL descargable.
Aplica a `generic`, `doc_validation`,
tipos de extracción de documentos y `doc_splitter`, incluidos los tipos
personalizados habilitados para la cuenta. El procesamiento es asíncrono.
Ver [Carga directa](/guia-devs/crear-verificaciones/via-api/carga-directa).




## OpenAPI

````yaml /api-reference/openapi.yaml put /verification-items/{id}
openapi: 3.0.0
info:
  title: Coleccion de API KYB MX
  description: >
    La Colección de API KYB MX proporciona puntos finales para crear y gestionar
    verificaciones de empresas en México. La verificación de empresas implica
    validar la información proporcionada por un cliente comercial, incluyendo
    documentos y fuentes de datos, para asegurar su legitimidad y precisión.


    Cada verificación de empresa puede incluir múltiples ítems, como Actas
    Constitutivas, Constancias de Situación Fiscal, Identificaciones Personales
    y Comprobantes de Domicilio. Trebol maneja automáticamente la clasificación
    de documentos, lo que te permite enviar todos los documentos requeridos como
    URLs descargables (por ejemplo, URLs prefirmadas de AWS o GCP).


    **Autenticación**: 

    La API utiliza una clave API para la autenticación, pasada en el encabezado
    `x-api-key`. Para obtener una clave API, por favor
    [contáctanos](mailto:sales@gotrebol.com).
  version: 1.0.0
servers:
  - url: https://api.gotrebol.com
  - url: http://{{trebol_api_base_url}}
security: []
tags:
  - name: Creacion de Verificacion
    description: Endpoints para crear nuevas verificaciones.
  - name: Leer información de la empresa
    description: >-
      Endpoints v2 para obtener información detallada de empresas y
      verificaciones.
  - name: Leer por Etiqueta
    description: >-
      Endpoints para obtener información detallada sobre empresas mediante
      etiquetas.
  - name: Leer por ID de Verificacion
    description: >-
      Endpoints para obtener información detallada sobre verificaciones mediante
      ID.
  - name: Gestión de IPs Permitidas
    description: >-
      Endpoints para gestionar la lista de IPs permitidas (whitelist) para la
      cuenta del cliente.
  - name: Gestión de API Keys
    description: Endpoints para crear, listar y eliminar API keys de la cuenta del usuario.
  - name: Gestion de item Ids
    description: Endpoints para gestionar items de verificaciones.
  - name: Invalidar un documento
    description: Endpoints para invalidar documentos de verificaciones.
  - name: Labels de Verificacion
    description: Endpoints para gestionar labels de verificaciones.
  - name: Actualizar personas clave de una verificacion
    description: Endpoints para actualizar personas clave de verificaciones.
  - name: Agregar items a una verificacion
    description: Endpoints para agregar items a verificaciones existentes.
  - name: Estado de validacion de documentos
    description: Endpoints para obtener el estado de validación de documentos.
  - name: Gestión de Flujos de Cuenta
    description: Endpoints para gestionar flujos de cuenta.
  - name: Gestión de Webhooks
    description: Endpoints para crear, listar, actualizar y eliminar webhooks de la cuenta.
  - name: Gestión de Política de Retención
    description: Endpoints para gestionar la política de retención de datos de la cuenta.
  - name: Exportación de Verificaciones
    description: >-
      Endpoints para exportar datos de verificaciones a documentos
      personalizados.
  - name: Leer información de la empresa v1
    description: >-
      Endpoints v1 (legacy) para obtener información detallada de empresas y
      verificaciones. Te recomendamos migrar a los endpoints v2.
  - name: Tipos de Ítem Personalizados
    description: >-
      Endpoints para crear y gestionar tipos de ítem personalizados con procesos
      configurables de clasificación, validación y extracción.
  - name: Síntesis de Dictamen
    description: >-
      Endpoints para ejecutar bajo demanda la Síntesis de Dictamen (`findings`)
      de una verificación.
paths:
  /verification-items/{id}:
    put:
      tags:
        - Gestion de item Ids
      summary: Confirmar la carga o reemplazar el archivo de un documento
      description: >
        Después de subir el archivo mediante PUT a `item_options.upload_url`,
        confirma la carga

        con `options.uploaded_file: true`. También puedes enviar
        `options.file_url` para

        reemplazar el archivo o reintentar su procesamiento desde una URL
        descargable.

        Aplica a `generic`, `doc_validation`,

        tipos de extracción de documentos y `doc_splitter`, incluidos los tipos

        personalizados habilitados para la cuenta. El procesamiento es
        asíncrono.

        Ver [Carga
        directa](/guia-devs/crear-verificaciones/via-api/carga-directa).
      operationId: confirmarCargaDocumento
      parameters:
        - name: id
          in: path
          required: true
          description: ID del item recibido al crear la verificación o agregar items.
          schema:
            type: integer
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - options
              properties:
                options:
                  type: object
                  anyOf:
                    - required:
                        - uploaded_file
                    - required:
                        - file_url
                  allOf:
                    - anyOf:
                        - not:
                            required:
                              - file_password
                        - required:
                            - uploaded_file
                          properties:
                            uploaded_file:
                              enum:
                                - true
                        - required:
                            - file_url
                  properties:
                    uploaded_file:
                      type: boolean
                      description: >-
                        Si es true, confirma la carga e inicia el procesamiento.
                        Si es false, no confirma la carga; una file_url enviada
                        en la misma solicitud sí puede iniciar el procesamiento.
                      example: true
                    file_url:
                      type: string
                      minLength: 1
                      description: >-
                        URL descargable del archivo para reemplazarlo o
                        reintentar su procesamiento. Envíala sin uploaded_file o
                        con uploaded_file en false; conserva la URL disponible
                        al menos 5 minutos.
                      example: https://example.com/documento.pdf
                    file_password:
                      type: string
                      minLength: 1
                      maxLength: 128
                      writeOnly: true
                      description: >
                        Contraseña del PDF subido, si está protegido. Envíala
                        junto con `uploaded_file: true` (o con `file_url`); sin
                        un archivo en la misma solicitud la API responde `400`
                        con `code: invalid_item_options_file_password`. Trébol
                        procesa la copia sin contraseña y conserva el original
                        cifrado. Almacena la contraseña cifrada en la base de
                        datos y no la devuelve en respuestas ni webhooks. Si es
                        incorrecta, el ítem termina con `item_error:
                        invalid_file_password`. Se ignora para archivos que no
                        son PDF. Aplica por ítem.
                      example: clave-del-pdf
            example:
              options:
                uploaded_file: true
      responses:
        '200':
          description: >-
            Solicitud procesada. Con uploaded_file en true o una file_url,
            solicita el procesamiento del archivo. Con uploaded_file en false y
            sin file_url, no confirma la carga ni solicita el procesamiento.
          content:
            application/json:
              schema:
                type: object
                properties:
                  item:
                    $ref: '#/components/schemas/PublicVerificationItem'
                  triggeredSideEffects:
                    type: boolean
                    description: >-
                      Indica si la actualización solicitó el procesamiento del
                      item.
                    example: true
        '400':
          $ref: '#/components/responses/BadRequestError'
        '404':
          description: >-
            El item no existe o el archivo aún no está en el almacenamiento de
            carga.
          content:
            application/json:
              example:
                message: S3 object not found
      security:
        - ApiKeyAuth: []
components:
  schemas:
    PublicVerificationItem:
      type: object
      properties:
        id:
          type: number
        item_status:
          type: string
        item_order:
          type: number
        item_type:
          type: string
        item_value:
          description: >
            Estructura depende de `item_type`. Ver guía en
            /guia-devs/respuestas-por-tipo-de-item.


            Además de los campos propios del tipo, incluye una llave
            `cp_<prompt_id>` por cada extracción personalizada con resultado
            para ese ítem, donde `prompt_id` es el identificador editable de la
            extracción. Ver [Extracciones
            personalizadas](/producto/guias/extracciones-personalizadas).


            Ese prefijo solo aplica a tipos de documento estándar. Un ítem de un
            tipo de ítem personalizado (`item_type` con prefijo `cit_`) nunca
            lleva llaves `cp_`: sus resultados viven en `pipeline`, con la forma
            del schema `CustomItemTypeItemValue`. Ver [Tipos de ítem
            personalizados](/producto/guias/tipos-de-item-personalizados#donde-salen-los-resultados).
          type: object
          additionalProperties: true
        item_error:
          type: string
          nullable: true
          description: >
            Campo opcional que indica errores públicos relacionados con el
            procesamiento del ítem. Su valor depende del `item_type` que produjo
            el error.


            **Comunes a ítems documentales**

            - `password_protected_pdf`: el PDF está protegido con contraseña y
            no se envió `file_password`. Reenvía el archivo con
            `options.file_password`.

            - `invalid_file_password`: se envió `file_password` pero el PDF la
            rechazó. Reenvía el archivo con la contraseña correcta.

            - `get_input_file_info_failed`: falló la obtención de información
            del archivo de entrada.


            **Específicos de `doc_splitter`** (ver
            [guía](/producto/guias/doc-splitter) para el listado completo)

            - `unsupported_file_type`: el archivo no es un PDF.

            - `unknown_custom_item_type` / `misconfigured_custom_item_type`:
            `allowed_item_types` o `client_item_type` referencia un tipo
            personalizado (`cit_*`) que no existe o no está listo.

            - `no_splits_returned`: el análisis no identificó ningún documento
            en el PDF.

            - `pdf_slice_failed`: no se pudo leer o recortar el PDF (archivo
            corrupto o error de descarga del original).

            - `pdf_slice_upload_failed`: se recortaron los sub-PDFs pero falló
            la subida de al menos uno.

            - `doc_splitter_request_failed`: falló la llamada al servicio de
            análisis (OCR o AI). Reintentar suele resolverlo.


            **Específicos de `doc_validation`**

            - `invalid_document_type`: el documento no corresponde al
            `client_item_type` esperado.

            - `ruleset_validation_failed`: al menos una regla del `ruleset` no
            se cumplió.


            Trata este campo como un `string` opaco: además de los códigos
            anteriores puede llegar con otros valores para ítems específicos
            (por ejemplo `prevalidation_failed` en `csf_mx`) o, en errores
            inesperados, con un mensaje libre en inglés.
        item_internal_status:
          type: string
          nullable: true
        item_options:
          type: object
          additionalProperties: true
          nullable: true
          properties:
            upload_url:
              type: string
              format: uri
              description: >-
                URL firmada temporal para subir el archivo del item mediante
                PUT. Después de subirlo, confirma con options.uploaded_file en
                PUT /verification-items/{id}.
        item_ui_options:
          type: object
          additionalProperties: true
          nullable: true
        validation_result:
          type: object
          additionalProperties: true
          nullable: true
        user_event_completed_at:
          type: string
          nullable: true
        user_event_name:
          type: string
          nullable: true
        user_event_reason:
          type: string
          nullable: true
        tag:
          type: string
          nullable: true
        item_scope:
          type: string
          nullable: true
        original_file_url:
          type: string
          nullable: true
        citations:
          type: object
          description: >
            Presente solo cuando se llamó con `?with_citations=true` y el item
            es de tipo acta. Contiene la URL firmada (CloudFront) al artifact de
            coordenadas en S3. Ver [Coordenadas de
            citas](/guia-devs/referencia/coordenadas-citas).
          properties:
            url:
              type: string
              format: uri
              description: >
                URL firmada y temporal. Descarga el JSON cuanto antes; si
                caduca, vuelve a llamar al endpoint con el flag para obtener una
                nueva. Si el artifact aún no se horneó para esta verificación,
                no se devuelve la llave citations.
              example: >-
                https://files.gotrebol.com/{verification_id}/citations/sources/{item_id}.json?Expires=…&Signature=…
          required:
            - url
    ErrorResponse:
      type: object
      properties:
        success:
          type: boolean
          example: false
        message:
          type: string
          example: Descripción breve y accionable del error
        code:
          oneOf:
            - type: string
              enum:
                - VALIDATION_ERROR
                - BAD_REQUEST
                - UNAUTHORIZED
                - FORBIDDEN
                - NOT_FOUND
                - CONFLICT
                - DUPLICATE_RESOURCE
                - INTERNAL_SERVER_ERROR
            - type: string
              description: Código de dominio específico (p.ej., items_not_provided)
          example: VALIDATION_ERROR
        timestamp:
          type: string
          format: date-time
          example: '2025-01-01T12:34:56.000Z'
  responses:
    BadRequestError:
      description: Datos de entrada inválidos
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          examples:
            ValidationError:
              summary: Error de validación
              value:
                success: false
                message: 'Validation failed: ''items'' is required'
                code: VALIDATION_ERROR
                timestamp: '2025-01-01T12:34:56.000Z'
            ItemsNotProvided:
              summary: items_not_provided
              value:
                success: false
                message: >-
                  Please provide a valid items array or a flow id in your
                  request
                code: items_not_provided
                timestamp: '2025-01-01T12:34:56.000Z'
            InvalidItemType:
              summary: invalid_item_type
              value:
                success: false
                message: The generic item type is not supported
                code: invalid_item_type
                timestamp: '2025-01-01T12:34:56.000Z'
            InvalidItemOptionsFileUrl:
              summary: invalid_item_options_file_url
              value:
                success: false
                message: >-
                  The specified file_url is invalid. Ensure it is public and
                  downloadable.
                code: invalid_item_options_file_url
                timestamp: '2025-01-01T12:34:56.000Z'
            InvalidItemOptionsFilePassword:
              summary: invalid_item_options_file_password
              value:
                success: false
                message: The file_password option must be a non-empty string.
                code: invalid_item_options_file_password
                timestamp: '2025-01-01T12:34:56.000Z'
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: x-api-key

````

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