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

# Send Outbound Message

> **Prerequisites:**
- **Required:** Bearer token — `POST /v1.0/oauth2/tokens`
- **Required:** Provisioned phone number with messaging enabled (`From` field) — `POST /v1.0/numbers/provision`

---

Send an outbound SMS or MMS message from your provisioned phone number. Supports single recipient messaging with optional media attachments for MMS. Returns a message ID for delivery tracking. All phone numbers must be in E.164 format.

**What this does:** Sends an SMS or MMS message immediately and returns a `MessageId` for tracking delivery. The message is routed through the `MessageRouteId` associated with the `From` number. Check delivery status using the MessageId.

**Next steps:**
- Check message status — `GET /v1.0/message/details`



## OpenAPI

````yaml /api-reference/openapi.json post /v1.0/message/outbound
openapi: 3.0.3
info:
  title: mPaaS Core APIs
  version: 1.0.8
  description: >-
    The Telegent mPaaS (Mobile Platform as a Service) API gives you full
    programmatic control over mobile phone numbers, messaging, voice routing,
    subscribers, and account management. Use these APIs to provision MVNO and
    IoT numbers, send and receive SMS/MMS, configure intelligent call routing,
    manage subscriber accounts, and apply AI Guardian controls. All requests
    require a Bearer token obtained from the Authentication endpoint. For
    support, visit https://support.telegent.com/support/home
  contact:
    name: Support
    email: support@telegent.com
  termsOfService: https://telegent.com/terms
  license:
    name: Use under LICX
    url: https://telegent.com/license
servers:
  - url: https://api.telegent.com/v1.0
security:
  - BearerAuth: []
tags:
  - name: OAuth2
  - name: AI Guardian
  - name: Accounts
  - name: Distributors
  - name: Message
  - name: Numbers
  - name: Voicemail
  - name: Packages
  - name: Products
  - name: Schedules
  - name: Services
  - name: Sims
  - name: Subscribers
  - name: Subscriptions
  - name: Voice
  - name: Workgroups
paths:
  /v1.0/message/outbound:
    post:
      tags:
        - Message
      summary: Send Outbound Message
      description: >-
        **Prerequisites:**

        - **Required:** Bearer token — `POST /v1.0/oauth2/tokens`

        - **Required:** Provisioned phone number with messaging enabled (`From`
        field) — `POST /v1.0/numbers/provision`


        ---


        Send an outbound SMS or MMS message from your provisioned phone number.
        Supports single recipient messaging with optional media attachments for
        MMS. Returns a message ID for delivery tracking. All phone numbers must
        be in E.164 format.


        **What this does:** Sends an SMS or MMS message immediately and returns
        a `MessageId` for tracking delivery. The message is routed through the
        `MessageRouteId` associated with the `From` number. Check delivery
        status using the MessageId.


        **Next steps:**

        - Check message status — `GET /v1.0/message/details`
      parameters: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - To
                - From
                - Body
              properties:
                CampaignId:
                  type: string
                  description: Campaign identifier for tracking
                  example: JCID-dsuhofh3882
                To:
                  type: array
                  description: Array of recipient phone numbers in E.164 format
                  items:
                    type: object
                    properties:
                      Number:
                        type: string
                        example: '+18015737111'
                  example:
                    - Number: '+18015737111'
                From:
                  type: string
                  description: >-
                    Sender phone number in E.164 format (must be provisioned in
                    your account)
                  example: '+18018018011'
                Owner:
                  type: string
                  description: Owner phone number in E.164 format
                  example: '+18018018011'
                Body:
                  type: string
                  description: Message text content
                  example: Hello there!!!
                MmsMedia:
                  type: array
                  description: Array of media URLs for MMS attachments
                  items:
                    type: object
                    properties:
                      MediaUrl:
                        type: string
                        format: uri
                MmsBase64:
                  type: array
                  description: Array of base64-encoded media for MMS
                  items:
                    type: object
                    properties:
                      Base64:
                        type: string
                        description: Base64-encoded media content
                      BaseType:
                        type: string
                        description: MIME type of the media
                        example: audio/wav
      responses:
        '200':
          description: Success — returns the Message ID (TMID) for delivery tracking
          content:
            application/json:
              schema:
                type: object
              examples:
                example:
                  value:
                    MessageId: TMID-00348008102307aK01
                    Direction: Outbound
                    Type: p2p
                    CampaignId: TCID-dsuhofh3882
                    Cost: 0.0045
                    Status: Queued
                    To:
                      - Number: '+12016093801'
                      - Number: '+12232233180'
                    From: '+18018018011'
                    Owner: '+18018018011'
                    Body: Hello there!!!
                    CreatedOn: 16:45:59 MST 2025-01-23
                    MessageType: mms
                    MmsMedia:
                      - MediaUrl: https://results2.com
                      - MediaUrl: https://results.com
                    MmsBase64:
                      - Base64: dkjjkdflajdfjo3ji3jjljfkjaskjfad
                        BaseType: audio/wav
                      - Base64: dkjjkdflajdfjo3ji3jjljfkjaskjfad
                        BaseType: video/mpg
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequest_Result'
              example:
                StatusCode: 400
                Message: >-
                  Bad request: one or more required fields are missing or
                  contain an invalid value.
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Unauthorized_Result'
              example:
                StatusCode: 401
                Message: >-
                  Unauthorized: Bearer token is missing, expired, or invalid.
                  Re-authenticate via POST /v1.0/oauth2/tokens.
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Forbidden_Result'
              example:
                StatusCode: 403
                Message: >-
                  Forbidden: your token does not have permission to access this
                  resource. Check the ApiEndpoint scope.
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFound_Result'
              example:
                StatusCode: 404
                Message: >-
                  Not found: the requested resource does not exist or belongs to
                  a different account.
        '405':
          description: Method Not Allowed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MethodNotAllowed_Result'
              example:
                StatusCode: 405
                Message: >-
                  Method not allowed: verify the HTTP method required for this
                  endpoint.
        '408':
          description: Request Timeout
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RequestTimeout_Result'
              example:
                StatusCode: 408
                Message: >-
                  Request timeout: the server did not receive a complete request
                  within the allowed time. Retry with exponential backoff.
        '429':
          description: Too Many Requests
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequests_Result'
              example:
                StatusCode: 429
                Message: >-
                  Too many requests: rate limit exceeded. Slow your request
                  cadence and retry after a short delay.
        '500':
          description: Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InternalServerError_Result'
              example:
                StatusCode: 500
                Message: >-
                  Internal server error: an unexpected error occurred. If the
                  problem persists contact support@telegent.com.
        '503':
          description: Service Unavailable
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServiceUnavailable_Result'
              example:
                StatusCode: 503
                Message: >-
                  Service unavailable: the API is temporarily unavailable. Retry
                  after a short delay.
        '504':
          description: Gateway Timeout
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GatewayTimeout_Result'
              example:
                StatusCode: 504
                Message: >-
                  Gateway timeout: an upstream service did not respond in time.
                  Retry with exponential backoff.
      x-codeSamples:
        - lang: JSON
          source: |-
            {
              "CampaignId": "JCID-dsuhofh3882",
              "To": [
                {"Number": "+18015737111"},
                {"Number": "+18014271919"}
              ],
              "From": "+18018018011",
              "Owner": "+18018018011",
              "Body": "Hello there!!!",
              "MmsMedia": [
                {"MediaUrl": "https://results2.com"},
                {"MediaUrl": "https://results.com"}
              ],
              "MmsBase64": [
                {"Base64": "dkjjkdflajdfjo3ji3jjljfkjaskjfad", "BaseType": "audio/wav"},
                {"Base64": "dkjjkdflajdfjo3ji3jjljfkjaskjfad", "BaseType": "video/mpg"}
              ]
            }
        - lang: cURL
          source: |-
            curl -X POST https://api.telegent.com/v1.0/message/outbound \
              -H 'Authorization: Bearer YOUR_TOKEN' \
              -H 'Content-Type: application/json' \
              -d '{
                "CampaignId": "JCID-dsuhofh3882",
                "To": [{"Number": "+18015737111"}, {"Number": "+18014271919"}],
                "From": "+18018018011",
                "Owner": "+18018018011",
                "Body": "Hello there!!!",
                "MmsMedia": [{"MediaUrl": "https://results2.com"}, {"MediaUrl": "https://results.com"}],
                "MmsBase64": [{"Base64": "dkjjkdflajdfjo3ji3jjljfkjaskjfad", "BaseType": "audio/wav"}, {"Base64": "dkjjkdflajdfjo3ji3jjljfkjaskjfad", "BaseType": "video/mpg"}]
              }'
components:
  schemas:
    BadRequest_Result:
      required:
        - StatusCode
      type: object
      properties:
        StatusCode:
          type: integer
          format: int32
          example: 400
        Message:
          type: string
          nullable: true
          example: >-
            Bad request: one or more required fields are missing or contain an
            invalid value.
      additionalProperties: false
      example:
        StatusCode: 400
        Message: >-
          Bad request: one or more required fields are missing or contain an
          invalid value.
    Unauthorized_Result:
      required:
        - StatusCode
      type: object
      properties:
        StatusCode:
          type: integer
          format: int32
          example: 401
        Message:
          type: string
          nullable: true
          example: 'Unauthorized: Bearer token is missing, expired, or invalid.'
      additionalProperties: false
      example:
        StatusCode: 401
        Message: 'Unauthorized: Bearer token is missing, expired, or invalid.'
    Forbidden_Result:
      required:
        - StatusCode
      type: object
      properties:
        StatusCode:
          type: integer
          format: int32
          example: 403
        Message:
          type: string
          nullable: true
          example: >-
            Forbidden: your token does not have permission to access this
            resource.
      additionalProperties: false
      example:
        StatusCode: 403
        Message: >-
          Forbidden: your token does not have permission to access this
          resource.
    NotFound_Result:
      required:
        - StatusCode
      type: object
      properties:
        StatusCode:
          type: integer
          format: int32
          example: 404
        Message:
          type: string
          nullable: true
          example: >-
            Not found: the requested resource does not exist or belongs to a
            different account.
      additionalProperties: false
      example:
        StatusCode: 404
        Message: >-
          Not found: the requested resource does not exist or belongs to a
          different account.
    MethodNotAllowed_Result:
      required:
        - StatusCode
      type: object
      properties:
        StatusCode:
          type: integer
          format: int32
          example: 405
        Message:
          type: string
          nullable: true
          example: >-
            Method not allowed: verify the HTTP method required for this
            endpoint.
      additionalProperties: false
      example:
        StatusCode: 405
        Message: 'Method not allowed: verify the HTTP method required for this endpoint.'
    RequestTimeout_Result:
      required:
        - StatusCode
      type: object
      properties:
        StatusCode:
          type: integer
          format: int32
          example: 408
        Message:
          type: string
          nullable: true
          example: >-
            Request timeout: the server did not receive a complete request in
            time.
      additionalProperties: false
      example:
        StatusCode: 408
        Message: >-
          Request timeout: the server did not receive a complete request in
          time.
    TooManyRequests_Result:
      required:
        - StatusCode
      type: object
      properties:
        StatusCode:
          type: integer
          format: int32
          example: 429
        Message:
          type: string
          nullable: true
          example: >-
            Too many requests: rate limit exceeded. Slow your request cadence
            and retry.
      additionalProperties: false
      example:
        StatusCode: 429
        Message: >-
          Too many requests: rate limit exceeded. Slow your request cadence and
          retry.
    InternalServerError_Result:
      required:
        - StatusCode
      type: object
      properties:
        StatusCode:
          type: integer
          format: int32
          example: 500
        Message:
          type: string
          nullable: true
          example: 'Internal server error: an unexpected error occurred.'
      additionalProperties: false
      example:
        StatusCode: 500
        Message: 'Internal server error: an unexpected error occurred.'
    ServiceUnavailable_Result:
      required:
        - StatusCode
      type: object
      properties:
        StatusCode:
          type: integer
          format: int32
          example: 503
        Message:
          type: string
          nullable: true
          example: 'Service unavailable: the API is temporarily unavailable.'
      additionalProperties: false
      example:
        StatusCode: 503
        Message: 'Service unavailable: the API is temporarily unavailable.'
    GatewayTimeout_Result:
      required:
        - StatusCode
      type: object
      properties:
        StatusCode:
          type: integer
          format: int32
          example: 504
        Message:
          type: string
          nullable: true
          example: 'Gateway timeout: an upstream service did not respond in time.'
      additionalProperties: false
      example:
        StatusCode: 504
        Message: 'Gateway timeout: an upstream service did not respond in time.'

````