WhatsApp SDK Python

Getting Started

  • Installation
    • Requirements
    • Install from PyPI
    • Install from Source
    • Development Installation
    • Dependencies
    • Verify Installation
    • Next Steps
  • Quick Start
    • Prerequisites
    • Basic Setup
      • Initialize the Client
      • Using Environment Variables
    • Send Your First Message
      • Text Message
      • Image Message
      • Template Message
    • Handle Webhooks
      • Basic Webhook Setup
    • Common Patterns
      • Using Pydantic Models
      • Error Handling
      • Media Upload
    • Best Practices
    • Next Steps
  • Configuration
    • Configuration Options
      • Required Parameters
      • Optional Parameters
    • Configuration Methods
      • Direct Configuration
      • Environment Variables
      • Using .env Files
      • Configuration Object
    • Advanced Configuration
      • Custom HTTP Client
      • Multiple Clients
    • Security Best Practices
    • Testing Configuration
    • Configuration Reference
      • WhatsAppConfig
        • WhatsAppConfig.phone_number_id
        • WhatsAppConfig.access_token
        • WhatsAppConfig.app_secret
        • WhatsAppConfig.webhook_verify_token
        • WhatsAppConfig.base_url
        • WhatsAppConfig.api_version
        • WhatsAppConfig.timeout
        • WhatsAppConfig.max_retries
        • WhatsAppConfig.rate_limit
        • WhatsAppConfig.Config
        • WhatsAppConfig.model_config

User Guide

  • Sending Messages
    • Text Messages
      • Simple Text
      • With URL Preview
    • Media Messages
      • Images
      • Documents
      • Videos
      • Audio
    • Location Messages
    • Contact Messages
    • Typing Indicators
      • Mark as Read with Typing Indicator
      • Send Typing Indicator Only
      • Best Practices for Typing Indicators
  • Template Messages
    • Sending Templates
      • Simple Template
      • Template with Parameters
    • Managing Templates
      • List Templates
      • Create Template
  • Media Management
    • File Size Limits
    • Uploading Media
      • From File
      • From Bytes
      • Error Handling for Uploads
    • Downloading Media
      • Get Media URL
      • Download Content
      • Download to File
      • Download with Validation
    • Deleting Media
      • Bulk Operations
    • Best Practices
      • Common Error Scenarios
  • Webhook Handling
    • Webhook Setup
      • Verification
    • Event Handling
      • Receiving Messages
      • Status Updates

API Reference

  • Client API Reference
    • WhatsAppClient
      • WhatsAppClient
        • WhatsAppClient.__init__()
        • WhatsAppClient.from_env()
        • WhatsAppClient.__init__()
        • WhatsAppClient.from_env()
        • WhatsAppClient.__repr__()
    • Configuration
      • WhatsAppConfig
        • WhatsAppConfig.phone_number_id
        • WhatsAppConfig.access_token
        • WhatsAppConfig.app_secret
        • WhatsAppConfig.webhook_verify_token
        • WhatsAppConfig.base_url
        • WhatsAppConfig.api_version
        • WhatsAppConfig.timeout
        • WhatsAppConfig.max_retries
        • WhatsAppConfig.rate_limit
        • WhatsAppConfig.Config
        • WhatsAppConfig.model_config
  • Services API Reference
    • Messages Service
      • MessagesService
        • MessagesService.__init__()
        • MessagesService.send_text()
        • MessagesService.send_image()
        • MessagesService.send_document()
        • MessagesService.send_audio()
        • MessagesService.send_video()
        • MessagesService.send_sticker()
        • MessagesService.send_location()
        • MessagesService.send_contact()
        • MessagesService.send_interactive()
        • MessagesService.mark_as_read()
        • MessagesService.send_typing_indicator()
    • Templates Service
      • TemplatesService
        • TemplatesService.__init__()
        • TemplatesService.send()
        • TemplatesService.create()
        • TemplatesService.list()
        • TemplatesService.get()
        • TemplatesService.delete()
        • TemplatesService.update()
    • Media Service
      • MediaService
        • MediaService.__init__()
        • MediaService.upload()
        • MediaService.upload_from_bytes()
        • MediaService.get_url()
        • MediaService.download()
        • MediaService.download_to_file()
        • MediaService.delete()
    • Webhooks Service
      • WebhooksService
        • WebhooksService.__init__()
        • WebhooksService.verify_token()
        • WebhooksService.verify_signature()
        • WebhooksService.parse_event()
        • WebhooksService.process_message()
        • WebhooksService.process_status()
        • WebhooksService.handle_verification()
        • WebhooksService.handle_event()
        • WebhooksService.extract_messages()
        • WebhooksService.extract_statuses()
    • HTTP Client
      • HTTPClient
        • HTTPClient.__init__()
        • HTTPClient.post()
        • HTTPClient.get()
        • HTTPClient.delete()
        • HTTPClient.upload_multipart()
        • HTTPClient.download_binary()
        • HTTPClient.close()
        • HTTPClient.__enter__()
        • HTTPClient.__exit__()
      • HTTPClient.upload_multipart()
      • HTTPClient.download_binary()
  • Models API Reference
    • Message Models
      • TextMessage
        • TextMessage.body
        • TextMessage.preview_url
        • TextMessage.model_config
      • ImageMessage
        • ImageMessage.id
        • ImageMessage.link
        • ImageMessage.caption
        • ImageMessage.validate_media_source()
        • ImageMessage.model_config
      • DocumentMessage
        • DocumentMessage.id
        • DocumentMessage.link
        • DocumentMessage.caption
        • DocumentMessage.filename
        • DocumentMessage.validate_media_source()
        • DocumentMessage.model_config
      • AudioMessage
        • AudioMessage.id
        • AudioMessage.link
        • AudioMessage.validate_media_source()
        • AudioMessage.model_config
      • VideoMessage
        • VideoMessage.id
        • VideoMessage.link
        • VideoMessage.caption
        • VideoMessage.validate_media_source()
        • VideoMessage.model_config
      • StickerMessage
        • StickerMessage.id
        • StickerMessage.link
        • StickerMessage.validate_media_source()
        • StickerMessage.model_config
      • LocationMessage
        • LocationMessage.latitude
        • LocationMessage.longitude
        • LocationMessage.name
        • LocationMessage.address
        • LocationMessage.model_config
      • InteractiveHeader
        • InteractiveHeader.type
        • InteractiveHeader.text
        • InteractiveHeader.image
        • InteractiveHeader.video
        • InteractiveHeader.document
        • InteractiveHeader.model_config
      • InteractiveBody
        • InteractiveBody.text
        • InteractiveBody.model_config
      • InteractiveFooter
        • InteractiveFooter.text
        • InteractiveFooter.model_config
      • Button
        • Button.type
        • Button.reply
        • Button.model_config
      • Section
        • Section.title
        • Section.rows
        • Section.model_config
      • InteractiveAction
        • InteractiveAction.buttons
        • InteractiveAction.button
        • InteractiveAction.sections
        • InteractiveAction.name
        • InteractiveAction.parameters
        • InteractiveAction.model_config
      • InteractiveMessage
        • InteractiveMessage.type
        • InteractiveMessage.header
        • InteractiveMessage.body
        • InteractiveMessage.footer
        • InteractiveMessage.action
        • InteractiveMessage.model_config
      • TemplateParameter
        • TemplateParameter.type
        • TemplateParameter.text
        • TemplateParameter.image
        • TemplateParameter.video
        • TemplateParameter.document
        • TemplateParameter.currency
        • TemplateParameter.date_time
        • TemplateParameter.model_config
      • TemplateComponent
        • TemplateComponent.type
        • TemplateComponent.sub_type
        • TemplateComponent.index
        • TemplateComponent.parameters
        • TemplateComponent.model_config
      • TemplateLanguage
        • TemplateLanguage.code
        • TemplateLanguage.policy
        • TemplateLanguage.model_config
      • TemplateMessage
        • TemplateMessage.name
        • TemplateMessage.language
        • TemplateMessage.components
        • TemplateMessage.model_config
      • ReactionMessage
        • ReactionMessage.message_id
        • ReactionMessage.emoji
        • ReactionMessage.model_config
      • MessageStatus
        • MessageStatus.id
        • MessageStatus.status
        • MessageStatus.timestamp
        • MessageStatus.recipient_id
        • MessageStatus.conversation
        • MessageStatus.pricing
        • MessageStatus.errors
        • MessageStatus.model_config
    • Template Models
      • TemplateButton
        • TemplateButton.type
        • TemplateButton.text
        • TemplateButton.url
        • TemplateButton.phone_number
        • TemplateButton.example
        • TemplateButton.model_config
      • TemplateHeaderExample
        • TemplateHeaderExample.header_text
        • TemplateHeaderExample.header_handle
        • TemplateHeaderExample.model_config
      • TemplateBodyExample
        • TemplateBodyExample.body_text
        • TemplateBodyExample.model_config
      • TemplateExample
        • TemplateExample.header_text
        • TemplateExample.body_text
        • TemplateExample.header_handle
        • TemplateExample.model_config
      • TemplateComponentDefinition
        • TemplateComponentDefinition.type
        • TemplateComponentDefinition.format
        • TemplateComponentDefinition.text
        • TemplateComponentDefinition.buttons
        • TemplateComponentDefinition.example
        • TemplateComponentDefinition.model_config
      • Template
        • Template.id
        • Template.name
        • Template.language
        • Template.category
        • Template.components
        • Template.status
        • Template.rejected_reason
        • Template.quality_score
        • Template.model_config
      • TemplateResponse
        • TemplateResponse.id
        • TemplateResponse.status
        • TemplateResponse.category
        • TemplateResponse.model_config
      • TemplateListResponse
        • TemplateListResponse.data
        • TemplateListResponse.paging
        • TemplateListResponse.model_config
      • TemplateDeleteResponse
        • TemplateDeleteResponse.success
        • TemplateDeleteResponse.model_config
      • MessageTemplateUpdate
        • MessageTemplateUpdate.components
        • MessageTemplateUpdate.model_config
      • TemplateAnalytics
        • TemplateAnalytics.template_id
        • TemplateAnalytics.template_name
        • TemplateAnalytics.sent
        • TemplateAnalytics.delivered
        • TemplateAnalytics.read
        • TemplateAnalytics.clicked
        • TemplateAnalytics.start_time
        • TemplateAnalytics.end_time
        • TemplateAnalytics.model_config
    • Media Models
      • MediaUploadResponse
        • MediaUploadResponse.id
        • MediaUploadResponse.model_config
      • MediaURLResponse
        • MediaURLResponse.url
        • MediaURLResponse.mime_type
        • MediaURLResponse.sha256
        • MediaURLResponse.file_size
        • MediaURLResponse.id
        • MediaURLResponse.model_config
      • MediaDeleteResponse
        • MediaDeleteResponse.success
        • MediaDeleteResponse.model_config
      • MediaUploadRequest
        • MediaUploadRequest.file_path
        • MediaUploadRequest.file_bytes
        • MediaUploadRequest.mime_type
        • MediaUploadRequest.filename
        • MediaUploadRequest.model_config
      • SupportedMediaTypes
        • SupportedMediaTypes.ImageTypes
        • SupportedMediaTypes.DocumentTypes
        • SupportedMediaTypes.AudioTypes
        • SupportedMediaTypes.VideoTypes
        • SupportedMediaTypes.StickerTypes
        • SupportedMediaTypes.images
        • SupportedMediaTypes.documents
        • SupportedMediaTypes.audio
        • SupportedMediaTypes.video
        • SupportedMediaTypes.stickers
        • SupportedMediaTypes.model_config
      • ResumableUploadSession
        • ResumableUploadSession.id
        • ResumableUploadSession.upload_url
        • ResumableUploadSession.file_offset
        • ResumableUploadSession.file_size
        • ResumableUploadSession.expires_at
        • ResumableUploadSession.model_config
    • Webhook Models
      • WebhookTextMessage
        • WebhookTextMessage.body
        • WebhookTextMessage.model_config
      • WebhookImageMessage
        • WebhookImageMessage.id
        • WebhookImageMessage.mime_type
        • WebhookImageMessage.sha256
        • WebhookImageMessage.caption
        • WebhookImageMessage.model_config
      • WebhookVideoMessage
        • WebhookVideoMessage.id
        • WebhookVideoMessage.mime_type
        • WebhookVideoMessage.sha256
        • WebhookVideoMessage.caption
        • WebhookVideoMessage.model_config
      • WebhookAudioMessage
        • WebhookAudioMessage.id
        • WebhookAudioMessage.mime_type
        • WebhookAudioMessage.sha256
        • WebhookAudioMessage.voice
        • WebhookAudioMessage.model_config
      • WebhookDocumentMessage
        • WebhookDocumentMessage.id
        • WebhookDocumentMessage.mime_type
        • WebhookDocumentMessage.sha256
        • WebhookDocumentMessage.caption
        • WebhookDocumentMessage.filename
        • WebhookDocumentMessage.model_config
      • WebhookLocationMessage
        • WebhookLocationMessage.latitude
        • WebhookLocationMessage.longitude
        • WebhookLocationMessage.name
        • WebhookLocationMessage.address
        • WebhookLocationMessage.model_config
      • WebhookStickerMessage
        • WebhookStickerMessage.id
        • WebhookStickerMessage.mime_type
        • WebhookStickerMessage.sha256
        • WebhookStickerMessage.animated
        • WebhookStickerMessage.model_config
      • WebhookButtonReply
        • WebhookButtonReply.id
        • WebhookButtonReply.title
        • WebhookButtonReply.model_config
      • WebhookListReply
        • WebhookListReply.id
        • WebhookListReply.title
        • WebhookListReply.description
        • WebhookListReply.model_config
      • WebhookInteractiveMessage
        • WebhookInteractiveMessage.type
        • WebhookInteractiveMessage.button_reply
        • WebhookInteractiveMessage.list_reply
        • WebhookInteractiveMessage.model_config
      • WebhookReactionMessage
        • WebhookReactionMessage.message_id
        • WebhookReactionMessage.emoji
        • WebhookReactionMessage.model_config
      • WebhookContext
        • WebhookContext.from_
        • WebhookContext.id
        • WebhookContext.model_config
      • WebhookMessage
        • WebhookMessage.from_
        • WebhookMessage.id
        • WebhookMessage.timestamp
        • WebhookMessage.type
        • WebhookMessage.context
        • WebhookMessage.text
        • WebhookMessage.image
        • WebhookMessage.video
        • WebhookMessage.audio
        • WebhookMessage.document
        • WebhookMessage.location
        • WebhookMessage.sticker
        • WebhookMessage.interactive
        • WebhookMessage.reaction
        • WebhookMessage.contacts
        • WebhookMessage.errors
        • WebhookMessage.model_config
      • WebhookStatus
        • WebhookStatus.id
        • WebhookStatus.status
        • WebhookStatus.timestamp
        • WebhookStatus.recipient_id
        • WebhookStatus.conversation
        • WebhookStatus.pricing
        • WebhookStatus.errors
        • WebhookStatus.model_config
      • WebhookMetadata
        • WebhookMetadata.display_phone_number
        • WebhookMetadata.phone_number_id
        • WebhookMetadata.model_config
      • WebhookContact
        • WebhookContact.profile
        • WebhookContact.wa_id
        • WebhookContact.model_config
      • WebhookValue
        • WebhookValue.messaging_product
        • WebhookValue.metadata
        • WebhookValue.contacts
        • WebhookValue.messages
        • WebhookValue.statuses
        • WebhookValue.errors
        • WebhookValue.model_config
      • WebhookChange
        • WebhookChange.value
        • WebhookChange.field
        • WebhookChange.model_config
      • WebhookEntry
        • WebhookEntry.id
        • WebhookEntry.changes
        • WebhookEntry.model_config
      • WebhookEvent
        • WebhookEvent.object
        • WebhookEvent.entry
        • WebhookEvent.model_config
      • WebhookVerification
        • WebhookVerification.hub_mode
        • WebhookVerification.hub_challenge
        • WebhookVerification.hub_verify_token
        • WebhookVerification.model_config
    • Base Models
      • BaseResponse
        • BaseResponse.messaging_product
        • BaseResponse.Config
        • BaseResponse.model_config
      • Contact
        • Contact.input
        • Contact.wa_id
        • Contact.Config
        • Contact.model_config
      • Message
        • Message.id
        • Message.Config
        • Message.model_config
      • Error
        • Error.code
        • Error.title
        • Error.message
        • Error.error_data
        • Error.error_subcode
        • Error.error_user_title
        • Error.error_user_msg
        • Error.fbtrace_id
        • Error.Config
        • Error.model_config
      • ErrorResponse
        • ErrorResponse.error
        • ErrorResponse.Config
        • ErrorResponse.model_config
      • MessageResponse
        • MessageResponse.contacts
        • MessageResponse.messages
        • MessageResponse.Config
        • MessageResponse.model_config
      • PaginationCursor
        • PaginationCursor.before
        • PaginationCursor.after
        • PaginationCursor.model_config
      • PaginationInfo
        • PaginationInfo.cursors
        • PaginationInfo.next
        • PaginationInfo.previous
        • PaginationInfo.model_config
  • Exceptions API Reference
    • WhatsAppError
    • WhatsAppAPIError
    • WhatsAppAuthenticationError
    • WhatsAppRateLimitError
    • WhatsAppValidationError
    • WhatsAppWebhookError
    • WhatsAppMediaError
    • WhatsAppTimeoutError
    • WhatsAppConfigError
    • Exception Hierarchy
    • Usage Examples

Development

  • Contributing
    • Getting Started
    • Development Setup
    • Code Style
    • Testing
    • Pull Request Process
    • Guidelines
    • Questions?
  • Changelog
    • [Unreleased]
      • Added
    • [0.1.0] - 2024-12-07
      • Added
      • Fixed
      • Changed
      • Deprecated
      • Removed
      • Security
WhatsApp SDK Python
  • Search


© Copyright 2025, Alejandro Velez.

Built with Sphinx using a theme provided by Read the Docs.