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

# Send a message

> Sends an SMS or MMS message. MMS is supported for U.S. numbers only. Track delivery using the returned `message_id` and the message status callback.
**Rate limit**: 20 messages per phone number in 24 hours.



## OpenAPI

````yaml https://wavix.github.io/wavix-openapi/wavix-api.yaml post /v3/messages
openapi: 3.1.0
info:
  title: Wavix APIs
  description: >-
    Wavix provides robust APIs that let you integrate voice and text messaging
    features directly into your app. Send text, place calls, and access detailed
    reports  programmatically.
  termsOfService: https://wavix.com/terms-and-conditions
  license:
    name: MIT
    identifier: MIT
  contact:
    name: Wavix
    url: https://wavix.com
    email: support@wavix.com
  version: '1.0'
servers:
  - url: https://api.wavix.com
    description: https://api.wavix.com
    variables: {}
security:
  - bearerAuth: []
tags:
  - name: SIP trunks
    description: SIP trunks
  - name: Buy
    description: Numbers
  - name: Cart
    description: Numbers
  - name: My numbers
    description: Numbers
  - name: Billing
    description: Billing, transactions, and invoices
  - name: Profile
    description: Account profile and customer information
  - name: CDRs
    description: Call detail records and call history
  - name: Speech Analytics
    description: Call transcription and speech analytics
  - name: SMS and MMS
    description: Messaging
  - name: Number Validator
    description: Phone number validation
  - name: Link shortener
    description: Short link and click metrics
  - name: 2FA
    description: Two-factor authentication
  - name: 10DLC
    description: 10DLC Campaigns and Brands
  - name: API Keys
    description: API key management
  - name: Call webhooks
    description: Webhook configuration for call events
  - name: Call control
    description: Programmable Voice
  - name: Call streaming
    description: Real-time call audio streaming over WebSocket
  - name: Call recording
    description: Call recording
  - name: Sub-accounts
    description: Sub-account management
  - name: Voice campaigns
    description: Outbound voice campaigns
  - name: Wavix Embeddable
    description: WebRTC embeddable widget
paths:
  /v3/messages:
    post:
      tags:
        - SMS and MMS
      summary: Send a message
      description: >-
        Sends an SMS or MMS message. MMS is supported for U.S. numbers only.
        Track delivery using the returned `message_id` and the message status
        callback.

        **Rate limit**: 20 messages per phone number in 24 hours.
      operationId: sms_and_mms_messages_send
      parameters: []
      requestBody:
        description: Attributes for the message to send.
        content:
          application/json:
            schema:
              allOf:
                - $ref: '#/components/schemas/MessageCreateRequest'
                - description: Sender, recipient, and content of the message.
                  example:
                    from: Wavix
                    to: '+447537151866'
                    message_body:
                      text: Hi there, this is a message from Wavix
                      media: null
                    callback_url: https://you-site.com/webhook
                    validity: 3600
                    tag: Fall sale
            example:
              from: Wavix
              to: '+447537151866'
              message_body:
                text: Hi there, this is a message from Wavix
                media: null
              callback_url: https://you-site.com/webhook
              validity: 3600
              tag: Fall sale
        required: true
      responses:
        '201':
          description: >-
            Returns the submitted message with its `message_id` and initial
            status.
          headers: {}
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SendMessagesResponse'
              examples:
                default:
                  value:
                    carrier_fees: '0.0'
                    charge: '0.0'
                    delivered_at: '2024-05-28T12:34:56Z'
                    error_message: null
                    from: Sender
                    mcc: '310'
                    mnc: '260'
                    message_body:
                      text: >-
                        This is a test MMS message with multiple media
                        attachments.
                      media:
                        - >-
                          https://api.examples.com/v3/messages/attachments/abc123/file1.mp3
                        - >-
                          https://api.examples.com/v3/messages/attachments/abc123/file2.mp3
                        - >-
                          https://api.examples.com/v3/messages/attachments/abc123/file3.mp3
                    message_id: abc123de-4567-890f-gh12-ijklmnop3456
                    message_type: mms
                    segments: 1
                    sent_at: '2024-05-28T12:34:54Z'
                    status: accepted
                    submitted_at: '2025-09-22T09:07:53'
                    tag: campaign_test
                    to: '+15551234567'
        '400':
          $ref: '#/components/responses/BadRequestErrorResponse'
        '403':
          $ref: '#/components/responses/ForbiddenErrorResponse'
      deprecated: false
      security:
        - bearerAuth:
            - messages:write
components:
  schemas:
    MessageCreateRequest:
      title: MessageCreateRequest
      required:
        - from
        - to
        - message_body
      type: object
      additionalProperties: false
      properties:
        from:
          type: string
          description: Sender ID. Numeric or alphanumeric.
          example: Wavix
        to:
          type: string
          description: Recipient phone number.
          example: '447537151866'
        message_body:
          $ref: '#/components/schemas/MessageBody'
        callback_url:
          type: string
          description: Callback URL for delivery reports.
          example: https://you-site.com/webhook
        validity:
          type: integer
          description: >-
            Message validity period in seconds. Delivery attempts stop after
            this period expires.
          format: int32
          example: 3600
        tag:
          type: string
          description: Tag to group messages, such as for a specific campaign.
          example: Fall sale
    SendMessagesResponse:
      type: object
      additionalProperties: false
      properties:
        carrier_fees:
          type:
            - string
            - 'null'
          description: Mobile carrier fees in USD.
          example: '0.0'
        charge:
          type: string
          description: Total charge for the message in USD.
          example: '0.0'
        direction:
          type: string
          description: Message direction. Possible values are `outbound`, `inbound`.
          example: outbound
        delivered_at:
          type:
            - string
            - 'null'
          description: Date and time the message was delivered in ISO 8601 format.
          format: date-time
          example: '2024-05-28T12:34:56Z'
        error_message:
          type:
            - string
            - 'null'
          description: Error message.
        from:
          type: string
          description: Sender ID.
          example: Sender ID.
        mcc:
          type:
            - string
            - 'null'
          description: Mobile country code.
          example: '310'
        mnc:
          type:
            - string
            - 'null'
          description: Mobile network code.
          example: '260'
        message_body:
          $ref: '#/components/schemas/MessageBody'
        message_id:
          type: string
          description: Message ID.
          example: abc123de-4567-890f-gh12-ijklmnop3456
        message_type:
          type: string
          description: Message type.
          example: mms
        segments:
          type: integer
          description: Number of SMS segments. Always 1 for MMS.
          example: 1
        sent_at:
          type:
            - string
            - 'null'
          description: Date and time the message was sent in ISO 8601 format.
          format: date-time
          example: '2024-05-28T12:34:54Z'
        status:
          type: string
          description: Message status.
          example: accepted
        submitted_at:
          type: string
          description: Date and time the message was submitted in ISO 8601 format.
          example: '2025-09-22T09:07:53Z'
        tag:
          type:
            - string
            - 'null'
          description: Message tag.
          example: campaign_test
        to:
          type: string
          description: Recipient phone number.
          example: '+15551234567'
    MessageBody:
      title: MessageBody
      required:
        - text
        - media
      type: object
      additionalProperties: false
      properties:
        text:
          type: string
          description: Message text.
          example: Hi there, this is a sample message
        media:
          maxItems: 5
          minItems: 0
          type:
            - array
            - 'null'
          items:
            type: string
          description: |-
            List of media URLs.
             If provided, the message is sent as an MMS;
              otherwise, it is sent as an SMS.
          example:
            - https://you-site.com/media
    ValidationErrorResponse:
      title: ValidationErrorResponse
      type: object
      properties:
        success:
          type: boolean
          description: >-
            Indicates whether the request was successful. Always `false` for
            this error.
          example: false
        message:
          type: string
          description: >-
            Human-readable description naming the missing or invalid request
            parameter.
          example: Missing or invalid parameter <param_name>
    ForbiddenErrorResponse:
      title: ForbiddenErrorResponse
      type: object
      properties:
        success:
          type: boolean
          description: >-
            Indicates whether the request was successful. Always `false` for
            this error.
          example: false
        message:
          type: string
          description: Human-readable description of why access is forbidden.
          example: The service is not provisioned for your account.
  responses:
    BadRequestErrorResponse:
      description: Request failed. Missing or invalid parameter <param_name>
      headers: {}
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ValidationErrorResponse'
    ForbiddenErrorResponse:
      description: Request failed. The feature is disabled for your account.
      headers: {}
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ForbiddenErrorResponse'
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: >
        Wavix API key. Pass as `Authorization: Bearer <api_key>`. Keys support
        per-resource scopes (none / read / write). See [Restricted keys and
        scopes](https://docs.wavix.com/api-reference/authentication#restricted-keys-and-scopes).

````