> ## Documentation Index
> Fetch the complete documentation index at: https://developer.omni.z-api.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Enviar documento

> Envía documentos (PDF, DOC, XLS, etc.) por WhatsApp

export const ZapiResponseText = ({lang = 'pt'}) => ({
  pt: 'A estrutura de resposta é idêntica à da Z-API. Seu código existente que processa esses retornos continuará funcionando sem alterações.',
  en: 'The response structure is identical to Z-API. Your existing code that processes these returns will continue working without changes.',
  es: 'La estructura de la respuesta es idéntica a la de Z-API. El código que ya tienes para procesar esas respuestas seguirá funcionando sin cambios.'
})[lang];

## Conceptos

Método para enviar documentos. La extensión del archivo debe indicarse en el path de la URL (p. ej.: `/send-document/pdf`). Puedes enviarlos mediante **URL** o mediante **Base64**.

<Warning>
  Al enviarlo en Base64 es obligatorio incluir el prefijo con el tipo de documento, por ejemplo: `data:application/pdf;base64,`.
</Warning>

<Note>
  <ZapiResponseText lang="es" />
</Note>

<Note>
  Los límites de tamaño y los formatos admitidos siguen las políticas de WhatsApp. Consulta la [documentación oficial de WhatsApp](https://developers.facebook.com/docs/whatsapp/api/media) para más detalles.
</Note>


## OpenAPI

````yaml es/z-api/openapi.json POST /send-document/{extension}
openapi: 3.1.0
info:
  title: Omni Z-API - Compatibilidad con Z-API
  description: API compatible con Z-API para facilitar la migración a Omni Z-API
  version: 1.0.0
servers:
  - url: https://api.omni.z-api.io/channels/{channel_id}/token/{channel_token}
    variables:
      channel_id:
        description: ID del canal (equivalente al instance_id de Z-API)
        default: SU_CANAL
      channel_token:
        description: Token del canal (equivalente al token de Z-API)
        default: SU_TOKEN
security:
  - bearerAuth: []
paths:
  /send-document/{extension}:
    post:
      tags:
        - Mensajes
      summary: Enviar documento
      description: >-
        Envía un documento (PDF, DOC, XLS, etc.). La extensión del archivo debe
        indicarse en el path. Admite URL o Base64.
      operationId: sendDocument
      parameters:
        - name: extension
          in: path
          required: true
          description: 'Extensión del archivo (p. ej.: pdf, docx, xlsx)'
          schema:
            type: string
            example: pdf
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SendDocumentRequest'
            examples:
              url:
                summary: Envío por URL
                value:
                  phone: '5511999999999'
                  document: https://ejemplo.com/archivo.pdf
                  fileName: Mi documento
              base64:
                summary: Envío por Base64
                value:
                  phone: '5511999999999'
                  document: data:application/pdf;base64,JVBERiN0YXJ0eHJlZg...
                  fileName: Mi documento
      responses:
        '200':
          $ref: '#/components/responses/MessageSuccess'
        '405':
          $ref: '#/components/responses/MethodNotAllowed'
        '415':
          $ref: '#/components/responses/UnsupportedMediaType'
components:
  schemas:
    SendDocumentRequest:
      type: object
      required:
        - phone
        - document
      properties:
        phone:
          type: string
          description: Teléfono del destinatario (código de país + prefijo + número)
          example: '5511999999999'
        document:
          type: string
          description: URL del documento o datos en Base64
        fileName:
          type: string
          description: Nombre del archivo
        caption:
          type: string
          description: Descripción del documento
        messageId:
          type: string
          description: ID de un mensaje existente al que se quiere responder
        delayMessage:
          type: integer
          description: Retardo en segundos antes del envío (1-15)
          minimum: 1
          maximum: 15
    MessageResponse:
      type: object
      properties:
        zaapId:
          type: string
          description: Identificador interno
        messageId:
          type: string
          description: ID del mensaje en WhatsApp
        id:
          type: string
          description: El mismo valor que messageId (compatibilidad)
    Error:
      type: object
      properties:
        error:
          type: integer
          description: Código del error
        message:
          type: string
          description: Descripción del error
  responses:
    MessageSuccess:
      description: Mensaje enviado correctamente
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/MessageResponse'
          example:
            zaapId: 3999984263738042930CD6ECDE9VDWSA
            messageId: D241XXXX732339502B68
            id: D241XXXX732339502B68
    MethodNotAllowed:
      description: Método no permitido. Comprueba que estés usando POST.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error: 405
            message: Method not allowed
    UnsupportedMediaType:
      description: 'Content-Type no válido. Envía `Content-Type: application/json`.'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error: 415
            message: Unsupported media type
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: Secret Key generada en el panel de Seguridad de Omni Z-API

````