> ## 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 lista de botones

> Envía mensajes con botones de selección rápida

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 mensajes con botones de selección rápida. El destinatario puede elegir entre las opciones que se le presentan, que funcionan como respuesta al mensaje.

Opcionalmente puedes incluir una **imagen** o un **vídeo** junto a los botones añadiendo el campo `image` o `video` dentro de `buttonList`.

<Warning>
  Envía solo `image` o `video`, nunca los dos a la vez.
</Warning>

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


## OpenAPI

````yaml es/z-api/openapi.json POST /send-button-list
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-button-list:
    post:
      tags:
        - Mensajes
      summary: Enviar lista de botones
      description: Envía un mensaje de texto con botones de selección rápida.
      operationId: sendButtonList
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SendButtonListRequest'
            examples:
              withoutImage:
                summary: Sin imagen
                value:
                  phone: '5511999999999'
                  message: ¿Cómo valoras nuestra atención?
                  buttonList:
                    buttons:
                      - id: '1'
                        label: Ótimo
                      - id: '2'
                        label: Bom
                      - id: '3'
                        label: Regular
              withImage:
                summary: Con imagen
                value:
                  phone: '5511999999999'
                  message: ¿Cómo valoras nuestra atención?
                  buttonList:
                    image: https://ejemplo.com/imagen.png
                    buttons:
                      - id: '1'
                        label: Ótimo
                      - id: '2'
                        label: Bom
                      - id: '3'
                        label: Regular
              withVideo:
                summary: Con vídeo
                value:
                  phone: '5511999999999'
                  message: ¿Cómo valoras nuestra atención?
                  buttonList:
                    video: https://ejemplo.com/video.mp4
                    buttons:
                      - id: '1'
                        label: Ótimo
                      - id: '2'
                        label: Bom
                      - id: '3'
                        label: Regular
      responses:
        '200':
          $ref: '#/components/responses/MessageSuccess'
        '405':
          $ref: '#/components/responses/MethodNotAllowed'
        '415':
          $ref: '#/components/responses/UnsupportedMediaType'
components:
  schemas:
    SendButtonListRequest:
      type: object
      required:
        - phone
        - message
        - buttonList
      properties:
        phone:
          type: string
          description: Teléfono del destinatario (código de país + prefijo + número)
          example: '5511999999999'
        message:
          type: string
          description: Texto del mensaje (obligatorio, no puede estar vacío)
        buttonList:
          type: object
          description: Configuración de los botones
          required:
            - buttons
          properties:
            image:
              type: string
              description: URL o Base64 de una imagen para mostrarla junto a los botones
            video:
              type: string
              description: URL o Base64 de un vídeo para mostrarlo junto a los botones
            buttons:
              type: array
              description: Lista de botones
              items:
                type: object
                required:
                  - label
                properties:
                  id:
                    type: string
                    description: Identificador del botón
                  label:
                    type: string
                    description: Texto que se muestra en el botón
        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

````