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

# Show typing indicator

> Mark an inbound WhatsApp message as read and display a typing indicator to the user while you prepare a response. The indicator is automatically dismissed when you send a reply, or after 25 seconds — whichever comes first. Only valid for inbound WhatsApp messages. Use this when a reply will take more than a couple of seconds (LLM agent, tool call, lookup) to improve the recipient's experience.



## OpenAPI

````yaml /openapi.json post /v1/messages/{messageId}/typing
openapi: 3.0.3
info:
  title: Zavu Unified Messaging Layer API
  version: 0.2.0
  description: >
    Unified multi-channel messaging API for Zavu.


    Supported channels:

    - **SMS**: Simple text messages

    - **WhatsApp**: Rich messaging with media, buttons, lists, CTA URL buttons,
    and templates

    - **Telegram**: Bot messaging with text, media, and interactive elements

    - **Email**: Transactional emails via Amazon SES


    Design goals:

    - Simple `send()` entrypoint for developers

    - Project-level authentication via Bearer token

    - Support for all WhatsApp message types (text, image, video, audio,
    document, sticker, location, contact, buttons, list, cta_url, reaction,
    template)

    - If a non-text message type is sent, WhatsApp channel is used automatically

    - 24-hour WhatsApp conversation window enforcement

    - Universal `to` field accepts phone numbers (E.164), email addresses, or
    numeric chat IDs (Telegram/Instagram)
servers:
  - url: https://api.zavu.dev
security:
  - bearerAuth: []
paths:
  /v1/messages/{messageId}/typing:
    post:
      summary: Show typing indicator
      description: >-
        Mark an inbound WhatsApp message as read and display a typing indicator
        to the user while you prepare a response. The indicator is automatically
        dismissed when you send a reply, or after 25 seconds — whichever comes
        first. Only valid for inbound WhatsApp messages. Use this when a reply
        will take more than a couple of seconds (LLM agent, tool call, lookup)
        to improve the recipient's experience.
      operationId: showTypingIndicator
      parameters:
        - $ref: '#/components/parameters/MessageIdParam'
        - $ref: '#/components/parameters/SenderHeader'
      responses:
        '202':
          description: Typing indicator displayed and message marked as read.
          content:
            application/json:
              schema:
                type: object
                required:
                  - success
                properties:
                  success:
                    type: boolean
        '400':
          description: >-
            Invalid request — message is not WhatsApp, not inbound, or has no
            provider message ID.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              examples:
                not_whatsapp:
                  summary: Not a WhatsApp message
                  value:
                    code: bad_request
                    message: Typing indicators are only supported for WhatsApp messages
                not_inbound:
                  summary: Message is not inbound
                  value:
                    code: bad_request
                    message: >-
                      Typing indicators can only be sent in response to inbound
                      messages
                no_provider_id:
                  summary: Missing provider message ID
                  value:
                    code: bad_request
                    message: >-
                      Cannot send typing indicator: no provider message ID
                      available
        '401':
          description: Unauthorized.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Message not found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - bearerAuth: []
components:
  parameters:
    MessageIdParam:
      name: messageId
      in: path
      required: true
      schema:
        type: string
    SenderHeader:
      name: Zavu-Sender
      in: header
      required: false
      description: >-
        Optional sender profile ID. If omitted, the project's default sender
        will be used.
      schema:
        type: string
        example: sender_12345
  schemas:
    Error:
      type: object
      required:
        - code
        - message
      properties:
        code:
          type: string
          example: invalid_request
        message:
          type: string
          example: Phone number is invalid
        details:
          type: object
          additionalProperties: true
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT

````